summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FILES.byname285
-rw-r--r--FILES.byname.gzbin2492053 -> 2492122 bytes
-rw-r--r--FILES.last07days411
-rw-r--r--biblio/ctan-bibdata/ctan.bib38
-rw-r--r--biblio/ctan-bibdata/ctan.pdfbin3640632 -> 3641061 bytes
-rw-r--r--macros/generic/witharrows/witharrows-french.pdfbin269827 -> 272837 bytes
-rw-r--r--macros/generic/witharrows/witharrows-french.tex56
-rw-r--r--macros/generic/witharrows/witharrows.dtx702
-rw-r--r--macros/generic/witharrows/witharrows.ins4
-rw-r--r--macros/generic/witharrows/witharrows.pdfbin686365 -> 559421 bytes
-rw-r--r--macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdfbin9452788 -> 9585861 bytes
-rw-r--r--macros/latex/contrib/profcollege/latex/ProfCollege.sty927
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp22
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCSolid.mp85
-rw-r--r--obsolete/macros/latex/contrib/elegantbook/License (renamed from macros/latex/contrib/elegantbook/License)0
-rw-r--r--obsolete/macros/latex/contrib/elegantbook/README.md (renamed from macros/latex/contrib/elegantbook/README.md)0
-rw-r--r--obsolete/macros/latex/contrib/elegantbook/elegantbook-cn.pdf (renamed from macros/latex/contrib/elegantbook/elegantbook-cn.pdf)bin1091144 -> 1091144 bytes
-rw-r--r--obsolete/macros/latex/contrib/elegantbook/elegantbook-cn.tex (renamed from macros/latex/contrib/elegantbook/elegantbook-cn.tex)0
-rw-r--r--obsolete/macros/latex/contrib/elegantbook/elegantbook-en.pdf (renamed from macros/latex/contrib/elegantbook/elegantbook-en.pdf)bin1041706 -> 1041706 bytes
-rw-r--r--obsolete/macros/latex/contrib/elegantbook/elegantbook-en.tex (renamed from macros/latex/contrib/elegantbook/elegantbook-en.tex)0
-rw-r--r--obsolete/macros/latex/contrib/elegantbook/elegantbook.cls (renamed from macros/latex/contrib/elegantbook/elegantbook.cls)0
-rw-r--r--obsolete/macros/latex/contrib/elegantbook/figure/cover.jpg (renamed from macros/latex/contrib/elegantbook/figure/cover.jpg)bin426434 -> 426434 bytes
-rw-r--r--obsolete/macros/latex/contrib/elegantbook/figure/logo-blue.png (renamed from macros/latex/contrib/elegantbook/figure/logo-blue.png)bin91664 -> 91664 bytes
-rw-r--r--obsolete/macros/latex/contrib/elegantbook/image/founder.png (renamed from macros/latex/contrib/elegantbook/image/founder.png)bin89052 -> 89052 bytes
-rw-r--r--obsolete/macros/latex/contrib/elegantbook/image/scatter.jpg (renamed from macros/latex/contrib/elegantbook/image/scatter.jpg)bin113385 -> 113385 bytes
-rw-r--r--obsolete/macros/latex/contrib/elegantbook/reference.bib (renamed from macros/latex/contrib/elegantbook/reference.bib)0
-rw-r--r--obsolete/macros/latex/contrib/elegantnote/License (renamed from macros/latex/contrib/elegantnote/License)0
-rw-r--r--obsolete/macros/latex/contrib/elegantnote/README.md (renamed from macros/latex/contrib/elegantnote/README.md)0
-rw-r--r--obsolete/macros/latex/contrib/elegantnote/elegantnote-cn.pdf (renamed from macros/latex/contrib/elegantnote/elegantnote-cn.pdf)bin338866 -> 338866 bytes
-rw-r--r--obsolete/macros/latex/contrib/elegantnote/elegantnote-cn.tex (renamed from macros/latex/contrib/elegantnote/elegantnote-cn.tex)0
-rw-r--r--obsolete/macros/latex/contrib/elegantnote/elegantnote-en.pdf (renamed from macros/latex/contrib/elegantnote/elegantnote-en.pdf)bin338284 -> 338284 bytes
-rw-r--r--obsolete/macros/latex/contrib/elegantnote/elegantnote-en.tex (renamed from macros/latex/contrib/elegantnote/elegantnote-en.tex)0
-rw-r--r--obsolete/macros/latex/contrib/elegantnote/elegantnote.cls (renamed from macros/latex/contrib/elegantnote/elegantnote.cls)0
-rw-r--r--obsolete/macros/latex/contrib/elegantnote/image/founder.png (renamed from macros/latex/contrib/elegantnote/image/founder.png)bin89052 -> 89052 bytes
-rw-r--r--obsolete/macros/latex/contrib/elegantnote/image/logo-blue.png (renamed from macros/latex/contrib/elegantnote/image/logo-blue.png)bin91664 -> 91664 bytes
-rw-r--r--obsolete/macros/latex/contrib/elegantnote/image/logo.png (renamed from macros/latex/contrib/elegantnote/image/logo.png)bin91663 -> 91663 bytes
-rw-r--r--obsolete/macros/latex/contrib/elegantnote/image/scatter.pdf (renamed from macros/latex/contrib/elegantnote/image/scatter.pdf)bin16037 -> 16037 bytes
-rw-r--r--obsolete/macros/latex/contrib/elegantnote/image/scatter.py (renamed from macros/latex/contrib/elegantnote/image/scatter.py)0
-rw-r--r--obsolete/macros/latex/contrib/elegantpaper/License (renamed from macros/latex/contrib/elegantpaper/License)0
-rw-r--r--obsolete/macros/latex/contrib/elegantpaper/README.md (renamed from macros/latex/contrib/elegantpaper/README.md)0
-rw-r--r--obsolete/macros/latex/contrib/elegantpaper/elegantpaper-cn.pdf (renamed from macros/latex/contrib/elegantpaper/elegantpaper-cn.pdf)bin242547 -> 242547 bytes
-rw-r--r--obsolete/macros/latex/contrib/elegantpaper/elegantpaper-cn.tex (renamed from macros/latex/contrib/elegantpaper/elegantpaper-cn.tex)0
-rw-r--r--obsolete/macros/latex/contrib/elegantpaper/elegantpaper-en.pdf (renamed from macros/latex/contrib/elegantpaper/elegantpaper-en.pdf)bin230027 -> 230027 bytes
-rw-r--r--obsolete/macros/latex/contrib/elegantpaper/elegantpaper-en.tex (renamed from macros/latex/contrib/elegantpaper/elegantpaper-en.tex)0
-rw-r--r--obsolete/macros/latex/contrib/elegantpaper/elegantpaper.cls (renamed from macros/latex/contrib/elegantpaper/elegantpaper.cls)0
-rw-r--r--obsolete/macros/latex/contrib/elegantpaper/image/founder.png (renamed from macros/latex/contrib/elegantpaper/image/founder.png)bin89052 -> 89052 bytes
-rw-r--r--obsolete/macros/latex/contrib/elegantpaper/reference.bib (renamed from macros/latex/contrib/elegantpaper/reference.bib)0
-rw-r--r--support/latexindent/LatexIndent/Document.pm50
-rw-r--r--support/latexindent/LatexIndent/GetYamlSettings.pm118
-rw-r--r--support/latexindent/LatexIndent/Sentence.pm42
-rw-r--r--support/latexindent/LatexIndent/TrailingComments.pm12
-rw-r--r--support/latexindent/LatexIndent/Version.pm4
-rw-r--r--support/latexindent/LatexIndent/Wrap.pm354
-rw-r--r--support/latexindent/README2
-rw-r--r--support/latexindent/bin/linux/latexindentbin6159918 -> 6163349 bytes
-rw-r--r--support/latexindent/bin/macos/latexindentbin6389449 -> 6392841 bytes
-rw-r--r--support/latexindent/defaultSettings.yaml296
-rw-r--r--support/latexindent/documentation/contributors.bib8
-rw-r--r--support/latexindent/documentation/latexindent-yaml-schema.json2
-rw-r--r--support/latexindent/documentation/latexindent.pdfbin1166672 -> 1240112 bytes
-rw-r--r--support/latexindent/documentation/latexindent.tex2514
-rwxr-xr-xsupport/latexindent/latexindent.pl2
-rw-r--r--systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl2
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb172
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.md52
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha5122
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc14
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.xzbin2441172 -> 2444736 bytes
-rw-r--r--timestamp2
69 files changed, 4123 insertions, 2005 deletions
diff --git a/FILES.byname b/FILES.byname
index 86a6d50ca4..70005d4752 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -2038,12 +2038,12 @@
2022/12/25 | 1673 | biblio/citation-style-language/README.md
2022/12/25 | 11958 | biblio/citation-style-language/vancouver.csl
2022/12/25 | 604004 | biblio/citation-style-language.zip
-2022/12/31 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/01/01 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2022/10/08 | 127 | biblio/ctan-bibdata/biblatex-ctan/ctan.cbx
-2022/12/31 | 2758451 | biblio/ctan-bibdata/ctan.bib
-2022/12/31 | 3640830 | biblio/ctan-bibdata/ctan.pdf
+2023/01/01 | 2758789 | biblio/ctan-bibdata/ctan.bib
+2023/01/01 | 3640632 | biblio/ctan-bibdata/ctan.pdf
2022/10/08 | 1415 | biblio/ctan-bibdata/README
-2022/12/31 | 4035313 | biblio/ctan-bibdata.zip
+2023/01/01 | 4034252 | biblio/ctan-bibdata.zip
2022/02/06 | 3110 | biblio/pbibtex/pbibtex-base/cpp.awk
2022/02/06 | 1009 | biblio/pbibtex/pbibtex-base/generate.sh
2022/02/06 | 22422 | biblio/pbibtex/pbibtex-base/jabbrv.bst
@@ -5417,7 +5417,7 @@
1990/10/02 | 5440 | dviware/vutex/vaxvms.hlp
1990/10/02 | 812 | dviware/vutex/vaxvms.ins
1990/10/02 | 127576 | dviware/vutex/vutex.web
-2022/12/31 | 137906 | FILES.last07days
+2023/01/01 | 134743 | FILES.last07days
2021/07/24 | 1139410 | fonts/aboensis/Aboensis.glyphs
2021/07/24 | 18907382 | fonts/aboensis/aboensis.pdf
2021/07/24 | 137860 | fonts/aboensis/Aboensis-Regular.otf
@@ -199656,12 +199656,12 @@
2000/06/28 | 56593 | macros/generic/wichura-table/table.tex
2021/06/09 | 769585 | macros/generic/wichura-table.zip
2021/11/10 | 1411 | macros/generic/witharrows/README.md
-2022/04/20 | 281810 | macros/generic/witharrows/witharrows.dtx
-2022/04/20 | 269827 | macros/generic/witharrows/witharrows-french.pdf
-2022/04/20 | 93342 | macros/generic/witharrows/witharrows-french.tex
-2022/01/22 | 1487 | macros/generic/witharrows/witharrows.ins
-2022/04/20 | 686365 | macros/generic/witharrows/witharrows.pdf
-2022/04/20 | 1007901 | macros/generic/witharrows.zip
+2022/12/31 | 289008 | macros/generic/witharrows/witharrows.dtx
+2023/01/01 | 272837 | macros/generic/witharrows/witharrows-french.pdf
+2022/12/31 | 94416 | macros/generic/witharrows/witharrows-french.tex
+2022/12/21 | 1487 | macros/generic/witharrows/witharrows.ins
+2023/01/01 | 559421 | macros/generic/witharrows/witharrows.pdf
+2023/01/01 | 894976 | macros/generic/witharrows.zip
2010/05/14 | 252 | macros/generic/xcomment/Changes
2010/05/14 | 1836 | macros/generic/xcomment/Makefile
2010/05/14 | 372 | macros/generic/xcomment/README
@@ -215909,42 +215909,6 @@
2017/09/25 | 950 | macros/latex/contrib/eledmac/Makefile
2017/09/25 | 3440 | macros/latex/contrib/eledmac/README
2017/09/25 | 2095827 | macros/latex/contrib/eledmac.zip
-2022/12/31 | 50368 | macros/latex/contrib/elegantbook/elegantbook.cls
-2022/12/31 | 1091144 | macros/latex/contrib/elegantbook/elegantbook-cn.pdf
-2022/12/31 | 62331 | macros/latex/contrib/elegantbook/elegantbook-cn.tex
-2022/12/31 | 1041706 | macros/latex/contrib/elegantbook/elegantbook-en.pdf
-2022/12/31 | 39291 | macros/latex/contrib/elegantbook/elegantbook-en.tex
-2022/03/03 | 426434 | macros/latex/contrib/elegantbook/figure/cover.jpg
-2022/03/03 | 91664 | macros/latex/contrib/elegantbook/figure/logo-blue.png
-2022/03/03 | 89052 | macros/latex/contrib/elegantbook/image/founder.png
-2022/03/03 | 113385 | macros/latex/contrib/elegantbook/image/scatter.jpg
-2022/03/03 | 19106 | macros/latex/contrib/elegantbook/License
-2022/12/31 | 3347 | macros/latex/contrib/elegantbook/README.md
-2022/03/03 | 1833 | macros/latex/contrib/elegantbook/reference.bib
-2022/12/31 | 2678295 | macros/latex/contrib/elegantbook.zip
-2022/12/31 | 14740 | macros/latex/contrib/elegantnote/elegantnote.cls
-2022/12/31 | 338866 | macros/latex/contrib/elegantnote/elegantnote-cn.pdf
-2022/12/31 | 14456 | macros/latex/contrib/elegantnote/elegantnote-cn.tex
-2022/12/31 | 338284 | macros/latex/contrib/elegantnote/elegantnote-en.pdf
-2022/12/31 | 10453 | macros/latex/contrib/elegantnote/elegantnote-en.tex
-2022/03/07 | 89052 | macros/latex/contrib/elegantnote/image/founder.png
-2022/03/07 | 91664 | macros/latex/contrib/elegantnote/image/logo-blue.png
-2022/03/07 | 91663 | macros/latex/contrib/elegantnote/image/logo.png
-2022/03/07 | 16037 | macros/latex/contrib/elegantnote/image/scatter.pdf
-2022/03/07 | 734 | macros/latex/contrib/elegantnote/image/scatter.py
-2022/03/07 | 19106 | macros/latex/contrib/elegantnote/License
-2022/12/31 | 1497 | macros/latex/contrib/elegantnote/README.md
-2022/12/31 | 927648 | macros/latex/contrib/elegantnote.zip
-2022/12/31 | 10698 | macros/latex/contrib/elegantpaper/elegantpaper.cls
-2022/12/31 | 242547 | macros/latex/contrib/elegantpaper/elegantpaper-cn.pdf
-2022/12/31 | 12103 | macros/latex/contrib/elegantpaper/elegantpaper-cn.tex
-2022/12/31 | 230027 | macros/latex/contrib/elegantpaper/elegantpaper-en.pdf
-2022/12/31 | 8012 | macros/latex/contrib/elegantpaper/elegantpaper-en.tex
-2022/03/07 | 89052 | macros/latex/contrib/elegantpaper/image/founder.png
-2022/03/07 | 19106 | macros/latex/contrib/elegantpaper/License
-2022/12/31 | 2209 | macros/latex/contrib/elegantpaper/README.md
-2022/04/09 | 1833 | macros/latex/contrib/elegantpaper/reference.bib
-2022/12/31 | 566063 | macros/latex/contrib/elegantpaper.zip
2022/01/29 | 411587 | macros/latex/contrib/elements/elements-manual.pdf
2022/01/29 | 11653 | macros/latex/contrib/elements/elements-manual.tex
2022/01/29 | 5932 | macros/latex/contrib/elements/elements_names_brazil.def
@@ -228907,15 +228871,15 @@
2022/05/05 | 80898 | macros/latex/contrib/prociagssymp/TestprocIAGssymp.pdf
2022/05/05 | 6335 | macros/latex/contrib/prociagssymp/TestprocIAGssymp.tex
2022/05/06 | 86110 | macros/latex/contrib/prociagssymp.zip
-2022/11/26 | 9452788 | macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
-2022/11/26 | 2269245 | macros/latex/contrib/profcollege/doc/ProfCollege-doc.zip
+2023/01/01 | 9585861 | macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
+2023/01/01 | 2276744 | macros/latex/contrib/profcollege/doc/ProfCollege-doc.zip
2021/08/22 | 23478 | macros/latex/contrib/profcollege/latex/PfCEquationComposition2.tex
2021/08/22 | 19350 | macros/latex/contrib/profcollege/latex/PfCEquationLaurent1.tex
2021/08/22 | 20438 | macros/latex/contrib/profcollege/latex/PfCEquationPose1.tex
2021/08/22 | 27165 | macros/latex/contrib/profcollege/latex/PfCEquationSoustraction2.tex
2021/08/22 | 15309 | macros/latex/contrib/profcollege/latex/PfCEquationSymbole1.tex
2021/08/22 | 22791 | macros/latex/contrib/profcollege/latex/PfCEquationTerme1.tex
-2022/11/26 | 1037252 | macros/latex/contrib/profcollege/latex/ProfCollege.sty
+2023/01/01 | 1065760 | macros/latex/contrib/profcollege/latex/ProfCollege.sty
2021/11/06 | 8247 | macros/latex/contrib/profcollege/metapost/datastest/PfCafganistan.dat
2021/11/06 | 10915 | macros/latex/contrib/profcollege/metapost/datastest/PfCafriquesud1.dat
2021/11/06 | 218 | macros/latex/contrib/profcollege/metapost/datastest/PfCafriquesud2.dat
@@ -229123,8 +229087,8 @@
2022/08/31 | 5200 | macros/latex/contrib/profcollege/metapost/PfCArithmetiquePDF.mp
2022/05/26 | 13296 | macros/latex/contrib/profcollege/metapost/PfCCalculatrice.mp
2022/05/26 | 431 | macros/latex/contrib/profcollege/metapost/PfCConstantes.mp
-2022/10/12 | 2335 | macros/latex/contrib/profcollege/metapost/PfCEngrenages.mp
-2022/11/26 | 40881 | macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp
+2023/01/01 | 2335 | macros/latex/contrib/profcollege/metapost/PfCEngrenages.mp
+2023/01/01 | 41730 | macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp
2022/10/12 | 6547 | macros/latex/contrib/profcollege/metapost/PfCLabyNombre.mp
2022/08/16 | 1682 | macros/latex/contrib/profcollege/metapost/PfCLaTeX.mp
2022/05/27 | 42844 | macros/latex/contrib/profcollege/metapost/PfCMonde-futurenew.mp
@@ -229133,11 +229097,11 @@
2022/11/02 | 63245 | macros/latex/contrib/profcollege/metapost/PfCPseudo.mp
2022/11/02 | 106510 | macros/latex/contrib/profcollege/metapost/PfCScratch.mp
2022/11/02 | 108384 | macros/latex/contrib/profcollege/metapost/PfCScratchpdf.mp
-2022/11/02 | 25286 | macros/latex/contrib/profcollege/metapost/PfCSolid.mp
+2023/01/01 | 26975 | macros/latex/contrib/profcollege/metapost/PfCSolid.mp
2022/05/26 | 6652 | macros/latex/contrib/profcollege/metapost/PfCSvgnames.mp
2022/11/02 | 1683 | macros/latex/contrib/profcollege/metapost/PfCTurtleTestRemplis.mp
2021/01/18 | 435 | macros/latex/contrib/profcollege/README
-2022/11/27 | 13971205 | macros/latex/contrib/profcollege.zip
+2023/01/01 | 14113737 | macros/latex/contrib/profcollege.zip
2022/04/26 | 130555 | macros/latex/contrib/proflabo/doc/ProfLabo-doc.pdf
2022/04/26 | 16528 | macros/latex/contrib/proflabo/doc/ProfLabo-doc.tex
2022/04/26 | 323 | macros/latex/contrib/proflabo/README.md
@@ -267012,6 +266976,42 @@
2015/03/20 | 64239 | obsolete/macros/latex/contrib/datetime/samples/dt-sampl.pdf
2015/03/20 | 7194 | obsolete/macros/latex/contrib/datetime/samples/dt-sampl.tex
2015/03/21 | 463457 | obsolete/macros/latex/contrib/datetime.zip
+2022/12/31 | 50368 | obsolete/macros/latex/contrib/elegantbook/elegantbook.cls
+2022/12/31 | 1091144 | obsolete/macros/latex/contrib/elegantbook/elegantbook-cn.pdf
+2022/12/31 | 62331 | obsolete/macros/latex/contrib/elegantbook/elegantbook-cn.tex
+2022/12/31 | 1041706 | obsolete/macros/latex/contrib/elegantbook/elegantbook-en.pdf
+2022/12/31 | 39291 | obsolete/macros/latex/contrib/elegantbook/elegantbook-en.tex
+2022/03/03 | 426434 | obsolete/macros/latex/contrib/elegantbook/figure/cover.jpg
+2022/03/03 | 91664 | obsolete/macros/latex/contrib/elegantbook/figure/logo-blue.png
+2022/03/03 | 89052 | obsolete/macros/latex/contrib/elegantbook/image/founder.png
+2022/03/03 | 113385 | obsolete/macros/latex/contrib/elegantbook/image/scatter.jpg
+2022/03/03 | 19106 | obsolete/macros/latex/contrib/elegantbook/License
+2022/12/31 | 3347 | obsolete/macros/latex/contrib/elegantbook/README.md
+2022/03/03 | 1833 | obsolete/macros/latex/contrib/elegantbook/reference.bib
+2022/12/31 | 2678295 | obsolete/macros/latex/contrib/elegantbook.zip
+2022/12/31 | 14740 | obsolete/macros/latex/contrib/elegantnote/elegantnote.cls
+2022/12/31 | 338866 | obsolete/macros/latex/contrib/elegantnote/elegantnote-cn.pdf
+2022/12/31 | 14456 | obsolete/macros/latex/contrib/elegantnote/elegantnote-cn.tex
+2022/12/31 | 338284 | obsolete/macros/latex/contrib/elegantnote/elegantnote-en.pdf
+2022/12/31 | 10453 | obsolete/macros/latex/contrib/elegantnote/elegantnote-en.tex
+2022/03/07 | 89052 | obsolete/macros/latex/contrib/elegantnote/image/founder.png
+2022/03/07 | 91664 | obsolete/macros/latex/contrib/elegantnote/image/logo-blue.png
+2022/03/07 | 91663 | obsolete/macros/latex/contrib/elegantnote/image/logo.png
+2022/03/07 | 16037 | obsolete/macros/latex/contrib/elegantnote/image/scatter.pdf
+2022/03/07 | 734 | obsolete/macros/latex/contrib/elegantnote/image/scatter.py
+2022/03/07 | 19106 | obsolete/macros/latex/contrib/elegantnote/License
+2022/12/31 | 1497 | obsolete/macros/latex/contrib/elegantnote/README.md
+2022/12/31 | 927648 | obsolete/macros/latex/contrib/elegantnote.zip
+2022/12/31 | 10698 | obsolete/macros/latex/contrib/elegantpaper/elegantpaper.cls
+2022/12/31 | 242547 | obsolete/macros/latex/contrib/elegantpaper/elegantpaper-cn.pdf
+2022/12/31 | 12103 | obsolete/macros/latex/contrib/elegantpaper/elegantpaper-cn.tex
+2022/12/31 | 230027 | obsolete/macros/latex/contrib/elegantpaper/elegantpaper-en.pdf
+2022/12/31 | 8012 | obsolete/macros/latex/contrib/elegantpaper/elegantpaper-en.tex
+2022/03/07 | 89052 | obsolete/macros/latex/contrib/elegantpaper/image/founder.png
+2022/03/07 | 19106 | obsolete/macros/latex/contrib/elegantpaper/License
+2022/12/31 | 2209 | obsolete/macros/latex/contrib/elegantpaper/README.md
+2022/04/09 | 1833 | obsolete/macros/latex/contrib/elegantpaper/reference.bib
+2022/12/31 | 566063 | obsolete/macros/latex/contrib/elegantpaper.zip
2015/06/15 | 853 | obsolete/macros/latex/contrib/fixocgx/ChangeLog
2015/06/15 | 9865 | obsolete/macros/latex/contrib/fixocgx/fixocgx.sty
2015/06/15 | 1084 | obsolete/macros/latex/contrib/fixocgx/README
@@ -277395,61 +277395,61 @@
2018/04/15 | 1313 | support/latex-git-log/po/de.po
2020/02/26 | 3353 | support/latex-git-log/README.md
2020/02/27 | 87742 | support/latex-git-log.zip
-2022/12/04 | 6159918 | support/latexindent/bin/linux/latexindent
-2022/12/04 | 6389449 | support/latexindent/bin/macos/latexindent
-2022/12/04 | 8699591 | support/latexindent/bin/windows/latexindent.exe
-2022/12/04 | 19922 | support/latexindent/defaultSettings.yaml
-2022/12/04 | 5206 | support/latexindent/documentation/contributors.bib
-2022/12/04 | 7161 | support/latexindent/documentation/figure-schematic.png
-2022/12/04 | 4402 | support/latexindent/documentation/latex-indent.bib
-2022/12/04 | 1166672 | support/latexindent/documentation/latexindent.pdf
-2022/12/04 | 408010 | support/latexindent/documentation/latexindent.tex
-2022/12/04 | 54385 | support/latexindent/documentation/latexindent-yaml-schema.json
-2022/12/04 | 44096 | support/latexindent/documentation/logo.png
-2022/12/04 | 65059 | support/latexindent/LatexIndent/AlignmentAtAmpersand.pm
-2022/12/04 | 24410 | support/latexindent/LatexIndent/Arguments.pm
-2022/12/04 | 7329 | support/latexindent/LatexIndent/BackUpFileProcedure.pm
-2022/12/04 | 4816 | support/latexindent/LatexIndent/BlankLines.pm
-2022/12/04 | 12646 | support/latexindent/LatexIndent/Braces.pm
-2022/12/04 | 5390 | support/latexindent/LatexIndent/Check.pm
-2022/12/04 | 10622 | support/latexindent/LatexIndent/Command.pm
-2022/12/04 | 22818 | support/latexindent/LatexIndent/Document.pm
-2022/12/04 | 1485 | support/latexindent/LatexIndent/DoubleBackSlash.pm
-2022/12/04 | 6023 | support/latexindent/LatexIndent/Else.pm
-2022/12/04 | 6808 | support/latexindent/LatexIndent/Environment.pm
-2022/12/04 | 11300 | support/latexindent/LatexIndent/FileContents.pm
-2022/12/04 | 8462 | support/latexindent/LatexIndent/FileExtension.pm
-2022/12/04 | 48856 | support/latexindent/LatexIndent/GetYamlSettings.pm
-2022/12/04 | 11142 | support/latexindent/LatexIndent/Heading.pm
-2022/12/04 | 13420 | support/latexindent/LatexIndent/HiddenChildren.pm
-2022/12/04 | 3482 | support/latexindent/LatexIndent/HorizontalWhiteSpace.pm
-2022/12/04 | 8829 | support/latexindent/LatexIndent/IfElseFi.pm
-2022/12/04 | 21564 | support/latexindent/LatexIndent/Indent.pm
-2022/12/04 | 6694 | support/latexindent/LatexIndent/Item.pm
-2022/12/04 | 5430 | support/latexindent/LatexIndent/KeyEqualsValuesBraces.pm
-2022/12/04 | 9843 | support/latexindent/LatexIndent/Lines.pm
-2022/12/04 | 12897 | support/latexindent/LatexIndent/LogFile.pm
-2022/12/04 | 2320 | support/latexindent/LatexIndent/Logger.pm
-2022/12/04 | 7280 | support/latexindent/LatexIndent/MandatoryArgument.pm
-2022/12/04 | 18522 | support/latexindent/LatexIndent/ModifyLineBreaks.pm
-2022/12/04 | 1558 | support/latexindent/latexindent-module-installer.pl
-2022/12/04 | 4340 | support/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm
-2022/12/04 | 6522 | support/latexindent/LatexIndent/OptionalArgument.pm
-2022/12/04 | 3412 | support/latexindent/latexindent.pl
-2022/12/04 | 2690 | support/latexindent/LatexIndent/Preamble.pm
-2022/12/04 | 3747 | support/latexindent/LatexIndent/Replacement.pm
-2022/12/04 | 4365 | support/latexindent/LatexIndent/RoundBrackets.pm
-2022/12/04 | 20388 | support/latexindent/LatexIndent/Sentence.pm
-2022/12/04 | 13890 | support/latexindent/LatexIndent/Special.pm
-2022/12/04 | 2701 | support/latexindent/LatexIndent/Switches.pm
-2022/12/04 | 3339 | support/latexindent/LatexIndent/Tokens.pm
-2022/12/04 | 6964 | support/latexindent/LatexIndent/TrailingComments.pm
-2022/12/04 | 5809 | support/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm
-2022/12/04 | 27328 | support/latexindent/LatexIndent/Verbatim.pm
-2022/12/04 | 838 | support/latexindent/LatexIndent/Version.pm
-2022/12/04 | 17979 | support/latexindent/LatexIndent/Wrap.pm
-2022/12/04 | 2008 | support/latexindent/README
-2022/12/05 | 11069290 | support/latexindent.zip
+2023/01/01 | 6163349 | support/latexindent/bin/linux/latexindent
+2023/01/01 | 6392841 | support/latexindent/bin/macos/latexindent
+2023/01/01 | 8702997 | support/latexindent/bin/windows/latexindent.exe
+2023/01/01 | 22803 | support/latexindent/defaultSettings.yaml
+2023/01/01 | 5454 | support/latexindent/documentation/contributors.bib
+2023/01/01 | 7161 | support/latexindent/documentation/figure-schematic.png
+2023/01/01 | 4402 | support/latexindent/documentation/latex-indent.bib
+2023/01/01 | 1240112 | support/latexindent/documentation/latexindent.pdf
+2023/01/01 | 430288 | support/latexindent/documentation/latexindent.tex
+2023/01/01 | 54383 | support/latexindent/documentation/latexindent-yaml-schema.json
+2023/01/01 | 44096 | support/latexindent/documentation/logo.png
+2023/01/01 | 65059 | support/latexindent/LatexIndent/AlignmentAtAmpersand.pm
+2023/01/01 | 24410 | support/latexindent/LatexIndent/Arguments.pm
+2023/01/01 | 7329 | support/latexindent/LatexIndent/BackUpFileProcedure.pm
+2023/01/01 | 4816 | support/latexindent/LatexIndent/BlankLines.pm
+2023/01/01 | 12646 | support/latexindent/LatexIndent/Braces.pm
+2023/01/01 | 5390 | support/latexindent/LatexIndent/Check.pm
+2023/01/01 | 10622 | support/latexindent/LatexIndent/Command.pm
+2023/01/01 | 24759 | support/latexindent/LatexIndent/Document.pm
+2023/01/01 | 1485 | support/latexindent/LatexIndent/DoubleBackSlash.pm
+2023/01/01 | 6023 | support/latexindent/LatexIndent/Else.pm
+2023/01/01 | 6808 | support/latexindent/LatexIndent/Environment.pm
+2023/01/01 | 11300 | support/latexindent/LatexIndent/FileContents.pm
+2023/01/01 | 8462 | support/latexindent/LatexIndent/FileExtension.pm
+2023/01/01 | 52355 | support/latexindent/LatexIndent/GetYamlSettings.pm
+2023/01/01 | 11142 | support/latexindent/LatexIndent/Heading.pm
+2023/01/01 | 13420 | support/latexindent/LatexIndent/HiddenChildren.pm
+2023/01/01 | 3482 | support/latexindent/LatexIndent/HorizontalWhiteSpace.pm
+2023/01/01 | 8829 | support/latexindent/LatexIndent/IfElseFi.pm
+2023/01/01 | 21564 | support/latexindent/LatexIndent/Indent.pm
+2023/01/01 | 6694 | support/latexindent/LatexIndent/Item.pm
+2023/01/01 | 5430 | support/latexindent/LatexIndent/KeyEqualsValuesBraces.pm
+2023/01/01 | 9843 | support/latexindent/LatexIndent/Lines.pm
+2023/01/01 | 12897 | support/latexindent/LatexIndent/LogFile.pm
+2023/01/01 | 2320 | support/latexindent/LatexIndent/Logger.pm
+2023/01/01 | 7280 | support/latexindent/LatexIndent/MandatoryArgument.pm
+2023/01/01 | 18522 | support/latexindent/LatexIndent/ModifyLineBreaks.pm
+2023/01/01 | 1558 | support/latexindent/latexindent-module-installer.pl
+2023/01/01 | 4340 | support/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm
+2023/01/01 | 6522 | support/latexindent/LatexIndent/OptionalArgument.pm
+2023/01/01 | 3410 | support/latexindent/latexindent.pl
+2023/01/01 | 2690 | support/latexindent/LatexIndent/Preamble.pm
+2023/01/01 | 3747 | support/latexindent/LatexIndent/Replacement.pm
+2023/01/01 | 4365 | support/latexindent/LatexIndent/RoundBrackets.pm
+2023/01/01 | 20766 | support/latexindent/LatexIndent/Sentence.pm
+2023/01/01 | 13890 | support/latexindent/LatexIndent/Special.pm
+2023/01/01 | 2701 | support/latexindent/LatexIndent/Switches.pm
+2023/01/01 | 3339 | support/latexindent/LatexIndent/Tokens.pm
+2023/01/01 | 6884 | support/latexindent/LatexIndent/TrailingComments.pm
+2023/01/01 | 5809 | support/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm
+2023/01/01 | 27328 | support/latexindent/LatexIndent/Verbatim.pm
+2023/01/01 | 836 | support/latexindent/LatexIndent/Version.pm
+2023/01/01 | 31079 | support/latexindent/LatexIndent/Wrap.pm
+2023/01/01 | 2006 | support/latexindent/README
+2023/01/01 | 11156994 | support/latexindent.zip
2021/10/26 | 16439 | support/latex-make/figlatex.dtx
2021/10/26 | 238535 | support/latex-make/figlatex.pdf
2001/06/07 | 302 | support/latexmake/latexmake.diz
@@ -284871,8 +284871,8 @@
2020/04/15 | 12216 | systems/texlive/tlnet/archive/askinclude.source.r54725.tar.xz
2020/10/23 | 384640 | systems/texlive/tlnet/archive/askmaps.doc.r56730.tar.xz
2020/10/23 | 3312 | systems/texlive/tlnet/archive/askmaps.r56730.tar.xz
-2022/09/19 | 2655724 | systems/texlive/tlnet/archive/asmeconf.doc.r64435.tar.xz
-2022/09/19 | 29172 | systems/texlive/tlnet/archive/asmeconf.r64435.tar.xz
+2023/01/01 | 2772884 | systems/texlive/tlnet/archive/asmeconf.doc.r65413.tar.xz
+2023/01/01 | 29280 | systems/texlive/tlnet/archive/asmeconf.r65413.tar.xz
2022/12/31 | 1824200 | systems/texlive/tlnet/archive/asmejour.doc.r65405.tar.xz
2022/12/31 | 22832 | systems/texlive/tlnet/archive/asmejour.r65405.tar.xz
2019/02/28 | 337268 | systems/texlive/tlnet/archive/aspectratio.doc.r25243.tar.xz
@@ -286678,7 +286678,7 @@
2022/12/26 | 1564 | systems/texlive/tlnet/archive/collection-pictures.r65359.tar.xz
2022/12/16 | 980 | systems/texlive/tlnet/archive/collection-plaingeneric.r65277.tar.xz
2022/12/27 | 816 | systems/texlive/tlnet/archive/collection-pstricks.r65367.tar.xz
-2022/12/08 | 1668 | systems/texlive/tlnet/archive/collection-publishers.r65221.tar.xz
+2023/01/01 | 1672 | systems/texlive/tlnet/archive/collection-publishers.r65415.tar.xz
2020/03/04 | 340 | systems/texlive/tlnet/archive/collection-texworks.r54074.tar.xz
2020/03/04 | 388 | systems/texlive/tlnet/archive/collection-wintools.r54074.tar.xz
2022/11/08 | 660 | systems/texlive/tlnet/archive/collection-xetex.r64951.tar.xz
@@ -288215,12 +288215,12 @@
2019/02/28 | 1845796 | systems/texlive/tlnet/archive/eledmac.doc.r45418.tar.xz
2019/02/28 | 39444 | systems/texlive/tlnet/archive/eledmac.r45418.tar.xz
2019/02/28 | 164628 | systems/texlive/tlnet/archive/eledmac.source.r45418.tar.xz
-2022/08/16 | 1849624 | systems/texlive/tlnet/archive/elegantbook.doc.r64122.tar.xz
-2022/08/16 | 11876 | systems/texlive/tlnet/archive/elegantbook.r64122.tar.xz
-2022/04/10 | 883488 | systems/texlive/tlnet/archive/elegantnote.doc.r62989.tar.xz
-2022/04/10 | 4880 | systems/texlive/tlnet/archive/elegantnote.r62989.tar.xz
-2022/04/10 | 558440 | systems/texlive/tlnet/archive/elegantpaper.doc.r62989.tar.xz
-2022/04/10 | 4104 | systems/texlive/tlnet/archive/elegantpaper.r62989.tar.xz
+2023/01/01 | 1697844 | systems/texlive/tlnet/archive/elegantbook.doc.r65414.tar.xz
+2023/01/01 | 12144 | systems/texlive/tlnet/archive/elegantbook.r65414.tar.xz
+2023/01/01 | 897892 | systems/texlive/tlnet/archive/elegantnote.doc.r65414.tar.xz
+2023/01/01 | 4804 | systems/texlive/tlnet/archive/elegantnote.r65414.tar.xz
+2023/01/01 | 562168 | systems/texlive/tlnet/archive/elegantpaper.doc.r65414.tar.xz
+2023/01/01 | 4000 | systems/texlive/tlnet/archive/elegantpaper.r65414.tar.xz
2022/01/30 | 413276 | systems/texlive/tlnet/archive/elements.doc.r61792.tar.xz
2022/01/30 | 8868 | systems/texlive/tlnet/archive/elements.r61792.tar.xz
2019/02/28 | 418676 | systems/texlive/tlnet/archive/ellipse.doc.r39025.tar.xz
@@ -289336,6 +289336,9 @@
2019/12/18 | 317824 | systems/texlive/tlnet/archive/gettitlestring.doc.r53170.tar.xz
2019/12/18 | 2780 | systems/texlive/tlnet/archive/gettitlestring.r53170.tar.xz
2019/12/18 | 6424 | systems/texlive/tlnet/archive/gettitlestring.source.r53170.tar.xz
+2023/01/01 | 168916 | systems/texlive/tlnet/archive/gfdl.doc.r65415.tar.xz
+2023/01/01 | 11824 | systems/texlive/tlnet/archive/gfdl.r65415.tar.xz
+2023/01/01 | 6180 | systems/texlive/tlnet/archive/gfdl.source.r65415.tar.xz
2019/02/28 | 167284 | systems/texlive/tlnet/archive/gfnotation.doc.r37156.tar.xz
2019/02/28 | 14368 | systems/texlive/tlnet/archive/gfnotation.r37156.tar.xz
2019/02/28 | 117180 | systems/texlive/tlnet/archive/gfsartemisia.doc.r19469.tar.xz
@@ -290512,9 +290515,9 @@
2019/02/28 | 6820 | systems/texlive/tlnet/archive/keystroke.r17992.tar.xz
2019/02/28 | 314328 | systems/texlive/tlnet/archive/keyval2e.doc.r23698.tar.xz
2019/02/28 | 3228 | systems/texlive/tlnet/archive/keyval2e.r23698.tar.xz
-2020/04/12 | 459000 | systems/texlive/tlnet/archive/keyvaltable.doc.r54677.tar.xz
-2020/04/12 | 8740 | systems/texlive/tlnet/archive/keyvaltable.r54677.tar.xz
-2020/04/12 | 37812 | systems/texlive/tlnet/archive/keyvaltable.source.r54677.tar.xz
+2023/01/01 | 902524 | systems/texlive/tlnet/archive/keyvaltable.doc.r65416.tar.xz
+2023/01/01 | 10088 | systems/texlive/tlnet/archive/keyvaltable.r65416.tar.xz
+2023/01/01 | 42384 | systems/texlive/tlnet/archive/keyvaltable.source.r65416.tar.xz
2022/07/26 | 63204 | systems/texlive/tlnet/archive/kfupm-math-exam.doc.r63977.tar.xz
2022/07/26 | 4120 | systems/texlive/tlnet/archive/kfupm-math-exam.r63977.tar.xz
2022/07/26 | 4852 | systems/texlive/tlnet/archive/kfupm-math-exam.source.r63977.tar.xz
@@ -294018,8 +294021,8 @@
2022/11/29 | 1248276 | systems/texlive/tlnet/archive/profcollege.r65122.tar.xz
2022/04/27 | 134096 | systems/texlive/tlnet/archive/proflabo.doc.r63147.tar.xz
2022/04/27 | 2748 | systems/texlive/tlnet/archive/proflabo.r63147.tar.xz
-2022/12/29 | 1509640 | systems/texlive/tlnet/archive/proflycee.doc.r65386.tar.xz
-2022/12/29 | 25988 | systems/texlive/tlnet/archive/proflycee.r65386.tar.xz
+2023/01/01 | 1531048 | systems/texlive/tlnet/archive/proflycee.doc.r65417.tar.xz
+2023/01/01 | 26784 | systems/texlive/tlnet/archive/proflycee.r65417.tar.xz
2019/02/28 | 49880 | systems/texlive/tlnet/archive/program.doc.r44214.tar.xz
2019/02/28 | 11780 | systems/texlive/tlnet/archive/program.r44214.tar.xz
2019/02/28 | 86236 | systems/texlive/tlnet/archive/progressbar.doc.r33822.tar.xz
@@ -296166,7 +296169,7 @@
2022/09/13 | 600 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r64356.tar.xz
-2022/12/31 | 424264 | systems/texlive/tlnet/archive/texlive-scripts.doc.r65402.tar.xz
+2023/01/01 | 424260 | systems/texlive/tlnet/archive/texlive-scripts.doc.r65412.tar.xz
2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.aarch64-linux.r53577.tar.xz
2020/01/27 | 924 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-freebsd.r53577.tar.xz
2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-netbsd.r53577.tar.xz
@@ -296190,7 +296193,7 @@
2022/09/13 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r64356.tar.xz
-2022/12/31 | 113708 | systems/texlive/tlnet/archive/texlive-scripts.r65402.tar.xz
+2023/01/01 | 113712 | systems/texlive/tlnet/archive/texlive-scripts.r65412.tar.xz
2022/09/13 | 580 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r64356.tar.xz
2022/11/29 | 36264 | systems/texlive/tlnet/archive/texlive-scripts.win32.r65128.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r64356.tar.xz
@@ -298061,16 +298064,16 @@
2020/07/18 | 47816 | systems/texlive/tlnet/archive/zztex.doc.r55862.tar.xz
2020/07/18 | 101724 | systems/texlive/tlnet/archive/zztex.r55862.tar.xz
2022/07/17 | 124404 | systems/texlive/tlnet/install-tl
-2022/12/31 | 5834698 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2022/12/31 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2022/12/31 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/01/01 | 5835031 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2023/01/01 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/01/01 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2021/04/11 | 4945 | systems/texlive/tlnet/install-tl-windows.bat
-2022/12/31 | 20434487 | systems/texlive/tlnet/install-tl-windows.exe
-2022/12/31 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2022/12/31 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2022/12/31 | 25518543 | systems/texlive/tlnet/install-tl.zip
-2022/12/31 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2022/12/31 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2023/01/01 | 20434556 | systems/texlive/tlnet/install-tl-windows.exe
+2023/01/01 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/01/01 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2023/01/01 | 25518540 | systems/texlive/tlnet/install-tl.zip
+2023/01/01 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2023/01/01 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2022/04/03 | 1229 | systems/texlive/tlnet/README.md
2022/04/03 | 0 | systems/texlive/tlnet/TEXLIVE_2022
2022/02/28 | 7791 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
@@ -298080,7 +298083,7 @@
2022/02/28 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2022/10/09 | 49938 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2022/12/30 | 7371 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2022/12/31 | 7370 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2022/10/13 | 225403 | systems/texlive/tlnet/tlpkg/installer/curl/curl-ca-bundle.crt
2020/04/15 | 2606592 | systems/texlive/tlnet/tlpkg/installer/curl/curl.exe
2017/04/16 | 2629 | systems/texlive/tlnet/tlpkg/installer/installer-options.txt
@@ -298123,12 +298126,12 @@
2021/05/16 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2021/12/21 | 5429 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2021/12/21 | 27582 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2022/12/31 | 17934482 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2022/12/31 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2023/01/01 | 17935475 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/01/01 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2022/04/18 | 86658 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2022/12/31 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2022/12/31 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2022/12/31 | 2441172 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/01/01 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/01/01 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2023/01/01 | 2444736 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2022/09/14 | 58922 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2022/10/04 | 42404 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2021/12/21 | 16130 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -308322,7 +308325,7 @@
2014/07/05 | 611 | systems/win32/yandy/README
2014/07/05 | 1004628 | systems/win32/yandy/yandy-src.tar.xz
2014/07/05 | 1012416 | systems/win32/yandy.zip
-2023/01/01 | 186 | timestamp
+2023/01/02 | 186 | timestamp
2002/08/26 | 61898 | usergrps/dante/antrag.pdf
2002/08/26 | 118217 | usergrps/dante/antrag.ps
2021/11/11 | 917 | usergrps/dante/dtk/doc/beispiel.bib
diff --git a/FILES.byname.gz b/FILES.byname.gz
index 29bae3e795..6994015cf8 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index 060a06ced1..d50dea0f90 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,17 +1,120 @@
+2023/01/01 | 9843 | support/latexindent/LatexIndent/Lines.pm
+2023/01/01 | 9585861 | macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
+2023/01/01 | 902524 | systems/texlive/tlnet/archive/keyvaltable.doc.r65416.tar.xz
+2023/01/01 | 897892 | systems/texlive/tlnet/archive/elegantnote.doc.r65414.tar.xz
+2023/01/01 | 894976 | macros/generic/witharrows.zip
+2023/01/01 | 8829 | support/latexindent/LatexIndent/IfElseFi.pm
+2023/01/01 | 8702997 | support/latexindent/bin/windows/latexindent.exe
+2023/01/01 | 8462 | support/latexindent/LatexIndent/FileExtension.pm
+2023/01/01 | 836 | support/latexindent/LatexIndent/Version.pm
+2023/01/01 | 7329 | support/latexindent/LatexIndent/BackUpFileProcedure.pm
+2023/01/01 | 7280 | support/latexindent/LatexIndent/MandatoryArgument.pm
+2023/01/01 | 7161 | support/latexindent/documentation/figure-schematic.png
+2023/01/01 | 6884 | support/latexindent/LatexIndent/TrailingComments.pm
+2023/01/01 | 6808 | support/latexindent/LatexIndent/Environment.pm
+2023/01/01 | 6694 | support/latexindent/LatexIndent/Item.pm
+2023/01/01 | 6522 | support/latexindent/LatexIndent/OptionalArgument.pm
+2023/01/01 | 65059 | support/latexindent/LatexIndent/AlignmentAtAmpersand.pm
+2023/01/01 | 6392841 | support/latexindent/bin/macos/latexindent
+2023/01/01 | 6180 | systems/texlive/tlnet/archive/gfdl.source.r65415.tar.xz
+2023/01/01 | 6163349 | support/latexindent/bin/linux/latexindent
+2023/01/01 | 6023 | support/latexindent/LatexIndent/Else.pm
+2023/01/01 | 5835031 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2023/01/01 | 5809 | support/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm
+2023/01/01 | 562168 | systems/texlive/tlnet/archive/elegantpaper.doc.r65414.tar.xz
+2023/01/01 | 559421 | macros/generic/witharrows/witharrows.pdf
+2023/01/01 | 5454 | support/latexindent/documentation/contributors.bib
+2023/01/01 | 54383 | support/latexindent/documentation/latexindent-yaml-schema.json
+2023/01/01 | 5430 | support/latexindent/LatexIndent/KeyEqualsValuesBraces.pm
+2023/01/01 | 5390 | support/latexindent/LatexIndent/Check.pm
+2023/01/01 | 52355 | support/latexindent/LatexIndent/GetYamlSettings.pm
+2023/01/01 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2023/01/01 | 4816 | support/latexindent/LatexIndent/BlankLines.pm
+2023/01/01 | 4804 | systems/texlive/tlnet/archive/elegantnote.r65414.tar.xz
+2023/01/01 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2023/01/01 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2023/01/01 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2023/01/01 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/01/01 | 44096 | support/latexindent/documentation/logo.png
+2023/01/01 | 4402 | support/latexindent/documentation/latex-indent.bib
+2023/01/01 | 4365 | support/latexindent/LatexIndent/RoundBrackets.pm
+2023/01/01 | 4340 | support/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm
+2023/01/01 | 430288 | support/latexindent/documentation/latexindent.tex
+2023/01/01 | 424260 | systems/texlive/tlnet/archive/texlive-scripts.doc.r65412.tar.xz
+2023/01/01 | 42384 | systems/texlive/tlnet/archive/keyvaltable.source.r65416.tar.xz
+2023/01/01 | 41730 | macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp
+2023/01/01 | 4034252 | biblio/ctan-bibdata.zip
+2023/01/01 | 4000 | systems/texlive/tlnet/archive/elegantpaper.r65414.tar.xz
2023/01/01 | 3873 | macros/latex/contrib/calxxxx-yyyy/README
+2023/01/01 | 3747 | support/latexindent/LatexIndent/Replacement.pm
+2023/01/01 | 3640632 | biblio/ctan-bibdata/ctan.pdf
+2023/01/01 | 3482 | support/latexindent/LatexIndent/HorizontalWhiteSpace.pm
+2023/01/01 | 3410 | support/latexindent/latexindent.pl
+2023/01/01 | 3339 | support/latexindent/LatexIndent/Tokens.pm
2023/01/01 | 3195 | macros/latex/contrib/calxxxx-yyyy/calxxxx-yyyy-doc.tex
+2023/01/01 | 31079 | support/latexindent/LatexIndent/Wrap.pm
+2023/01/01 | 29280 | systems/texlive/tlnet/archive/asmeconf.r65413.tar.xz
+2023/01/01 | 2772884 | systems/texlive/tlnet/archive/asmeconf.doc.r65413.tar.xz
+2023/01/01 | 2758789 | biblio/ctan-bibdata/ctan.bib
+2023/01/01 | 27328 | support/latexindent/LatexIndent/Verbatim.pm
+2023/01/01 | 272837 | macros/generic/witharrows/witharrows-french.pdf
+2023/01/01 | 2701 | support/latexindent/LatexIndent/Switches.pm
+2023/01/01 | 26975 | macros/latex/contrib/profcollege/metapost/PfCSolid.mp
+2023/01/01 | 2690 | support/latexindent/LatexIndent/Preamble.pm
+2023/01/01 | 26784 | systems/texlive/tlnet/archive/proflycee.r65417.tar.xz
+2023/01/01 | 25518540 | systems/texlive/tlnet/install-tl.zip
+2023/01/01 | 24759 | support/latexindent/LatexIndent/Document.pm
+2023/01/01 | 2444736 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/01/01 | 24410 | support/latexindent/LatexIndent/Arguments.pm
+2023/01/01 | 2335 | macros/latex/contrib/profcollege/metapost/PfCEngrenages.mp
+2023/01/01 | 2320 | support/latexindent/LatexIndent/Logger.pm
+2023/01/01 | 22803 | support/latexindent/defaultSettings.yaml
+2023/01/01 | 2276744 | macros/latex/contrib/profcollege/doc/ProfCollege-doc.zip
+2023/01/01 | 21564 | support/latexindent/LatexIndent/Indent.pm
+2023/01/01 | 20766 | support/latexindent/LatexIndent/Sentence.pm
+2023/01/01 | 20434556 | systems/texlive/tlnet/install-tl-windows.exe
+2023/01/01 | 2006 | support/latexindent/README
+2023/01/01 | 18522 | support/latexindent/LatexIndent/ModifyLineBreaks.pm
+2023/01/01 | 17935475 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/01/01 | 1697844 | systems/texlive/tlnet/archive/elegantbook.doc.r65414.tar.xz
+2023/01/01 | 168916 | systems/texlive/tlnet/archive/gfdl.doc.r65415.tar.xz
+2023/01/01 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/01/01 | 1672 | systems/texlive/tlnet/archive/collection-publishers.r65415.tar.xz
2023/01/01 | 16184 | macros/latex/contrib/calxxxx-yyyy/calxxxx-yyyy.tex
+2023/01/01 | 1558 | support/latexindent/latexindent-module-installer.pl
+2023/01/01 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/01/01 | 1531048 | systems/texlive/tlnet/archive/proflycee.doc.r65417.tar.xz
+2023/01/01 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/01/01 | 1485 | support/latexindent/LatexIndent/DoubleBackSlash.pm
+2023/01/01 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2023/01/01 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/01/01 | 14113737 | macros/latex/contrib/profcollege.zip
+2023/01/01 | 13890 | support/latexindent/LatexIndent/Special.pm
+2023/01/01 | 13420 | support/latexindent/LatexIndent/HiddenChildren.pm
+2023/01/01 | 12897 | support/latexindent/LatexIndent/LogFile.pm
+2023/01/01 | 12646 | support/latexindent/LatexIndent/Braces.pm
+2023/01/01 | 1240112 | support/latexindent/documentation/latexindent.pdf
+2023/01/01 | 12144 | systems/texlive/tlnet/archive/elegantbook.r65414.tar.xz
2023/01/01 | 118945 | macros/latex/contrib/calxxxx-yyyy/calxxxx-yyyy-doc.pdf
+2023/01/01 | 11824 | systems/texlive/tlnet/archive/gfdl.r65415.tar.xz
+2023/01/01 | 113712 | systems/texlive/tlnet/archive/texlive-scripts.r65412.tar.xz
+2023/01/01 | 11300 | support/latexindent/LatexIndent/FileContents.pm
+2023/01/01 | 11156994 | support/latexindent.zip
+2023/01/01 | 11142 | support/latexindent/LatexIndent/Heading.pm
2023/01/01 | 110606 | macros/latex/contrib/calxxxx-yyyy/cal2023-2040_DE.pdf
2023/01/01 | 110542 | macros/latex/contrib/calxxxx-yyyy/cal2023-2040_DK.pdf
2023/01/01 | 108703 | macros/latex/contrib/calxxxx-yyyy/cal2023-2040_EN.pdf
+2023/01/01 | 1065760 | macros/latex/contrib/profcollege/latex/ProfCollege.sty
+2023/01/01 | 10622 | support/latexindent/LatexIndent/Command.pm
+2023/01/01 | 10088 | systems/texlive/tlnet/archive/keyvaltable.r65416.tar.xz
2022/12/31 | 976748 | systems/texlive/tlnet/archive/tex4ht.r65410.tar.xz
2022/12/31 | 97668 | systems/win32/miktex/tm/packages/pyluatex__doc.tar.lzma
2022/12/31 | 964066 | systems/win32/miktex/tm/packages/postnotes__doc.tar.lzma
2022/12/31 | 95798 | macros/latex/contrib/asmeconf/asmeconf.cls
2022/12/31 | 947299 | macros/latex/contrib/keyvaltable.zip
+2022/12/31 | 94416 | macros/generic/witharrows/witharrows-french.tex
2022/12/31 | 939 | systems/win32/miktex/tm/packages/pr.ini
-2022/12/31 | 927648 | macros/latex/contrib/elegantnote.zip
+2022/12/31 | 927648 | obsolete/macros/latex/contrib/elegantnote.zip
2022/12/31 | 9256 | systems/win32/miktex/tm/packages/piton.tar.lzma
2022/12/31 | 916642 | macros/latex/contrib/keyvaltable/keyvaltable.pdf
2022/12/31 | 9074 | systems/win32/miktex/tm/packages/jeuxcartes__source.tar.lzma
@@ -21,7 +124,7 @@
2022/12/31 | 8172 | systems/texlive/tlnet/archive/zref-vario.source.r65407.tar.xz
2022/12/31 | 81341 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
2022/12/31 | 80961 | systems/win32/miktex/tm/packages/ibrackets__doc.tar.lzma
-2022/12/31 | 8012 | macros/latex/contrib/elegantpaper/elegantpaper-en.tex
+2022/12/31 | 8012 | obsolete/macros/latex/contrib/elegantpaper/elegantpaper-en.tex
2022/12/31 | 79779 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
2022/12/31 | 777408 | systems/texlive/tlnet/archive/zref-vario.doc.r65407.tar.xz
2022/12/31 | 77660 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
@@ -33,6 +136,7 @@
2022/12/31 | 74400 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
2022/12/31 | 7427 | systems/win32/miktex/tm/packages/postnotes.tar.lzma
2022/12/31 | 73935 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2022/12/31 | 7370 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2022/12/31 | 73324 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
2022/12/31 | 72821 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
2022/12/31 | 7276 | systems/texlive/tlnet/archive/pyluatex.r65408.tar.xz
@@ -43,7 +147,7 @@
2022/12/31 | 64360 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
2022/12/31 | 637059 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
2022/12/31 | 62767 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2022/12/31 | 62331 | macros/latex/contrib/elegantbook/elegantbook-cn.tex
+2022/12/31 | 62331 | obsolete/macros/latex/contrib/elegantbook/elegantbook-cn.tex
2022/12/31 | 61847 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
2022/12/31 | 613835 | systems/win32/miktex/tm/packages/asmejour__doc.tar.lzma
2022/12/31 | 6130 | systems/win32/miktex/tm/packages/bookcover.tar.lzma
@@ -51,23 +155,21 @@
2022/12/31 | 599366 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
2022/12/31 | 587628 | systems/win32/miktex/tm/packages/asmeconf__doc.tar.lzma
2022/12/31 | 58714 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
-2022/12/31 | 5834698 | systems/texlive/tlnet/install-tl-unx.tar.gz
2022/12/31 | 5828 | systems/texlive/tlnet/archive/apalike-german.r65403.tar.xz
2022/12/31 | 5789724 | systems/win32/miktex/tm/packages/jeuxcartes__doc.tar.lzma
2022/12/31 | 57864 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
2022/12/31 | 57426 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
2022/12/31 | 572516 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
2022/12/31 | 57209 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2022/12/31 | 566063 | macros/latex/contrib/elegantpaper.zip
+2022/12/31 | 566063 | obsolete/macros/latex/contrib/elegantpaper.zip
2022/12/31 | 55852 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
2022/12/31 | 55170 | systems/win32/miktex/tm/packages/zref-clever__source.tar.lzma
2022/12/31 | 529898 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
2022/12/31 | 52729 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
2022/12/31 | 52663 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
2022/12/31 | 52488 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
-2022/12/31 | 50368 | macros/latex/contrib/elegantbook/elegantbook.cls
+2022/12/31 | 50368 | obsolete/macros/latex/contrib/elegantbook/elegantbook.cls
2022/12/31 | 499094 | systems/win32/miktex/tm/packages/piton__doc.tar.lzma
-2022/12/31 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2022/12/31 | 48951 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
2022/12/31 | 484044 | systems/texlive/tlnet/archive/ufrgscca.doc.r65406.tar.xz
2022/12/31 | 48133 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
@@ -78,10 +180,6 @@
2022/12/31 | 468251 | systems/win32/miktex/tm/packages/ufrgscca__doc.tar.lzma
2022/12/31 | 45772 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
2022/12/31 | 4569969 | systems/win32/miktex/tm/packages/jeuxcartes.tar.lzma
-2022/12/31 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2022/12/31 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2022/12/31 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2022/12/31 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2022/12/31 | 4528 | systems/texlive/tlnet/archive/zref-vario.r65407.tar.xz
2022/12/31 | 446476 | macros/latex/contrib/calxxxx-yyyy.zip
2022/12/31 | 4431993 | macros/latex/contrib/asmeconf.zip
@@ -91,26 +189,23 @@
2022/12/31 | 42981 | macros/latex/contrib/asmeconf/asmeconf-template.tex
2022/12/31 | 42576 | systems/win32/miktex/tm/packages/bithesis__source.tar.lzma
2022/12/31 | 42479 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2022/12/31 | 424264 | systems/texlive/tlnet/archive/texlive-scripts.doc.r65402.tar.xz
2022/12/31 | 4197 | systems/win32/miktex/tm/packages/ibrackets__source.tar.lzma
2022/12/31 | 41713 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
2022/12/31 | 40396 | systems/texlive/tlnet/archive/bithesis.source.r65409.tar.xz
-2022/12/31 | 4035313 | biblio/ctan-bibdata.zip
2022/12/31 | 394747 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
-2022/12/31 | 39291 | macros/latex/contrib/elegantbook/elegantbook-en.tex
+2022/12/31 | 39291 | obsolete/macros/latex/contrib/elegantbook/elegantbook-en.tex
2022/12/31 | 3868070 | systems/win32/miktex/tm/packages/guide-latex-fr__source.tar.lzma
2022/12/31 | 37418 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
2022/12/31 | 37081 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
-2022/12/31 | 3640830 | biblio/ctan-bibdata/ctan.pdf
2022/12/31 | 35508 | systems/win32/miktex/tm/packages/piton__source.tar.lzma
2022/12/31 | 35309 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
2022/12/31 | 352602 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
2022/12/31 | 35223 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
2022/12/31 | 3501266 | systems/win32/miktex/tm/packages/guide-latex-fr.tar.lzma
-2022/12/31 | 338866 | macros/latex/contrib/elegantnote/elegantnote-cn.pdf
+2022/12/31 | 338866 | obsolete/macros/latex/contrib/elegantnote/elegantnote-cn.pdf
2022/12/31 | 33879 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
-2022/12/31 | 338284 | macros/latex/contrib/elegantnote/elegantnote-en.pdf
-2022/12/31 | 3347 | macros/latex/contrib/elegantbook/README.md
+2022/12/31 | 338284 | obsolete/macros/latex/contrib/elegantnote/elegantnote-en.pdf
+2022/12/31 | 3347 | obsolete/macros/latex/contrib/elegantbook/README.md
2022/12/31 | 327698 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
2022/12/31 | 326751 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
2022/12/31 | 32467 | systems/win32/miktex/tm/packages/tagpdf.tar.lzma
@@ -126,43 +221,40 @@
2022/12/31 | 296205 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
2022/12/31 | 29483 | systems/win32/miktex/tm/packages/asmeconf.tar.lzma
2022/12/31 | 2901 | systems/win32/miktex/tm/packages/luagcd__source.tar.lzma
+2022/12/31 | 289008 | macros/generic/witharrows/witharrows.dtx
2022/12/31 | 28745 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
2022/12/31 | 287089 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
2022/12/31 | 2869 | systems/win32/miktex/tm/packages/luacomplex__source.tar.lzma
2022/12/31 | 2832191 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
2022/12/31 | 27688 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2022/12/31 | 2758451 | biblio/ctan-bibdata/ctan.bib
2022/12/31 | 2753 | systems/win32/miktex/tm/packages/luagcd.tar.lzma
2022/12/31 | 2744463 | systems/win32/miktex/tm/packages/simpleicons.tar.lzma
2022/12/31 | 2718928 | systems/texlive/tlnet/archive/simpleicons.r65404.tar.xz
2022/12/31 | 271388 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2022/12/31 | 2678295 | macros/latex/contrib/elegantbook.zip
+2022/12/31 | 2678295 | obsolete/macros/latex/contrib/elegantbook.zip
2022/12/31 | 26136 | systems/win32/miktex/tm/packages/proflycee.tar.lzma
2022/12/31 | 259501 | fonts/bboldx.zip
-2022/12/31 | 25518543 | systems/texlive/tlnet/install-tl.zip
2022/12/31 | 252 | fonts/bboldx/map/bboldx.map
2022/12/31 | 25223 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
2022/12/31 | 2500894 | systems/win32/miktex/tm/packages/asmeconf__source.tar.lzma
2022/12/31 | 247487 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
2022/12/31 | 245715 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
2022/12/31 | 24534 | systems/win32/miktex/tm/packages/bithesis.tar.lzma
-2022/12/31 | 2441172 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2022/12/31 | 2430 | macros/latex/contrib/keyvaltable/README.md
-2022/12/31 | 242547 | macros/latex/contrib/elegantpaper/elegantpaper-cn.pdf
+2022/12/31 | 242547 | obsolete/macros/latex/contrib/elegantpaper/elegantpaper-cn.pdf
2022/12/31 | 24095 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
2022/12/31 | 24033 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
2022/12/31 | 23949 | systems/win32/miktex/tm/packages/zref-clever.tar.lzma
2022/12/31 | 23098 | systems/win32/miktex/tm/packages/asmejour.tar.lzma
-2022/12/31 | 230027 | macros/latex/contrib/elegantpaper/elegantpaper-en.pdf
+2022/12/31 | 230027 | obsolete/macros/latex/contrib/elegantpaper/elegantpaper-en.pdf
2022/12/31 | 228583 | systems/win32/miktex/tm/packages/tagpdf__source.tar.lzma
2022/12/31 | 22832 | systems/texlive/tlnet/archive/asmejour.r65405.tar.xz
2022/12/31 | 22120 | systems/texlive/tlnet/archive/bithesis.r65409.tar.xz
-2022/12/31 | 2209 | macros/latex/contrib/elegantpaper/README.md
+2022/12/31 | 2209 | obsolete/macros/latex/contrib/elegantpaper/README.md
2022/12/31 | 2145 | systems/win32/miktex/tm/packages/blopentype__source.tar.lzma
2022/12/31 | 214278 | support/TeX4ht/source/ChangeLog
2022/12/31 | 213773 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
2022/12/31 | 209122 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
-2022/12/31 | 20434487 | systems/texlive/tlnet/install-tl-windows.exe
2022/12/31 | 203661 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
2022/12/31 | 203617 | macros/latex/contrib/gfdl.zip
2022/12/31 | 2001478 | systems/win32/miktex/tm/packages/simpleicons__doc.tar.lzma
@@ -179,7 +271,6 @@
2022/12/31 | 1834913 | systems/win32/miktex/tm/packages/tagpdf__doc.tar.lzma
2022/12/31 | 1824200 | systems/texlive/tlnet/archive/asmejour.doc.r65405.tar.xz
2022/12/31 | 181727 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
-2022/12/31 | 17934482 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2022/12/31 | 17892 | systems/win32/miktex/tm/packages/simpleicons__source.tar.lzma
2022/12/31 | 1785619 | systems/win32/miktex/tm/packages/bookcover__doc.tar.lzma
2022/12/31 | 177661 | fonts/bboldx/doc/Bboldx-doc.pdf
@@ -187,24 +278,19 @@
2022/12/31 | 173398 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
2022/12/31 | 1730998 | macros/latex/contrib/proflycee.zip
2022/12/31 | 17307 | systems/win32/miktex/tm/packages/ufrgscca__source.tar.lzma
-2022/12/31 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2022/12/31 | 1636481 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
2022/12/31 | 1635956 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
2022/12/31 | 15805 | systems/win32/miktex/tm/packages/blopentype.tar.lzma
2022/12/31 | 155919 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
2022/12/31 | 1557910 | systems/win32/miktex/tm/packages/zref-clever__doc.tar.lzma
2022/12/31 | 155375 | systems/win32/miktex/tm/packages/proflycee__source.tar.lzma
-2022/12/31 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2022/12/31 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
2022/12/31 | 15269 | systems/win32/miktex/tm/packages/bookcover__source.tar.lzma
2022/12/31 | 1514926 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2022/12/31 | 1497 | macros/latex/contrib/elegantnote/README.md
+2022/12/31 | 1497 | obsolete/macros/latex/contrib/elegantnote/README.md
2022/12/31 | 149780 | systems/win32/miktex/tm/packages/blopentype__doc.tar.lzma
-2022/12/31 | 14740 | macros/latex/contrib/elegantnote/elegantnote.cls
-2022/12/31 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2022/12/31 | 14740 | obsolete/macros/latex/contrib/elegantnote/elegantnote.cls
2022/12/31 | 1457176 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2022/12/31 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2022/12/31 | 14456 | macros/latex/contrib/elegantnote/elegantnote-cn.tex
+2022/12/31 | 14456 | obsolete/macros/latex/contrib/elegantnote/elegantnote-cn.tex
2022/12/31 | 14450 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
2022/12/31 | 140649 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
2022/12/31 | 13702 | systems/win32/miktex/tm/packages/apalike-german__doc.tar.lzma
@@ -220,22 +306,21 @@
2022/12/31 | 12790 | systems/win32/miktex/tm/packages/zref-vario__source.tar.lzma
2022/12/31 | 1270388 | systems/win32/miktex/tm/packages/asmejour__source.tar.lzma
2022/12/31 | 121141 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2022/12/31 | 12103 | macros/latex/contrib/elegantpaper/elegantpaper-cn.tex
+2022/12/31 | 12103 | obsolete/macros/latex/contrib/elegantpaper/elegantpaper-cn.tex
2022/12/31 | 1167071 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
2022/12/31 | 115755 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
2022/12/31 | 1151730 | support/TeX4ht/source/tex4ht-4ht.tex
2022/12/31 | 1150 | systems/win32/miktex/tm/packages/next/pr.ini
-2022/12/31 | 113708 | systems/texlive/tlnet/archive/texlive-scripts.r65402.tar.xz
2022/12/31 | 113228 | systems/win32/miktex/tm/packages/luacomplex__doc.tar.lzma
2022/12/31 | 113038 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
2022/12/31 | 109636 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
2022/12/31 | 109291 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
-2022/12/31 | 1091144 | macros/latex/contrib/elegantbook/elegantbook-cn.pdf
+2022/12/31 | 1091144 | obsolete/macros/latex/contrib/elegantbook/elegantbook-cn.pdf
2022/12/31 | 10863 | macros/latex/contrib/asmeconf/README.md
-2022/12/31 | 10698 | macros/latex/contrib/elegantpaper/elegantpaper.cls
+2022/12/31 | 10698 | obsolete/macros/latex/contrib/elegantpaper/elegantpaper.cls
2022/12/31 | 105510 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2022/12/31 | 10453 | macros/latex/contrib/elegantnote/elegantnote-en.tex
-2022/12/31 | 1041706 | macros/latex/contrib/elegantbook/elegantbook-en.pdf
+2022/12/31 | 10453 | obsolete/macros/latex/contrib/elegantnote/elegantnote-en.tex
+2022/12/31 | 1041706 | obsolete/macros/latex/contrib/elegantbook/elegantbook-en.pdf
2022/12/31 | 103786 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
2022/12/31 | 103619 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
2022/12/31 | 1033080 | systems/texlive/tlnet/archive/bithesis.doc.r65409.tar.xz
@@ -254,7 +339,6 @@
2022/12/30 | 77523 | biblio/bibtex/contrib/apalike-german/README.html
2022/12/30 | 7730 | macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-tab.sty
2022/12/30 | 7635 | macros/luatex/latex/pyluatex/pyluatex.lua
-2022/12/30 | 7371 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2022/12/30 | 736 | macros/latex/contrib/proflycee/doc/perroquet.csv
2022/12/30 | 7305 | macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
2022/12/30 | 717 | macros/luatex/latex/pyluatex/example/readme-example.tex
@@ -734,7 +818,6 @@
2022/12/29 | 25 | support/texlab/src/parser/test_data/latex/glossary/glossary_entry_reference_options.txt
2022/12/29 | 25 | support/texlab/src/parser/test_data/latex/color/color_set_definition_error3.txt
2022/12/29 | 25 | support/texlab/src/parser/test_data/bibtex/preamble.txt
-2022/12/29 | 25988 | systems/texlive/tlnet/archive/proflycee.r65386.tar.xz
2022/12/29 | 2589 | macros/latex/contrib/zref-vario/zref-vario.ins
2022/12/29 | 2586 | support/texlab/texlab.tex
2022/12/29 | 25487 | support/texlab/src/features/completion/builder.rs
@@ -837,7 +920,6 @@
2022/12/29 | 1554160 | systems/texlive/tlnet/archive/zref-clever.doc.r65387.tar.xz
2022/12/29 | 1542 | support/texlab/src/tests/text_document/document_link.rs
2022/12/29 | 1519 | support/texlab/src/db/parse.rs
-2022/12/29 | 1509640 | systems/texlive/tlnet/archive/proflycee.doc.r65386.tar.xz
2022/12/29 | 14 | support/texlab/src/parser/test_data/latex/label/label_reference_multiple.txt
2022/12/29 | 14 | support/texlab/src/parser/test_data/latex/generic_command_args.txt
2022/12/29 | 149 | support/texlab/src/tests/text_document/snapshots/texlab__tests__text_document__formatting__bibtex_internal_string.snap
@@ -1279,244 +1361,3 @@
2022/12/26 | 1069 | macros/luatex/latex/luamaths/luamaths.bib
2022/12/26 | 10396 | support/pkgcheck/CHANGES.md
2022/12/26 | 1031 | macros/luatex/latex/luamaths/README.txt
-2022/12/25 | 920 | systems/texlive/tlnet/archive/gradient-text.r65353.tar.xz
-2022/12/25 | 904 | biblio/citation-style-language/citeproc-node-group.lua
-2022/12/25 | 8995 | biblio/citation-style-language/citeproc-latex-core.lua
-2022/12/25 | 85364 | systems/texlive/tlnet/archive/gradient-text.doc.r65353.tar.xz
-2022/12/25 | 8428 | biblio/citation-style-language/citeproc-context.lua
-2022/12/25 | 827288 | systems/texlive/tlnet/archive/yquant.doc.r65351.tar.xz
-2022/12/25 | 8128 | biblio/citation-style-language/elsevier-harvard.csl
-2022/12/25 | 8108 | systems/texlive/tlnet/archive/fei.r65352.tar.xz
-2022/12/25 | 8052 | biblio/citation-style-language/american-political-science-association.csl
-2022/12/25 | 7846 | biblio/citation-style-language/citeproc-latex-parser.lua
-2022/12/25 | 7839 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-6C.pdf
-2022/12/25 | 7308 | biblio/citation-style-language/citeproc-node-choose.lua
-2022/12/25 | 72823 | biblio/citation-style-language/citeproc-bibtex-data.lua
-2022/12/25 | 69907 | biblio/citation-style-language/apa.csl
-2022/12/25 | 6283 | biblio/citation-style-language/citeproc-node-sort.lua
-2022/12/25 | 617 | biblio/citation-style-language/citeproc-lua.1
-2022/12/25 | 6123 | biblio/citation-style-language/citeproc-node-locale.lua
-2022/12/25 | 606921 | install/biblio/citation-style-language.tds.zip
-2022/12/25 | 604004 | biblio/citation-style-language.zip
-2022/12/25 | 5978 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-10C.pdf
-2022/12/25 | 56860 | systems/texlive/tlnet/archive/yquant.r65351.tar.xz
-2022/12/25 | 5684 | biblio/citation-style-language/citeproc-node-text.lua
-2022/12/25 | 5528 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-9C.pdf
-2022/12/25 | 5434 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-DosBleu.pdf
-2022/12/25 | 5422 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-8C.pdf
-2022/12/25 | 5338 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-10P.pdf
-2022/12/25 | 5288 | biblio/citation-style-language/nature.csl
-2022/12/25 | 5277 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-DosRouge.pdf
-2022/12/25 | 5178 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-10T.pdf
-2022/12/25 | 5144 | biblio/citation-style-language/citeproc-cli.lua
-2022/12/25 | 50514 | macros/latex/contrib/mismath/mismath.dtx
-2022/12/25 | 50109 | biblio/citation-style-language/citeproc-output.lua
-2022/12/25 | 50042 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-RP.pdf
-2022/12/25 | 4928 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-9P.pdf
-2022/12/25 | 4832 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-9T.pdf
-2022/12/25 | 4808 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-8P.pdf
-2022/12/25 | 4793 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-8T.pdf
-2022/12/25 | 4760 | biblio/citation-style-language/citeproc-node-style.lua
-2022/12/25 | 47520 | biblio/citation-style-language/chicago-fullnote-bibliography.csl
-2022/12/25 | 47063 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-RC.pdf
-2022/12/25 | 4704 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-10T.pdf
-2022/12/25 | 46004 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-VP.pdf
-2022/12/25 | 4599 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-5C.pdf
-2022/12/25 | 45970 | biblio/citation-style-language/chicago-note-bibliography.csl
-2022/12/25 | 45284 | biblio/citation-style-language/citeproc-node-citation.lua
-2022/12/25 | 4505 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-9T.pdf
-2022/12/25 | 4493 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-7C.pdf
-2022/12/25 | 44296 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-RC.pdf
-2022/12/25 | 441996 | systems/texlive/tlnet/archive/fei.doc.r65352.tar.xz
-2022/12/25 | 44134 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-VK.pdf
-2022/12/25 | 43528 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-DT.pdf
-2022/12/25 | 4343 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-4C.pdf
-2022/12/25 | 43386 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-DP.pdf
-2022/12/25 | 4329 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-8T.pdf
-2022/12/25 | 42326 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-VT.pdf
-2022/12/25 | 4223364 | fonts/cabin.zip
-2022/12/25 | 4183 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-5P.pdf
-2022/12/25 | 4170 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-6P.pdf
-2022/12/25 | 4143 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-6T.pdf
-2022/12/25 | 4130 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-5T.pdf
-2022/12/25 | 41117 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-DC.pdf
-2022/12/25 | 408944 | systems/texlive/tlnet/archive/pythonimmediate.doc.r65349.tar.xz
-2022/12/25 | 40766 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-VC.pdf
-2022/12/25 | 4061 | biblio/citation-style-language/citeproc-latex.lua
-2022/12/25 | 40525 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-RP.pdf
-2022/12/25 | 4027 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-3C.pdf
-2022/12/25 | 40270 | macros/latex/contrib/frenchmath/frenchmath.dtx
-2022/12/25 | 3938 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-7P.pdf
-2022/12/25 | 3930 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-4P.pdf
-2022/12/25 | 3923 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-4T.pdf
-2022/12/25 | 39188 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-RT.pdf
-2022/12/25 | 3913 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-7T.pdf
-2022/12/25 | 3863 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-7T.pdf
-2022/12/25 | 3855 | biblio/citation-style-language/CHANGELOG.md
-2022/12/25 | 3733 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-3T.pdf
-2022/12/25 | 37161 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-DC.pdf
-2022/12/25 | 3715 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-3P.pdf
-2022/12/25 | 37016 | biblio/citation-style-language/citation-style-language.sty
-2022/12/25 | 3694 | biblio/citation-style-language/citeproc-ir-node.lua
-2022/12/25 | 3639 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-6T.pdf
-2022/12/25 | 35403 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-DK.pdf
-2022/12/25 | 3506 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-2C.pdf
-2022/12/25 | 35063 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-VP.pdf
-2022/12/25 | 35063 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-JS.pdf
-2022/12/25 | 34646 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-DT.pdf
-2022/12/25 | 3462 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-5T.pdf
-2022/12/25 | 34613 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-RK.pdf
-2022/12/25 | 344 | biblio/citation-style-language/citeproc.lua
-2022/12/25 | 33851 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-DK.pdf
-2022/12/25 | 33819 | biblio/citation-style-language/citeproc-node-names.lua
-2022/12/25 | 33697 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-RT.pdf
-2022/12/25 | 32653 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-VC.pdf
-2022/12/25 | 3254 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-2P.pdf
-2022/12/25 | 3213 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-2T.pdf
-2022/12/25 | 31693 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-VT.pdf
-2022/12/25 | 31583 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-DP.pdf
-2022/12/25 | 31128 | systems/texlive/tlnet/archive/fei.source.r65352.tar.xz
-2022/12/25 | 3005 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-4T.pdf
-2022/12/25 | 2984 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-10P.pdf
-2022/12/25 | 2940 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-9P.pdf
-2022/12/25 | 29166 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-VK.pdf
-2022/12/25 | 2882 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-8P.pdf
-2022/12/25 | 2814 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-3T.pdf
-2022/12/25 | 2766 | biblio/citation-style-language/citeproc-node-label.lua
-2022/12/25 | 269380 | systems/texlive/tlnet/archive/luamodulartables.doc.r65354.tar.xz
-2022/12/25 | 26804 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-RK.pdf
-2022/12/25 | 2672 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-10K.pdf
-2022/12/25 | 2629 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-8K.pdf
-2022/12/25 | 261083 | macros/latex/contrib/frenchmath/frenchmath.pdf
-2022/12/25 | 26012 | biblio/citation-style-language/citeproc-engine.lua
-2022/12/25 | 2578 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-4K.pdf
-2022/12/25 | 257797 | macros/latex/contrib/mismath/mismath.pdf
-2022/12/25 | 25715 | biblio/citation-style-language/csl-locales-ru-RU.xml
-2022/12/25 | 2569 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-7P.pdf
-2022/12/25 | 2568 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-AC.pdf
-2022/12/25 | 2557 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-5K.pdf
-2022/12/25 | 2537 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-9K.pdf
-2022/12/25 | 2528 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-6P.pdf
-2022/12/25 | 25204 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-JN.pdf
-2022/12/25 | 24971 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-DosBleu2.pdf
-2022/12/25 | 24947 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-DosRouge2.pdf
-2022/12/25 | 2493 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-2T.pdf
-2022/12/25 | 2472 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-3K.pdf
-2022/12/25 | 2462 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-6K.pdf
-2022/12/25 | 24466 | biblio/citation-style-language/csl-locales-bg-BG.xml
-2022/12/25 | 244619 | macros/latex/contrib/mismath.zip
-2022/12/25 | 244255 | macros/latex/contrib/frenchmath.zip
-2022/12/25 | 24345 | biblio/citation-style-language/csl-locales-hi-IN.xml
-2022/12/25 | 240 | biblio/citation-style-language/citeproc-lua.lua
-2022/12/25 | 2404 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-5P.pdf
-2022/12/25 | 23553 | biblio/citation-style-language/csl-locales-lv-LV.xml
-2022/12/25 | 23467 | biblio/citation-style-language/csl-locales-th-TH.xml
-2022/12/25 | 2344 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-AT.pdf
-2022/12/25 | 2339 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-AP.pdf
-2022/12/25 | 23360 | biblio/citation-style-language/csl-locales-it-IT.xml
-2022/12/25 | 2328 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-9C.pdf
-2022/12/25 | 231 | biblio/citation-style-language/DEPENDS.txt
-2022/12/25 | 2311 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-8C.pdf
-2022/12/25 | 2310 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-10C.pdf
-2022/12/25 | 23079 | biblio/citation-style-language/chicago-author-date.csl
-2022/12/25 | 23024 | biblio/citation-style-language/csl-locales-el-GR.xml
-2022/12/25 | 2293 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-2K.pdf
-2022/12/25 | 228973 | biblio/citation-style-language/citation-style-language-doc.pdf
-2022/12/25 | 22752 | biblio/citation-style-language/csl-locales-lt-LT.xml
-2022/12/25 | 22627 | biblio/citation-style-language/csl-locales-en-US.xml
-2022/12/25 | 22542 | biblio/citation-style-language/csl-locales-pt-BR.xml
-2022/12/25 | 22472 | biblio/citation-style-language/csl-locales-en-GB.xml
-2022/12/25 | 22454 | biblio/citation-style-language/csl-locales-pt-PT.xml
-2022/12/25 | 22434 | biblio/citation-style-language/csl-locales-es-MX.xml
-2022/12/25 | 22358 | biblio/citation-style-language/csl-locales-nl-NL.xml
-2022/12/25 | 22356 | biblio/citation-style-language/csl-locales-fr-FR.xml
-2022/12/25 | 22353 | biblio/citation-style-language/citeproc-util.lua
-2022/12/25 | 22337 | biblio/citation-style-language/csl-locales-fa-IR.xml
-2022/12/25 | 22218 | biblio/citation-style-language/csl-locales-de-AT.xml
-2022/12/25 | 22143 | biblio/citation-style-language/csl-locales-de-DE.xml
-2022/12/25 | 22122 | biblio/citation-style-language/csl-locales-sr-RS.xml
-2022/12/25 | 22098 | biblio/citation-style-language/csl-locales-fr-CA.xml
-2022/12/25 | 21966 | biblio/citation-style-language/csl-locales-km-KH.xml
-2022/12/25 | 21941 | biblio/citation-style-language/csl-locales-mn-MN.xml
-2022/12/25 | 21904 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-JR.pdf
-2022/12/25 | 21822 | biblio/citation-style-language/csl-locales-he-IL.xml
-2022/12/25 | 21812 | biblio/citation-style-language/csl-locales-vi-VN.xml
-2022/12/25 | 2179 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-AT.pdf
-2022/12/25 | 2174 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-JR.pdf
-2022/12/25 | 21715 | biblio/citation-style-language/csl-locales-sv-SE.xml
-2022/12/25 | 21681 | biblio/citation-style-language/csl-locales-de-CH.xml
-2022/12/25 | 21654 | biblio/citation-style-language/csl-locales-id-ID.xml
-2022/12/25 | 21635 | biblio/citation-style-language/csl-locales-tr-TR.xml
-2022/12/25 | 21623 | biblio/citation-style-language/csl-locales-fi-FI.xml
-2022/12/25 | 21579 | biblio/citation-style-language/csl-locales-cs-CZ.xml
-2022/12/25 | 21576 | biblio/citation-style-language/csl-locales-cy-GB.xml
-2022/12/25 | 21574 | biblio/citation-style-language/csl-locales-sk-SK.xml
-2022/12/25 | 21512 | biblio/citation-style-language/csl-locales-eu.xml
-2022/12/25 | 21482 | biblio/citation-style-language/csl-locales-ja-JP.xml
-2022/12/25 | 21470 | biblio/citation-style-language/csl-locales-da-DK.xml
-2022/12/25 | 2146 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-4P.pdf
-2022/12/25 | 21469 | biblio/citation-style-language/csl-locales-is-IS.xml
-2022/12/25 | 21466 | biblio/citation-style-language/csl-locales-hu-HU.xml
-2022/12/25 | 21462 | biblio/citation-style-language/csl-locales-ro-RO.xml
-2022/12/25 | 21446 | biblio/citation-style-language/csl-locales-pl-PL.xml
-2022/12/25 | 21433 | biblio/citation-style-language/csl-locales-af-ZA.xml
-2022/12/25 | 21414 | biblio/citation-style-language/csl-locales-ko-KR.xml
-2022/12/25 | 21406 | biblio/citation-style-language/csl-locales-es-CL.xml
-2022/12/25 | 21363 | biblio/citation-style-language/csl-locales-hr-HR.xml
-2022/12/25 | 21330 | biblio/citation-style-language/csl-locales-sl-SI.xml
-2022/12/25 | 21327 | biblio/citation-style-language/csl-locales-es-ES.xml
-2022/12/25 | 21323 | biblio/citation-style-language/csl-locales-nb-NO.xml
-2022/12/25 | 21302 | biblio/citation-style-language/csl-locales-la.xml
-2022/12/25 | 21302 | biblio/citation-style-language/csl-locales-ca-AD.xml
-2022/12/25 | 21301 | biblio/citation-style-language/csl-locales-nn-NO.xml
-2022/12/25 | 21261 | biblio/citation-style-language/csl-locales-et-EE.xml
-2022/12/25 | 21225 | biblio/citation-style-language/citeproc-bibtex.lua
-2022/12/25 | 2112 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-3P.pdf
-2022/12/25 | 2093 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-6C.pdf
-2022/12/25 | 20747 | biblio/citation-style-language/csl-locales-uk-UA.xml
-2022/12/25 | 2061 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-7C.pdf
-2022/12/25 | 2044 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-9K.pdf
-2022/12/25 | 2030 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-8K.pdf
-2022/12/25 | 20184 | systems/texlive/tlnet/archive/pythonimmediate.r65349.tar.xz
-2022/12/25 | 2005 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-10K.pdf
-2022/12/25 | 2001 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-JN.pdf
-2022/12/25 | 2000 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-5C.pdf
-2022/12/25 | 19817 | biblio/citation-style-language/csl-locales-ar.xml
-2022/12/25 | 1975 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-DosRouge.pdf
-2022/12/25 | 1975 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-DosNoir.pdf
-2022/12/25 | 1962 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-7K.pdf
-2022/12/25 | 19423 | biblio/citation-style-language/csl-locales-zh-TW.xml
-2022/12/25 | 1937 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-2P.pdf
-2022/12/25 | 19056 | biblio/citation-style-language/csl-locales-zh-CN.xml
-2022/12/25 | 1883 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-6K.pdf
-2022/12/25 | 1860 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-3C.pdf
-2022/12/25 | 1818 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-4C.pdf
-2022/12/25 | 1815 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-7K.pdf
-2022/12/25 | 1808 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-5K.pdf
-2022/12/25 | 1779 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-AP.pdf
-2022/12/25 | 176909 | macros/luatex/latex/luamaths/luamaths.pdf
-2022/12/25 | 1737 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-2C.pdf
-2022/12/25 | 1712 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-3K.pdf
-2022/12/25 | 1702 | biblio/citation-style-language/citeproc-node-layout.lua
-2022/12/25 | 1688 | biblio/citation-style-language/citeproc-nodes.lua
-2022/12/25 | 1675 | biblio/citation-style-language/citeproc-node-number.lua
-2022/12/25 | 1673 | biblio/citation-style-language/README.md
-2022/12/25 | 1664 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-4K.pdf
-2022/12/25 | 1648 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-AC.pdf
-2022/12/25 | 1618 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-2K.pdf
-2022/12/25 | 16054 | biblio/citation-style-language/modern-humanities-research-association.csl
-2022/12/25 | 1595 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv2-AK.pdf
-2022/12/25 | 15895 | biblio/citation-style-language/citeproc-element.lua
-2022/12/25 | 15691 | biblio/citation-style-language/citation-style-language-doc.tex
-2022/12/25 | 1549 | macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv3-AK.pdf
-2022/12/25 | 15413 | biblio/citation-style-language/ieee.csl
-2022/12/25 | 13594 | biblio/citation-style-language/citeproc-node-date.lua
-2022/12/25 | 11958 | biblio/citation-style-language/vancouver.csl
-2022/12/25 | 11209 | biblio/citation-style-language/modern-language-association.csl
-2022/12/25 | 11060 | biblio/citation-style-language/american-sociological-association.csl
-2022/12/25 | 11034 | biblio/citation-style-language/american-medical-association.csl
-2022/12/25 | 10723 | biblio/citation-style-language/harvard-cite-them-right.csl
-2022/12/25 | 1067 | macros/latex/contrib/frenchmath/README.md
-2022/12/25 | 1040 | systems/texlive/tlnet/archive/luamodulartables.r65354.tar.xz
-2022/12/25 | 10117 | biblio/citation-style-language/citeproc-node-bibliography.lua
-2022/12/25 | 10019 | biblio/citation-style-language/american-chemical-society.csl
diff --git a/biblio/ctan-bibdata/ctan.bib b/biblio/ctan-bibdata/ctan.bib
index abf4406f89..ff77384afe 100644
--- a/biblio/ctan-bibdata/ctan.bib
+++ b/biblio/ctan-bibdata/ctan.bib
@@ -1,7 +1,7 @@
%% bib file of all CTAN packages
%% (C) Herbert Voß
%%
-%% created at 01-01-2023, 02:01:34
+%% created at 02-01-2023, 02:01:26
%%
%% This file is provided under the terms of the LPPL v1.3 or
@@ -8870,7 +8870,7 @@
title = {The \texttt{BLOpenType} package},
subtitle = {A basic LuaTeX OpenType handler},
author = {Luis Rivera},
- date = {2022-12-29},
+ date = {2023-01-01},
version = {0.0},
license = {lppl1.3c,mit},
mirror = {https://mirror.ctan.org/macros/luatex/generic/blopentype},
@@ -10498,7 +10498,7 @@
title = {The \texttt{calxxxx-yyyy} package},
subtitle = {Print a calendar for a group of years},
author = {Hans-Martin Münch},
- date = {2022-12-31},
+ date = {2023-01-01},
version = {20.23a},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/calxxxx-yyyy},
@@ -21078,10 +21078,10 @@
title = {The \texttt{ElegantBook} package},
subtitle = {An Elegant \LaTeX{} Template for Books},
author = {Dongsheng Deng and Liam Huang},
- date = {2022-12-31},
+ date = {2023-01-01},
version = {4.5},
license = {lppl1.3c},
- mirror = {https://mirror.ctan.org/macros/latex/contrib/elegantbook},
+ mirror = {https://mirror.ctan.org/obsolete/macros/latex/contrib/elegantbook},
url = {https://ctan.org/pkg/elegantbook},
}
@@ -21089,10 +21089,10 @@
title = {The \texttt{ElegantNote} package},
subtitle = {Elegant \LaTeX{} Template for Notes},
author = {Dongsheng Deng},
- date = {2022-12-31},
+ date = {2023-01-01},
version = {2.50},
license = {lppl1.3c},
- mirror = {https://mirror.ctan.org/macros/latex/contrib/elegantnote},
+ mirror = {https://mirror.ctan.org/obsolete/macros/latex/contrib/elegantnote},
url = {https://ctan.org/pkg/elegantnote},
}
@@ -21100,10 +21100,10 @@
title = {The \texttt{ElegantPaper} package},
subtitle = {An Elegant \LaTeX{} Template for Working Papers},
author = {Dongsheng Deng},
- date = {2022-12-31},
+ date = {2023-01-01},
version = {0.11},
license = {lppl1.3c},
- mirror = {https://mirror.ctan.org/macros/latex/contrib/elegantpaper},
+ mirror = {https://mirror.ctan.org/obsolete/macros/latex/contrib/elegantpaper},
url = {https://ctan.org/pkg/elegantpaper},
}
@@ -28172,7 +28172,7 @@
title = {The \texttt{gfdl} package},
subtitle = {Support for using GFDL in \LaTeX{}},
author = {{Unknown}},
- date = {2022-12-31},
+ date = {2023-01-01},
version = {0.1},
license = {gpl3+,fdl},
mirror = {https://mirror.ctan.org/macros/latex/contrib/gfdl},
@@ -37597,8 +37597,8 @@
title = {The \texttt{latexindent} package},
subtitle = {Indent a \LaTeX{} document, highlighting the programming structure},
author = {Chris Hughes},
- date = {2022-12-05},
- version = {3.19.1},
+ date = {2023-01-01},
+ version = {3.20},
license = {gpl3},
mirror = {https://mirror.ctan.org/support/latexindent},
url = {https://ctan.org/pkg/latexindent},
@@ -40807,7 +40807,7 @@
title = {The \texttt{luacomplex} package},
subtitle = {Operations on complex numbers inside \LaTeX{} documents using Lua},
author = {{Chetan Shirore and Dr. Ajit Kumar}},
- date = {2022-12-29},
+ date = {2023-01-01},
version = {1.0},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/luatex/latex/luacomplex},
@@ -40836,7 +40836,7 @@
title = {The \texttt{luagcd} package},
subtitle = {Computation of gcd of integers inside \LaTeX{} using Lua},
author = {{Chetan Shirore and Dr. Ajit Kumar}},
- date = {2022-12-30},
+ date = {2023-01-01},
version = {1.0},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/luatex/latex/luagcd},
@@ -53860,8 +53860,8 @@
title = {The \texttt{ProfCollege} package},
subtitle = {A \LaTeX{} package for French maths teachers in college},
author = {Christophe Poulain},
- date = {2022-11-27},
- version = {0.99-z-c},
+ date = {2023-01-01},
+ version = {0.99-z-d},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/profcollege},
url = {https://ctan.org/pkg/profcollege},
@@ -71648,7 +71648,7 @@
title = {The \texttt{ukbill} package},
subtitle = {A class for typesetting UK legislation},
author = {Elijah Z Granet},
- date = {2022-12-15},
+ date = {2023-01-01},
version = {1.0.2},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/ukbill},
@@ -74729,8 +74729,8 @@
title = {The \texttt{witharrows} package},
subtitle = {“Aligned” math environments with arrows for comments},
author = {François Pantigny},
- date = {2022-04-20},
- version = {2.7},
+ date = {2023-01-01},
+ version = {2.8},
license = {lppl1.3},
mirror = {https://mirror.ctan.org/macros/generic/witharrows},
url = {https://ctan.org/pkg/witharrows},
diff --git a/biblio/ctan-bibdata/ctan.pdf b/biblio/ctan-bibdata/ctan.pdf
index 475a57bd60..b4ebdd2732 100644
--- a/biblio/ctan-bibdata/ctan.pdf
+++ b/biblio/ctan-bibdata/ctan.pdf
Binary files differ
diff --git a/macros/generic/witharrows/witharrows-french.pdf b/macros/generic/witharrows/witharrows-french.pdf
index ebb65eab90..0144504434 100644
--- a/macros/generic/witharrows/witharrows-french.pdf
+++ b/macros/generic/witharrows/witharrows-french.pdf
Binary files differ
diff --git a/macros/generic/witharrows/witharrows-french.tex b/macros/generic/witharrows/witharrows-french.tex
index fd610eef08..cf2c940912 100644
--- a/macros/generic/witharrows/witharrows-french.tex
+++ b/macros/generic/witharrows/witharrows-french.tex
@@ -71,6 +71,7 @@ version~\myfileversion\space de \pkg{witharrows}, à la date du~\myfiledate.}}
\maketitle
+
\begin{abstract}
L'extension \pkg{witharrows} fournit des environments |{WithArrows}| et
|{DispWithArrows}| similaires aux environnements |{aligned}| et |{align}| de
@@ -93,7 +94,7 @@ l'extension LaTeX.
\medskip
Cette extension peut être utilisée avec |xelatex|, |lualatex|, |pdflatex| mais aussi avec le cheminement classique
|latex|-|dvips|-|ps2pdf| (ou Adobe Distiller). L'extension \pkg{witharrows} charge les extensions \pkg{l3keys2e},
-\pkg{xparse}, \pkg{tikz}, \pkg{varwidth} ainsi que les bibliothèques Tikz \pkg{arrows.meta} et \pkg{bending}. L'utilisateur final n'a qu'à charger l'extension \pkg{nicematrix} avec
+\pkg{xparse}, \pkg{tikz}, \pkg{varwidth} ainsi que les bibliothèques Tikz \pkg{arrows.meta} et \pkg{bending}. L'utilisateur final n'a qu'à charger l'extension \pkg{witharrows} avec
l'instruction habituelle : |\usepackage{witharrows}|.
\medskip
@@ -481,7 +482,6 @@ option est similaire au préambule d'un environnement |{array}|: il s'agit d'une
|l| mais aussi |R|, |C| et |L|.
\smallskip
-\colorbox{yellow!50}{\textbf{Nouveau 2.6}}\enskip
Les lettres |R|, |C| et |L| placent des groupes vides |{}| qui permettent un espacement correct lorsque ces
colonnes contiennent des symboles de type |\mathrel| (comme $=$, $\le$, etc.) ou |\mathbin| (comme $+$, $×$, etc.).
Ce système est inspiré par l'environnement |{IEEEeqnarray}| de \pkg{IEEEtrantools}.
@@ -1530,10 +1530,8 @@ A & = A_1 \Arrow{première étape} \\
\bigskip
Avec l'option |fleqn|, l'environnement est composé calé à gauche (d'une manière similaire
à l'option |fleqn| des classes standard de LaTeX). Dans ce cas, la marge gauche peut être réglée avec
-l'option |mathindent| (qui a un nom inspiré du paramètre |\mathindent| de LaTeX\footnote{En LaTeX, |mathindent| est
-une dimension (|dim|) mais devrait devenir un ressort (|skip|) dans une prochaine version de LaTeX. Pour le moment, le
-paramètre |mathindent| de \pkg{witharrows} est une dimension.}). La valeur initiale
-pour cette option est de 25~pt.
+l'option |mathindent| (qui a un nom inspiré du paramètre |\mathindent| de LaTeX). La valeur initiale pour cette
+option est de 25~pt.
\begin{Verbatim}
\begin{DispWithArrows}[~emphase#fleqn,mathindent = 1cm@]
@@ -1805,7 +1803,7 @@ xyz = -15 \label{dernière-équation}
Le système complet est l'équation \ref{système} (cette référence a été obtenue avec |\ref{système}|) et la
dernière équation est l'équation \ref{dernière-équation} (référence obtenue avec
|\ref{dernière-équation}|). Notons que |\ref*|, utilisé dans le code ci-dessus, est une variante de
-|ref| proposée par \pkg{hyperref} pour composer une référence sans créer de lien.
+|ref| qui compose une référence sans créer de lien hypertexte (même quand \pkg{hyperref} est chargé).
\bigskip
On peut souhaiter remplacer l'accolade gauche par un autre délimiteur extensible (gauche). On peut le faire avec
@@ -1935,6 +1933,44 @@ environnement (via les arguments optionnels) ou bien encore dans une autre comma
Pour un exemple d'utilisation, voir p.~\pageref{example-WithArrowsRightX}.
+\bigskip
+\subsection{La clé right-overlap}
+
+\colorbox{yellow!50}{\textbf{Nouveau 2.8}}
+
+La clé |right-overlap| est une clé booléenne dont la valeur initiale est |true|. Elle concerne uniquement les
+environnements |{WithArrows}|.
+
+Quand la clé |right-overlap| est active, les flèches (et leurs étiquettes) sont tracées en débordement et n'entrent
+donc pas dans le calcul de la boîte TeX contenant l'environnement |{WithArrows}|.
+
+Quand la clé |right-overlap| est mise à |false| (dans |\WithArrowsOptions| ou bien dans un environnement
+|{WithArrows}| individuel) le débord vers la droite est pris en compte dans le calcul des dimensions de la boîte
+englobante.
+
+\begin{Verbatim}
+$\left\{\begin{WithArrows}[c,format = rCrCl,~emphase#right-overlap=false@]
+2x & + & 3y & = & 5 \Arrow{on ajoute $L_1$ à $L_2$}\\
+-2x & - & 5y & = & 2
+\end{WithArrows}\right.$\quad
+$\left\{\begin{WithArrows}[c,format = rCrCl]
+2x & + & 3y & = & 5 \\
+ & - & 2y & = & 7
+\end{WithArrows}\right.$
+\end{Verbatim}
+
+\medskip
+$\left\{\begin{WithArrows}[c,format = rCrCl,right-overlap=false]
+2x & + & 3y & = & 5 \Arrow{on ajoute $L_1$ à $L_2$}\\
+-2x & - & 5y & = & 2
+\end{WithArrows}\right.$\quad
+$\left\{\begin{WithArrows}[c,format = rCrCl]
+2x & + & 3y & = & 5 \\
+ & - & 2y & = & 7
+\end{WithArrows}\right.$
+
+\bigskip
+Le réglage |right-overlap = false| peut aussi être utile en conjonction avec la classe |standalone|.
\bigskip
\subsection{Positionnement vertical des flèches}
@@ -1961,8 +1997,8 @@ $\begin{WithArrows}[interline=1mm, adjust = 0pt]
\end{WithArrows}$
\begin{tikzpicture}[remember picture,overlay,blue]
-\draw (wa-\WithArrowsLastEnv-1-r.south) to ++(1,0) coordinate (B) to ++(0.1,0) ;;
-\draw (A) to ++(1,0) coordinate (C) to ++(0.1,0) ;;
+\draw (wa-\WithArrowsLastEnv-1-r.south) to ++(1,0) coordinate (B) to ++(0.1,0) ;
+\draw (A) to ++(1,0) coordinate (C) to ++(0.1,0) ;
\draw (B) -- (C) ;
\draw[<-] (B) to ++(0,0.2) ;
\draw[<-] (C) to ++(0,-0.2) ;
@@ -1983,7 +2019,7 @@ est |end-adjust| sont égaux à $0.4$~ex.
\bigskip
Voici par exemple le comportement sans le mécanisme de |start-adjust| et
-|end-adjust| (c'était le comportement par défaut dans les versions antérieures à la version 1.13).
+|end-adjust| :
\begin{Verbatim}
$\begin{WithArrows}~emphase#[start-adjust=0pt, end-adjust=0pt]@
A & = (a+1)^2 \Arrow{on développe} \\
diff --git a/macros/generic/witharrows/witharrows.dtx b/macros/generic/witharrows/witharrows.dtx
index ca8955ce21..6c28c3c756 100644
--- a/macros/generic/witharrows/witharrows.dtx
+++ b/macros/generic/witharrows/witharrows.dtx
@@ -1,6 +1,6 @@
%\iffalse meta-comment
%
-% Copyright (C) 2017-2022 by F. Pantigny
+% Copyright (C) 2017-2023 by F. Pantigny
% -----------------------------------
%
% This file may be distributed and/or modified under the
@@ -15,8 +15,8 @@
%
% \fi
% \iffalse
-\def\myfileversion{2.7}
-\def\myfiledate{2022/04/20}
+\def\myfileversion{2.8}
+\def\myfiledate{2023/01/01}
%
%
%<*batchfile>
@@ -26,7 +26,7 @@
\usedir{tex/latex/witharrows}
\preamble
-Copyright (C) 2017-2022 by F. Pantigny
+Copyright (C) 2017-2023 by F. Pantigny
-----------------------------------
This file may be distributed and/or modified under the
@@ -523,7 +523,6 @@ version 2005/12/01 or later.
% but also |R|, |C| and |L|.
%
% \smallskip
-% \colorbox{yellow!50}{\textbf{New 2.6}}\enskip
% The letters |R|, |C| and |L| add empty groups |{}| which provide correct
% spaces when these columns contain symbols with the type |\mathrel| (such as
% $=$, $\leq$, etc.) or |\mathbin| (such as $+$, $\times$, etc.). This system is
@@ -1599,10 +1598,7 @@ version 2005/12/01 or later.
% With the option |fleqn|, the environment is composed flush left (in a way
% similar to the option |fleqn| of the standard classes of LaTeX). In this case,
% the left margin can be controlled with the option |mathindent| (with a name
-% inspired by the parameter |\mathindent| of standard LaTeX\footnote{In LaTeX,
-% |mathindent| is a dimension (|dim|) and not a glue (|skip|) but should become
-% a skip in a future version of LaTeX. As of now, the parameter |mathindent| of
-% \pkg{witharrows} is a dimension.}). The initial value
+% inspired by the parameter |\mathindent| of standard LaTeX. The initial value
% of this parameter is 25~pt.
%
% \begin{Verbatim}
@@ -1879,9 +1875,9 @@ version 2005/12/01 or later.
% The whole system is the equation \ref{system} (this reference has been coded
% by |\ref{system}|) whereas the last equation is the equation
% \ref{last-equation} (this reference has been coded by
-% |\ref{last-equation}|). The command |\ref*| used in the code above is
-% provided by \pkg{hyperref}. It's a variant of |\ref| which doesn't create
-% interactive link.
+% |\ref{last-equation}|). The command |\ref*| used in the code above is a
+% variant of the command |\ref| which does not create interactive link (even when
+% \pkg{hyperref} is loaded).
%
% \bigskip
% With the option |replace-left-brace-by|, it's possible to replace the
@@ -2014,6 +2010,46 @@ version 2005/12/01 or later.
%
% For an example of use, see p.~\pageref{example-WithArrowsRightX}.
%
+% \subsection{The key right-overlap}
+%
+% \colorbox{yellow!50}{\textbf{New 2.8}}
+%
+% The key |right-overlap| is a boolean key whose initial value is |true|. It
+% deals with the environments |{WithArrows}| only.
+%
+% When the key |right-overlap| is in force, the arrows (and their labels) are
+% drawn in an overlapping position and are not relevant for the computation of
+% the dimensions of the TeX box containing the environment |{WithArrows}|.
+%
+% When the key |right-overlap| is set to |false| (with |\WithArrowsOptions| or
+% whithin an individual environment |{WithArrows}|), the overlapping on the
+% right is taken into account in the dimensions of the encompassing box.
+%
+%
+% \begin{Verbatim}
+% $\left\{\begin{WithArrows}[c,format = rCrCl,~emphase#right-overlap=false@]
+% 2x & + & 3y & = & 5 \Arrow{we add $L_1$ to $L_2$}\\
+% -2x & - & 5y & = & 2
+% \end{WithArrows}\right.$\quad
+% $\left\{\begin{WithArrows}[c,format = rCrCl]
+% 2x & + & 3y & = & 5 \\
+% & - & 2y & = & 7
+% \end{WithArrows}\right.$
+% \end{Verbatim}
+%
+% \medskip
+% $\left\{\begin{WithArrows}[c,format = rCrCl,right-overlap=false]
+% 2x & + & 3y & = & 5 \Arrow{we add $L_1$ to $L_2$}\\
+% -2x & - & 5y & = & 2
+% \end{WithArrows}\right.$\quad
+% $\left\{\begin{WithArrows}[c,format = rCrCl]
+% 2x & + & 3y & = & 5 \\
+% & - & 2y & = & 7
+% \end{WithArrows}\right.$
+%
+% \bigskip
+% The tuning |right-overlap = false| may also be useful in conjunction with the class |standalone|.
+%
%
% \bigskip
% \subsection{Vertical positioning of the arrows}
@@ -2040,8 +2076,8 @@ version 2005/12/01 or later.
% \end{WithArrows}$
%
% \begin{tikzpicture}[remember picture,overlay,blue]
-% \draw (wa-\WithArrowsLastEnv-1-r.south) to ++(1,0) coordinate (B) to ++(0.1,0) ;;
-% \draw (A) to ++(1,0) coordinate (C) to ++(0.1,0) ;;
+% \draw (wa-\WithArrowsLastEnv-1-r.south) to ++(1,0) coordinate (B) to ++(0.1,0) ;
+% \draw (A) to ++(1,0) coordinate (C) to ++(0.1,0) ;
% \draw (B) -- (C) ;
% \draw[<-] (B) to ++(0,0.2) ;
% \draw[<-] (C) to ++(0,-0.2) ;
@@ -2062,7 +2098,7 @@ version 2005/12/01 or later.
%
% \bigskip
% Here is for example the behaviour without the mechanism of |start-adjust| and
-% |end-adjust| (this was the standard behaviour for versions prior to 1.13).
+% |end-adjust|:
% % \begin{Verbatim}
% $\begin{WithArrows}~emphase#[start-adjust=0pt, end-adjust=0pt]@
% A & = (a+1)^2 \Arrow{we expand} \\
@@ -2569,8 +2605,8 @@ version 2005/12/01 or later.
% Assume we want to draw a loop of numbered arrows. In this purpose, it's
% possible to write a dedicated command |\NumberedLoop| which will do the job
% when used in |code-after|. In the following example, we write this command with
-% |\NewDocumentCommand| (of \pkg{xparse}) and |\foreach| of \pkg{pgffor} (both
-% packages are loaded when \pkg{witharrows} is loaded).
+% |\NewDocumentCommand| (of L3) and |\foreach| of \pkg{pgffor} (which
+% is loaded when \pkg{witharrows} is loaded).
%
% \begin{Verbatim}
% \NewDocumentCommand \NumberedLoop {}
@@ -2680,22 +2716,8 @@ version 2005/12/01 or later.
% \end{macrocode}
%
%
-% \medskip
-% \begin{macrocode}
-\msg_new:nnn { witharrows } { expl3~too~old }
- {
- Your~version~of~LaTeX~(especially~expl3)~is~too~old.~
- You~can~go~on~but~you~will~probably~have~other~errors~
- if~you~use~the~functionalities~of~witharrows.
- }
-\cs_if_exist:NF \seq_set_map_x:NNn
- { \msg_error:nn { witharrows } { expl3~too~old } }
-% \end{macrocode}
-%
% \bigskip
-% The package \pkg{xparse} is still loaded for use on Overleaf.
% \begin{macrocode}
-\RequirePackage { xparse }
\RequirePackage { varwidth }
%</LaTeX>
% \end{macrocode}
@@ -2737,7 +2759,12 @@ version 2005/12/01 or later.
% \bigskip
% \begin{macrocode}
\cs_new_protected:Npn \@@_msg_new:nn { \msg_new:nnn { witharrows } }
-\cs_new_protected:Npn \@@_msg_new:nnn { \msg_new:nnnn { witharrows } }
+\cs_new_protected:Npn \@@_msg_new:nnn #1 #2 #3
+ {
+ \bool_if:NTF \c_@@_messages_for_Overleaf_bool
+ { \msg_new:nnn { witharrows } { #1 } { #2 \\ #3 } }
+ { \msg_new:nnnn { witharrows } { #1 } { #2 } { #3 } }
+ }
\cs_new_protected:Npn \@@_msg_redirect_name:nn
{ \msg_redirect_name:nnn { witharrows } }
\cs_new_protected:Npn \@@_error:n { \msg_error:nn { witharrows } }
@@ -2747,6 +2774,25 @@ version 2005/12/01 or later.
\cs_generate_variant:Nn \@@_error:nn { n x }
% \end{macrocode}
%
+% \bigskip
+% We also create a command which will genereate usually an error but only a
+% warning on Overleaf. The argument is given by currification.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_error_or_warning:n
+ { \bool_if:NTF \c_@@_messages_for_Overleaf_bool \@@_warning:n \@@_error:n }
+% \end{macrocode}
+%
+% We try to detect whether the compilation is done on Overleaf. We use
+% |\c_sys_jobname_str| because, with Overleaf, the value of |\c_sys_jobname_str|
+% is always ``|output|''.
+% \begin{macrocode}
+\bool_set:Nn \c_@@_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
+ }
+% \end{macrocode}
+%
% \medskip
% We define a set of keys |WithArrows/package| for these options.
% \begin{macrocode}
@@ -2780,6 +2826,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { footnote~with~footnotehyper~package }
{
+ Footnote~forbidden.\\
You~can't~use~the~option~'footnote'~because~the~package~
footnotehyper~has~already~been~loaded.~
If~you~want,~you~can~use~the~option~'footnotehyper'~and~the~footnotes~
@@ -3108,7 +3155,7 @@ version 2005/12/01 or later.
% \subsection{Variables}
%
% The boolean |\l_@@_in_WithArrows_bool| will be raised in an environment
-% |{WithArrows}| and the boolean |\l_@@_in_dispwitharrows_bool| will be raised
+% |{WithArrows}| and the boolean |\l_@@_in_DispWithArrows_bool| will be raised
% in an environment |{DispWithArrows}| or |{DispWithArrows*}|. The boolean
% |\l_@@_in_code_after_bool| will be raised during the execution of the
% |code-after| (option |code-after|).
@@ -3337,6 +3384,17 @@ version 2005/12/01 or later.
\dim_new:N \l_@@_xoffset_for_o_arrows_dim
\dim_set:Nn \l_@@_xoffset_for_o_arrows_dim { 2 mm }
% \end{macrocode}
+%
+%
+% \bigskip
+% The following boolean corresponds to the key |right-overlap|. When that key is
+% |false|, the overlap on the right of the arrows (and their labels) is computed
+% and it is used to change the width of the environment |{WithArrows}| in order
+% to include the arrows on the right (and, hence, there is no overlap).
+% \begin{macrocode}
+\bool_new:N \l_@@_right_overlap_bool
+\bool_set_true:N \l_@@_right_overlap_bool
+% \end{macrocode}
%
% \bigskip
% \subsection{The definition of the options}
@@ -3405,7 +3463,7 @@ version 2005/12/01 or later.
\str_set:Nx \l_@@_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_@@_tikz_code_tl,
+ tikz-code .tl_set:N = \l_@@_tikz_code_tl ,
tikz-code .initial:n = \draw~(#1)~to~node{#3}~(#2)~; ,
tikz-code .value_required:n = true ,
displaystyle .bool_set:N = \l_@@_displaystyle_bool ,
@@ -3490,7 +3548,9 @@ version 2005/12/01 or later.
c .code:n = \int_set:Nn \l_@@_pos_env_int 1 ,
c .value_forbidden:n = true ,
b .code:n = \int_set:Nn \l_@@_pos_env_int 2 ,
- b .value_forbidden:n = true
+ b .value_forbidden:n = true ,
+ right-overlap .bool_set:N = \l_@@_right_overlap_bool ,
+ right-overlap .value_required:n = true
}
% \end{macrocode}
%
@@ -3526,7 +3586,7 @@ version 2005/12/01 or later.
{
fleqn .bool_set:N = \l_@@_fleqn_bool ,
fleqn .default:n = true ,
- mathindent .dim_set:N = \l_@@_mathindent_dim ,
+ mathindent .skip_set:N = \l_@@_mathindent_skip ,
mathindent .initial:n = 25 pt ,
mathindent .value_required:n = true ,
%<*LaTeX>
@@ -3670,7 +3730,7 @@ version 2005/12/01 or later.
\@@_set_seq_of_str_from_clist:Nn \l_@@_options_WithArrows_seq
{
adjust, b, c, code-after, code-before, command-name,
- displaystyle, end-adjust,
+ right-overlap, displaystyle, end-adjust,
format, group, groups, i,
interline, jot, ll,
lr, max-length-of-arrow, more-columns, name,
@@ -3743,7 +3803,8 @@ version 2005/12/01 or later.
\seq_new:N \l_@@_options_WithArrowsOptions_seq
\@@_set_seq_of_str_from_clist:Nn \l_@@_options_WithArrowsOptions_seq
{
- allow-duplicate-names, b, c, command-name, more-columns, tikz-code, adjust,
+ allow-duplicate-names, b, c, command-name, right_overlap,
+ more-columns, tikz-code, adjust,
displaystyle, end-adjust, fleqn, group, groups, i, interline, jot, ll, lr,
mathindent, max-length-of-arrow, no-arrows, up-and-down, rl, rr,
show-node-names, show-nodes, start-adjust, t, tikz, wrap-lines, xoffset,
@@ -4229,7 +4290,6 @@ version 2005/12/01 or later.
% \end{macrocode}
%
%
-%
% \bigskip
% In (the last column of) |{DispWithArrows}|, it's possible to put several
% labels (for the same number of equation). That's why these labels will be
@@ -4275,6 +4335,22 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \medskip
+% The dimension |\g_@@_overlap_x_dim| will be the maximal overlap on the right
+% of the arrows (and their labels) drawn in the environment |{WithArrows}|. The
+% dimension |\l_@@_delta_x_dim| will be the difference of abscissa between the
+% right side of the alignment (|\halign|) and the left side of the arrow.
+% \begin{macrocode}
+ \bool_if:NF \l_@@_right_overlap_bool
+ {
+ \bool_if:NT \l_@@_in_WithArrows_bool
+ {
+ \dim_gzero_new:N \g_@@_overlap_x_dim
+ \dim_zero_new:N \l_@@_delta_x_dim
+ }
+ }
+% \end{macrocode}
+%
+% \medskip
% Now we link the command |\Arrow| (or the corresponding command with a name
% given by the user with the option |command-name|: that's why the following line
% must be after the loading of the options) to the command
@@ -4478,7 +4554,7 @@ version 2005/12/01 or later.
\halign to \l_@@_linewidth_dim
\bgroup
\bool_if:NT \l_@@_fleqn_bool
- { \skip_horizontal:N \l_@@_mathindent_dim }
+ { \skip_horizontal:N \l_@@_mathindent_skip }
}
\int_gincr:N \g_@@_line_int
\int_gzero:N \g_@@_col_int
@@ -4581,6 +4657,11 @@ version 2005/12/01 or later.
\fi:
% \end{macrocode}
%
+% \begin{macrocode}
+ \box_clear_new:N \l_@@_env_box
+ \hbox_set:Nw \l_@@_env_box
+% \end{macrocode}
+%
% \bigskip
% The environment begins with a |\vtop|, a |\vcenter| or a
% |\vbox|\footnote{Notice that the use of |\vtop| seems color-safe here...}
@@ -4589,6 +4670,7 @@ version 2005/12/01 or later.
% error is raised if the environment is used outside math mode.} and therefore,
% we can use |\vcenter|.
% \begin{macrocode}
+ \int_compare:nNnT \l_@@_pos_env_int = 1 \c_math_toggle_token
\int_case:nn \l_@@_pos_env_int { 0 \vtop 1 \vcenter 2 \vbox }
\bgroup
% \end{macrocode}
@@ -4632,9 +4714,9 @@ version 2005/12/01 or later.
%
%
% \bigskip
-% We begin the second part of the environment |{WithArrows}|. We have two
-% |\egroup|\,: one for the |\halign| and one for the |\vtop| (or |\vcenter| or
-% |\vbox|).
+% We begin the second part of the environment |{WithArrows}|. We have three
+% |\egroup|\,: one for the |\halign|, one for the |\vtop| (or |\vcenter| or
+% |\vbox|) and one for the |\hbox_set:Nn \l_@@_env_box|.
% \begin{macrocode}
%<*plain-TeX>
\cs_new_protected:Npn \endWithArrows
@@ -4643,8 +4725,20 @@ version 2005/12/01 or later.
\\
\egroup
\egroup
+ \int_compare:nNnT \l_@@_pos_env_int = 1 \c_math_toggle_token
+ \hbox_set_end:
\@@_post_halign:
% \end{macrocode}
+% We want to add white space on the right side of the box in order to take into
+% account the arrows and their labels.
+% \begin{macrocode}
+ \bool_if:NF \l_@@_right_overlap_bool
+ {
+ \box_set_wd:Nn \l_@@_env_box
+ { \g_@@_overlap_x_dim + \box_wd:N \l_@@_env_box }
+ }
+ \box_use_drop:N \l_@@_env_box
+% \end{macrocode}
%
% \bigskip
% If the option |footnote| or the option |footnotehyper| is used, then we
@@ -4772,10 +4866,9 @@ version 2005/12/01 or later.
% \subsubsection{The command of end of row}
%
% We give now the definition of |\@@_cr:| which is the definition of |\\| in an
-% environment |{WithArrows}|. The two \pkg{expl3} commands
-% |\group_align_safe_begin:| and |\group_align_safe_end:| are specifically
-% designed for this purpose: test the token that follows in an |\halign|
-% structure.
+% environment |{WithArrows}|. The two commands |\group_align_safe_begin:| and
+% |\group_align_safe_end:| are specifically designed for this purpose: test the
+% token that follows in an |\halign| structure.
%
% First, we remove an eventual token |*| (just after the |\\|: there should not
% be space between the two) since the commands |\\| and |\\*| are equivalent in
@@ -4814,16 +4907,19 @@ version 2005/12/01 or later.
%<*LaTeX>
\cs_new_protected:Npn \@@_cr_ii: [ #1 ]
{
- \peek_meaning_ignore_spaces:NTF \end
- {
- \@@_cr_iii:n { #1 }
+ \peek_remove_spaces:n
+ {
+ \peek_meaning:NTF \end
+ {
+ \@@_cr_iii:n { #1 }
% \end{macrocode}
% The analyse of the argument of the token |\end| must be after the
% |\group_align_safe_end:| which is the beginning of |\@@_cr_iii:n|.
% \begin{macrocode}
- \@@_analyze_end:Nn
+ \@@_analyze_end:Nn
+ }
+ { \@@_cr_iii:n { #1 } }
}
- { \@@_cr_iii:n { #1 } }
}
% \end{macrocode}
%
@@ -4892,7 +4988,8 @@ version 2005/12/01 or later.
% \begin{macrocode}
\bool_if:NT \c_@@_hyperref_loaded_bool
{
- \str_set:Nn \This@name { equation }
+ % the following line is probably useless (2022/05/16)
+ % \str_set:Nn \This@name { equation }
\hyper@refstepcounter { equation }
}
% \end{macrocode}
@@ -5345,7 +5442,7 @@ version 2005/12/01 or later.
\hbox_to_wd:nn \l_@@_linewidth_dim
{
\bool_if:NTF \l_@@_fleqn_bool
- { \skip_horizontal:N \l_@@_mathindent_dim }
+ { \skip_horizontal:N \l_@@_mathindent_skip }
\hfil
\hbox_to_wd:nn \g_@@_alignment_dim
{
@@ -5677,9 +5774,9 @@ version 2005/12/01 or later.
% of arrows (equal to the initial line of the first arrow of the group because
% the option |jump| is always positive).
%
-% |\l_@@_first_arrows_seq| will be the list the arrows of the group starting at
-% the first line of the group (we may have several arrows starting from the same
-% line). We have to know all these arrows because of the adjustement by
+% |\l_@@_first_arrows_seq| will be the list of the arrows of the group starting
+% at the first line of the group (we may have several arrows starting from the
+% same line). We have to know all these arrows because of the adjustement by
% |\l_@@_start_adjust_dim|.
%
% |\l_@@_last_line_of_group_int| will be the last line involved in the group
@@ -5696,7 +5793,7 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \medskip
-% The boolean |\l_@@_new_group_bool| is a switch that we will use the indicate
+% The boolean |\l_@@_new_group_bool| is a switch that we will use to indicate
% that a group is finished (and the lines of that group have to be drawn). This
% boolean is not directly connected to the option |new-group| of an individual
% arrow.
@@ -6168,6 +6265,29 @@ version 2005/12/01 or later.
}
}
% \end{macrocode}
+% The dimension |\l_@@_delta_x_dim| is the difference of abscissa between the
+% right side of the alignment (|\halign|) and the left side of the arrow.
+% \begin{macrocode}
+ \bool_if:NF \l_@@_right_overlap_bool
+ {
+ \bool_if:NT \l_@@_in_WithArrows_bool
+ {
+ \pgfpicture
+ \pgfrememberpicturepositiononpagetrue
+ \pgfpointanchor { wa - \l_@@_prefix_str - 1 - r } { south }
+ \int_compare:nNnTF \l_@@_pos_arrow_int < 5
+ {
+ \dim_set:Nn \l_@@_delta_x_dim
+ {
+ \pgf@x -
+ ( \dim_min:nn \g_@@_x_initial_dim \g_@@_x_final_dim )
+ }
+ }
+ { \dim_set:Nn \l_@@_delta_x_dim { \pgf@x - \l_@@_x_dim } }
+ \endpgfpicture
+ }
+ }
+% \end{macrocode}
%
% \bigskip
% Eventually, we can draw the arrow with the code in |\l_@@_tikz_code_tl|. We
@@ -6218,19 +6338,35 @@ version 2005/12/01 or later.
every~path / .style = WithArrows / arrow
]
% \end{macrocode}
-% You keep track of the bouding box because we want to compute the total width
-% of the arrow (with the label) for the arrows of type |over|.
+% You keep track of the bounding box because we want to compute the total width
+% of the arrow (with the label) for the arrows of type |over| and also for the
+% actualization of |\g_@@_overlap_x_dim|.
% \begin{macrocode}
\pgf@relevantforpicturesizetrue
#1
\dim_compare:nNnTF \pgf@picminx = { 16000 pt }
- { \dim_zero:NN \l_tmpa_dim }
+ { \dim_zero:N \l_tmpa_dim }
{ \dim_set:Nn \l_tmpa_dim { \pgf@picmaxx - \pgf@picminx } }
\dim_add:Nn \l_tmpa_dim \l_@@_xoffset_dim
\prop_gput:cnV
{ g_@@_arrow _ \l_@@_prefix_str _ \int_use:N \l_@@_arrow_int _ prop }
{ width }
\l_tmpa_dim
+% \end{macrocode}
+% Now, the actualization of |\g_@@_overlap_x_dim|.
+% \begin{macrocode}
+ \bool_if:NF \l_@@_right_overlap_bool
+ {
+ \bool_if:NT \l_@@_in_WithArrows_bool
+ {
+ \dim_gset:Nn \g_@@_overlap_x_dim
+ {
+ \dim_max:nn
+ \g_@@_overlap_x_dim
+ { \l_tmpa_dim - \l_@@_delta_x_dim }
+ }
+ }
+ }
\pgfresetboundingbox
%<*LaTeX>
\end{tikzpicture}
@@ -6242,6 +6378,7 @@ version 2005/12/01 or later.
}
% \end{macrocode}
%
+%
% \medskip
% When we draw the arrow (with |\@@_draw_arrow:nnn|), we first create the
% function |\@@_tmpa:nnn| and, then, we use the function |\@@_tmpa:nnn| :
@@ -6473,7 +6610,7 @@ version 2005/12/01 or later.
% \end{macrocode}
% We have to compute the maximal width of all the arrows (with their labels)
% which are covered by our arrow. We will compute that dimension in
-% |\g_tmpa_dim|. We need global dimension because we will have to exit a
+% |\g_tmpa_dim|. We need a global dimension because we will have to exit a
% |\pgfpicture|.
% \begin{macrocode}
\dim_gzero:N \g_tmpa_dim
@@ -6798,7 +6935,6 @@ version 2005/12/01 or later.
-- node (@@_label) {}
([xshift = \l_@@_xoffset_dim+5mm]\l_tmpb_tl-r.south)
-- ([xshift = \l_@@_xoffset_dim]\l_tmpb_tl-r.south) ;
-
\pgfpointanchor { wa - \l_@@_prefix_str - @@_label } { west }
\dim_set:Nn \l_tmpa_dim { 20 cm }
\path \pgfextra { \tl_gset:Nx \g_tmpa_tl \tikz@text@width } ;
@@ -6839,7 +6975,7 @@ version 2005/12/01 or later.
{
\draw [ <- ]
( [xshift = \l_@@_xoffset_dim]\k-r.south ) -- ++(5mm,0) ;
- } ;
+ } % ;
%<*LaTeX>
\end{tikzpicture}
%</LaTeX>
@@ -6853,6 +6989,14 @@ version 2005/12/01 or later.
% \bigskip
% \subsection{The error messages of the package}
%
+% \begin{macrocode}
+\bool_if:NTF \c_@@_messages_for_Overleaf_bool
+ { \str_const:Nn \c_@@_available_keys_str { } }
+ {
+ \str_const:Nn \c_@@_available_keys_str
+ { For~a~list~of~the~available~keys,~type~H~<return>. }
+ }
+% \end{macrocode}
%
% \begin{macrocode}
\str_new:N \l_witharrows_body_str
@@ -6871,7 +7015,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\cs_new:Npn \@@_potential_body_ii:
{
- \str_if_empty:NTF \l_nicematrix_body_str
+ \str_if_empty:NTF \l_witharrows_body_str
{ No~further~help~available }
{
The~body~of~your~environment~was:\\
@@ -6891,6 +7035,7 @@ version 2005/12/01 or later.
%<*LaTeX>
\@@_msg_new:nn { amsmath~not~loaded }
{
+ amsmath~not~loaded.\\
You~can't~use~the~option~'\l_keys_key_str'~because~the~
package~'amsmath'~has~not~been~loaded.\\
If~you~go~on,~this~option~will~be~ignored~in~the~rest~
@@ -6902,6 +7047,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Bad~value~for~replace~brace~by }
{
+ Incorrect~value.\\
Bad~value~for~the~option~'\l_keys_key_str'.~The~value~must~begin~
with~an~extensible~left~delimiter.~The~possible~values~are:~.,
\token_to_str:N \{,~(,~[,~\token_to_str:N \lbrace,~
@@ -6917,6 +7063,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { option~of~cr~negative }
{
+ Bad~value.\\
The~argument~of~the~command~\token_to_str:N\\~
should~be~positive~in~the~row~\int_use:N \g_@@_line_int\
of~your~environment~\{\l_@@_type_env_str\}.\\
@@ -6927,7 +7074,8 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { omit~probably~used }
{
- There~is~a~problem.~Maybe~you~have~used~a~command~
+ Strange~problem.\\
+ Maybe~you~have~used~a~command~
\token_to_str:N\omit\ in~the~line~\int_use:N \g_@@_line_int\
(or~another~line)~of~your~environment~\{\l_@@_type_env_str\}.\\
You~can~go~on~but~you~may~have~others~errors.
@@ -6938,6 +7086,7 @@ version 2005/12/01 or later.
%<*LaTeX>
\@@_msg_new:nnn { newline~at~the~end~of~env }
{
+ Incorrect~end.\\
The~environments~of~witharrows~(\{WithArrows\}~and~
\{DispWithArrows\})~should~not~end~by~\token_to_str:N \\.\\
However,~you~can~go~on~for~this~time.~No~similar~error~will~be~
@@ -6951,6 +7100,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nnn { Invalid~option~format }
{
+ Invalide~value.\\
The~key~'format'~should~contain~only~letters~r,~c~and~l~and~
must~not~be~empty.\\
\c_@@_option_ignored_str
@@ -6962,6 +7112,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nnn { invalid~key~o }
{
+ Invalid~use~of~a~key.\\
The~key~'o'~for~individual~arrows~can~be~used~only~in~mode~
'group'~or~in~mode~'groups'.\\
\c_@@_option_ignored_str
@@ -6973,6 +7124,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nnn { Value~for~a~key }
{
+ Misuse~of~a~key.\\
The~key~'\l_keys_key_str'~should~be~used~without~value. \\
However,~you~can~go~on~for~this~time.
\@@_potential_body_i:
@@ -6983,12 +7135,13 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nnn { Unknown~option~in~Arrow }
{
+ Unknown~option.\\
The~key~'\l_keys_key_str'~is~unknown~for~the~command~
\l_@@_string_Arrow_for_msg_str\ in~the~row~
\int_use:N \g_@@_line_int\ of~your~environment~
\{\l_@@_type_env_str\}. \l_tmpa_str \\
\c_@@_option_ignored_str \\
- For~a~list~of~the~available~keys,~type~H~<return>.
+ \c_@@_available_keys_str
}
{
The~available~keys~are~(in~alphabetic~order):~
@@ -7000,9 +7153,10 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nnn { Unknown~option~WithArrows }
{
+ Unknown~option.\\
The~key~'\l_keys_key_str'~is~unknown~in~\{\l_@@_type_env_str\}. \\
\c_@@_option_ignored_str \\
- For~a~list~of~the~available~keys,~type~H~<return>.
+ \c_@@_available_keys_str
}
{
The~available~keys~are~(in~alphabetic~order):~
@@ -7012,9 +7166,10 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nnn { Unknown~option~DispWithArrows }
{
+ Unknown~option.\\
The~key~'\l_keys_key_str'~is~unknown~in~\{\l_@@_type_env_str\}. \\
\c_@@_option_ignored_str \\
- For~a~list~of~the~available~keys,~type~H~<return>.
+ \c_@@_available_keys_str
}
{
The~available~keys~are~(in~alphabetic~order):~
@@ -7025,10 +7180,11 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nnn { Unknown~option~WithArrowsOptions }
{
+ Unknown~option.\\
The~key~'\l_keys_key_str'~is~unknown~in~
\token_to_str:N \WithArrowsOptions. \\
\c_@@_option_ignored_str \\
- For~a~list~of~the~available~keys,~type~H~<return>.
+ \c_@@_available_keys_str
}
{
The~available~keys~are~(in~alphabetic~order):~
@@ -7039,10 +7195,11 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nnn { Unknown~option~Arrow~in~code-after }
{
+ Unknown~option.\\
The~key~'\l_keys_key_str'~is~unknown~in~
\token_to_str:N \Arrow\ in~code-after. \\
\c_@@_option_ignored_str \\
- For~a~list~of~the~available~keys,~type~H~<return>.
+ \c_@@_available_keys_str
}
{
The~available~keys~are~(in~alphabetic~order):~
@@ -7054,6 +7211,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nnn { Too~much~columns~in~WithArrows }
{
+ Too~much~columns.\\
Your~environment~\{\l_@@_type_env_str\}~has~\int_use:N
\l_@@_nb_cols_int\ columns~and~you~try~to~use~one~more.~
Maybe~you~have~forgotten~a~\c_backslash_str\c_backslash_str.~
@@ -7068,6 +7226,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nnn { Too~much~columns~in~DispWithArrows }
{
+ Too~much~columns.\\
Your~environment~\{\l_@@_type_env_str\}~has~\int_use:N
\l_@@_nb_cols_int\ columns~and~you~try~to~use~one~more.~
Maybe~you~have~forgotten~a~\c_backslash_str\c_backslash_str\
@@ -7081,6 +7240,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Negative~jump }
{
+ Incorrect~value.\\
You~can't~use~a~negative~value~for~the~option~'jump'~of~command~
\l_@@_string_Arrow_for_msg_str\
in~the~row~\int_use:N \g_@@_line_int\
@@ -7093,6 +7253,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { new-group~without~groups }
{
+ Misuse~of~a~key.\\
You~can't~use~the~option~'new-group'~for~the~command~
\l_@@_string_Arrow_for_msg_str\
because~you~are~not~in~'groups'~mode.~Try~to~use~the~option~
@@ -7106,8 +7267,9 @@ version 2005/12/01 or later.
\@@_msg_new:nnn
{ Too~few~lines~for~an~arrow }
{
+ Impossible~arrow.\\
Line~\l_@@_input_line_str\
- :~an~arrow~specifiead~in~the~row~\int_use:N \l_@@_initial_int\
+ :~an~arrow~specified~in~the~row~\int_use:N \l_@@_initial_int\
of~your~environment~\{\l_@@_type_env_str\}~can't~be~drawn~
because~it~arrives~after~the~last~row~of~the~environment. \\
If~you~go~on,~this~arrow~will~be~ignored.
@@ -7119,6 +7281,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { o~arrow~with~no~arrow~under }
{
+ Problem~with~the~key~'o'.\\
Line~\l_@@_input_line_str\
:~there~is~no~arrow~'under'~your~arrow~of~type~'o'.\\
If~you~go~on,~this~arrow~won't~be~drawn.
@@ -7128,6 +7291,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nnn { WithArrows~outside~math~mode }
{
+ You~are~outside~math~mode.\\
The~environment~\{\l_@@_type_env_str\}~should~be~used~only~in~math~mode~
like~the~environment~\{aligned\}~of~amsmath. \\
Nevertheless,~you~can~go~on.
@@ -7139,6 +7303,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nnn { DispWithArrows~in~math~mode }
{
+ You~are~in~math~mode.\\
The~environment~\{\l_@@_type_env_str\}~should~be~used~only~outside~math~
mode~like~the~environments~\{align\}~and~\{align*\}~of~amsmath. \\
This~error~is~fatal.
@@ -7150,6 +7315,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Incompatible~options~in~Arrow }
{
+ Incompatible~options.\\
You~try~to~use~the~option~'\l_keys_key_str'~but~
this~option~is~incompatible~or~redundant~with~the~option~
'\l_@@_previous_key_str'~set~in~the~same~command~
@@ -7160,8 +7326,10 @@ version 2005/12/01 or later.
%
%
% \begin{macrocode}
-\@@_msg_new:nn { Incompatible~options }
- { You~try~to~use~the~option~'\l_keys_key_str'~but~
+\@@_msg_new:nn { Incompatible~options a}
+ {
+ Incompatible~options.
+ You~try~to~use~the~option~'\l_keys_key_str'~but~
this~option~is~incompatible~or~redundant~with~the~option~
'\l_@@_previous_key_str'~set~in~the~same~command~
\bool_if:NT \l_@@_in_code_after_bool
@@ -7176,8 +7344,10 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nnn { Arrow~not~in~last~column }
{
+ Bad~use~of~\l_@@_string_Arrow_for_msg_str.
You~should~use~the~command~\l_@@_string_Arrow_for_msg_str\
only~in~the~last~column~(column~\int_use:N\l_@@_nb_cols_int)~
+ in~the~row~\int_use:N \g_@@_line_int\
of~your~environment~\{\l_@@_type_env_str\}.\\
However~you~can~go~on~for~this~time.
\@@_potential_body_i:
@@ -7188,6 +7358,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Wrong~line~in~Arrow }
{
+ Wrong~line.\\
The~specification~of~line~'#1'~you~use~in~the~command~
\l_@@_string_Arrow_for_msg_str\
in~the~'code-after'~of~\{\l_@@_type_env_str\}~doesn't~exist. \\
@@ -7198,6 +7369,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Both~lines~are~equal }
{
+ Both~lines~are~equal.\\
In~the~'code-after'~of~\{\l_@@_type_env_str\}~you~try~to~
draw~an~arrow~going~to~itself~from~the~line~'#1'.~This~is~not~possible. \\
\c_@@_option_ignored_str
@@ -7207,6 +7379,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Wrong~line~specification~in~MultiArrow }
{
+ Wrong~line~specification.\\
The~specification~of~line~'#1'~doesn't~exist. \\
If~you~go~on,~it~will~be~ignored~for~\token_to_str:N \MultiArrow.
}
@@ -7215,6 +7388,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Too~small~specification~for~MultiArrow }
{
+ Too~small~specification.\\
The~specification~of~lines~you~gave~to~\token_to_str:N \MultiArrow\
is~too~small:~you~need~at~least~two~lines. \\
\c_@@_command_ignored_str
@@ -7225,6 +7399,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Not~allowed~in~DispWithArrows }
{
+ Forbidden~command.\\
The~command~\token_to_str:N #1
is~allowed~only~in~the~last~column~
(column~\int_use:N\l_@@_nb_cols_int)~of~\{\l_@@_type_env_str\}. \\
@@ -7235,6 +7410,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Not~allowed~in~WithArrows }
{
+ Forbidden~command.\\
The~command~\token_to_str:N #1 is~not~allowed~in~\{\l_@@_type_env_str\}~
(it's~allowed~in~the~last~column~of~\{DispWithArrows\}). \\
\c_@@_option_ignored_str
@@ -7245,6 +7421,7 @@ version 2005/12/01 or later.
%<*LaTeX>
\@@_msg_new:nn { tag*~without~amsmath }
{
+ amsmath~not~loaded.\\
We~can't~use~\token_to_str:N\tag*~because~you~haven't~loaded~amsmath~
(or~mathtools). \\
If~you~go~on,~the~command~\token_to_str:N\tag\
@@ -7255,6 +7432,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Multiple~tags }
{
+ Multiple~tags.\\
You~can't~use~twice~the~command~\token_to_str:N\tag\
in~a~line~of~the~environment~\{\l_@@_type_env_str\}. \\
If~you~go~on,~the~tag~'#1'~will~be~used.
@@ -7265,6 +7443,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Multiple~labels }
{
+ Multiple~labels.\\
Normally,~we~can't~use~the~command~\token_to_str:N\label\
twice~in~a~line~of~the~environment~\{\l_@@_type_env_str\}. \\
However,~you~can~go~on.~
@@ -7278,6 +7457,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Multiple~labels~with~cleveref }
{
+ Multiple~labels.\\
Since~you~use~cleveref,~you~can't~use~the~command~\token_to_str:N\label\
twice~in~a~line~of~the~environment~\{\l_@@_type_env_str\}. \\
If~you~go~on,~you~may~have~undefined~references.
@@ -7289,7 +7469,8 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Inexistent~v-node }
{
- There~is~a~problem.~Maybe~you~have~put~a~command~\token_to_str:N\cr\
+ There~is~a~problem.\\
+ Maybe~you~have~put~a~command~\token_to_str:N\cr\
instead~of~a~command~\token_to_str:N\\~at~the~end~of~
the~row~\l_tmpa_int\
of~your~environment~\{\l_@@_type_env_str\}. \\
@@ -7306,6 +7487,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Option~xoffset~forbidden }
{
+ Incorrect~key.\\
You~can't~use~the~option~'xoffset'~in~the~command~
\l_@@_string_Arrow_for_msg_str\ in~the~row~\int_use:N \g_@@_line_int\
of~your~environment~\{\l_@@_type_env_str\}~
@@ -7321,6 +7503,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nnn { Duplicate~name }
{
+ Duplicate~name.\\
The~name~'\l_keys_value_tl'~is~already~used~and~you~shouldn't~use~
the~same~environment~name~twice.~You~can~go~on,~but,~
maybe,~you~will~have~incorrect~results. \\
@@ -7338,6 +7521,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Invalid~specification~for~MultiArrow }
{
+ Invalid~specification.\\
The~specification~of~rows~for~\token_to_str:N\MultiArrow\
(i.e.~#1)~is~invalid. \\
\c_@@_command_ignored_str
@@ -7360,37 +7544,79 @@ version 2005/12/01 or later.
\keys_if_exist:nnTF { WithArrows / Global } { #1 }
{ \@@_error:nn { Key~already~defined } { #1 } }
{
- \keys_define:nn { WithArrows / Global }
- {
- #1 .code:n =
- { \keys_set_known:nn { WithArrows / WithArrowsOptions } { #2 } }
- }
- \seq_put_right:Nx \l_@@_options_WithArrows_seq { \tl_to_str:n { #1 } }
- \seq_put_right:Nx \l_@@_options_DispWithArrows_seq
- { \tl_to_str:n { #1 } }
- \seq_put_right:Nx \l_@@_options_WithArrowsOptions_seq
- { \tl_to_str:N { #1 } }
% \end{macrocode}
-% We now set the options in a TeX group in order to detect if some keys in |#2|
-% are unknown. If a key is unknown, an error will be raised. However, the key
-% will, even so, be stored in the definition of key~|#1|.
+% First, we detect whether there is unknown keys in |#2| by storing in
+% |\l_tmpa_seq| the list of the unknown keys.
% \begin{macrocode}
- \group_begin:
- \msg_set:nnn { witharrows } { Unknown~option~WithArrowsOptions }
- {
- The~key~'\l_keys_key_str'~can't~be~set~in~the~
- definition~of~a~style.~You~can~go~on~for~this~time~
- but~you~should~suppress~this~key.
- }
- \WithArrowsOptions { #2 }
- \group_end:
+ \seq_clear:N \l_tmpa_seq
+ \keyval_parse:NNn \@@_valid_key:n \@@_valid_key:nn { #2 }
+ \seq_if_empty:NTF \l_tmpa_seq
+ {
+ \seq_put_right:Nx \l_@@_options_WithArrows_seq
+ { \tl_to_str:n { #1 } }
+ \seq_put_right:Nx \l_@@_options_DispWithArrows_seq
+ { \tl_to_str:n { #1 } }
+ \seq_put_right:Nx \l_@@_options_WithArrowsOptions_seq
+ { \tl_to_str:N { #1 } }
+% \end{macrocode}
+% When we will consider that |\keys_precompile:nnN| (introduced in LaTeX on
+% 2022-03-09) is widely available, we will delete that test and keep only the
+% first version.
+% \begin{macrocode}
+ \cs_if_exist:NTF \keys_precompile:nnN
+ {
+ \keys_precompile:nnN
+ { WithArrows / WithArrowsOptions }
+ { #2 }
+ \l_tmpa_tl
+ \@@_key_define:nV { #1 } \l_tmpa_tl
+ }
+ {
+ \keys_define:nn { WithArrows / Global }
+ {
+ #1 .code:n =
+ { \keys_set:nn { WithArrows / WithArrowsOptions } { #2 } }
+ }
+ }
+ }
+ { \@@_error:nn { Impossible~style } { #1 } }
}
}
% \end{macrocode}
+%
+% \begin{macrocode}
+\@@_msg_new:nn { Impossible~style }
+ {
+ Impossible~style.\\
+ It's~impossible~to~define~the~style~'#1'~
+ because~it~contains~unknown~keys:~'
+ \seq_use:Nnnn \l_tmpa_seq { '~and~' } { ',~'} { ',~and~}'.
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_valid_key:n #1
+ {
+ \keys_if_exist:nnF { WithArrows / Global } { #1 }
+ { \seq_put_right:Nn \l_tmpa_seq { #1 } }
+ }
+\cs_new_protected:Npn \@@_valid_key:nn #1 #2
+ {
+ \keys_if_exist:nnF { WithArrows / Global } { #1 }
+ { \seq_put_right:Nn \l_tmpa_seq { #1 } }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_key_define:nn #1 #2
+ { \keys_define:nn { WithArrows / Global } { #1 .code:n = #2 } }
+\cs_generate_variant:Nn \@@_key_define:nn { n V }
+% \end{macrocode}
%
% \begin{macrocode}
\@@_msg_new:nn { Key~already~defined }
{
+ Key~already~define.\\
The~key~'#1'~is~already~defined. \\
If~you~go~on,~your~instruction~\token_to_str:N\WithArrowsNewStyle\
will~be~ignored.
@@ -7442,6 +7668,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { Option~unknown~for~up-and-down }
{
+ Unknown~option.\\
The~option~'\l_keys_key_str'~is~unknown.~\c_@@_option_ignored_str
}
% \end{macrocode}
@@ -7572,7 +7799,7 @@ version 2005/12/01 or later.
%
%
% \bigskip
-% The code for a arrow of type |down| is similar to the previous code (for an
+% The code for an arrow of type |down| is similar to the previous code (for an
% arrow of type |up|).
% \begin{macrocode}
%<*LaTeX>
@@ -7686,7 +7913,7 @@ version 2005/12/01 or later.
%
% \bigskip
% The options are scanned a second time when the arrow is actually drawn. That's
-% the secon pass.
+% the second pass.
% \begin{macrocode}
\keys_define:nn { WithArrows / Arrow / SecondPass }
{
@@ -7737,6 +7964,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_msg_new:nn { calc~not~loaded }
{
+ calc~not~loaded.\\
You~can't~use~the~option~'\l_keys_key_str'~because~you~don't~have~loaded~the~
Tikz~library~'calc'.You~should~add~'\token_to_str:N\usetikzlibrary{calc}'~
~in~the~preamble~of~your~document. \\
@@ -7753,117 +7981,98 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \section{History}
-%
-% \subsection*{Changes between versions 1.0 and 1.1}
%
-% Option for the command |\\| and option |interline|
-%
-% Compatibility with |\usetikzlibrary{babel}|
+% \subsection*{Changes between 2.7 and 2.8}
%
-% Possibility of nested environments |{WithArrows}|
-%
+% New key |right-overlap|
%
-% \subsection*{Changes between versions 1.1 and 1.2}
+% \subsection*{Changes between 2.6b and 2.7}
%
-% The package \pkg{witharrows} can now be loaded without having loaded
-% previously \pkg{tikz} and the libraries |arrow.meta| and |bending| (this
-% extension and these libraries are loaded silently by \pkg{witharrows}).
+% Correction of a bug: when the key |wrap-lines| was in force, the content of
+% the annotations was not ``flush left'' by default as it should be (but justified).
%
-% New option |groups| (with a \emph{s})
%
-%
-% \subsection*{Changes between versions 1.2 and 1.3}
-%
-% New options |ygap| and |ystart| for fine tuning.
+% \subsection*{Changes between 2.6 and 2.6a (and 2.6b)}
%
-% \subsection*{Changes between versions 1.3 and 1.4}
-%
-% The package \pkg{footnote} is no longer loaded by default. Instead, two
-% options |footnote| and |footnotehyper| have been added. In particular,
-% \pkg{witharrows} becomes compatible with \cls{beamer}.
-%
-% \subsection*{Changes between versions 1.4 and 1.5}
-%
-% The Tikz code used to draw the arrows can be changed with the option
-% |tikz-code|.
+% Replacement of |\hbox_unpack_clear:N| by |\hbox_unpack_drop:N| since
+% |\hbox_unpack_clear:N| is now deprecated in L3.
%
-% Two new options |code-before| and |code-after| have been added at the
-% environment level.
+% Version 2.6d: correction of a bug (cf. question 628461 on TeX StackExchange).
%
-% A special version of |\Arrow| is available in |code-after| in order to draw
-% arrows in nested environments.
-%
-% A command |\MultiArrow| is available in |code-after| to draw arrows of other
-% shapes.
-%
-% \subsection*{Changes between versions 1.5 and 1.6}
+% \subsection*{Changes between 2.5 and 2.5.1}
%
-% The code has been improved to be faster and the Tikz library |calc| is no
-% longer required.
+% Correction of the erroneous programmation of the nodes aliases.
%
-% A new option |name| is available for the environments |{WithArrows}|.
%
-% \subsection*{Changes between 1.6 and 1.7}
+% \subsection*{Changes between 2.4 and 2.5}
%
-% New environments |{DispWithArrows}| and |{DispWithArrows*}|.
+% Arrows of type |o| which are \emph{over} other arrows.
%
-% \subsection*{Changes between 1.7 and 1.8}
+% \pkg{witharrows} now requires and loads \pkg{varwidth}
%
-% The numbers and tags of the environment |{DispWithArrows}| are now compatible
-% with all the major LaTeX packages concerning references (\pkg{autonum},
-% \pkg{cleveref}, \pkg{fancyref}, \pkg{hyperref}, \pkg{prettyref},
-% \pkg{refstyle}, \pkg{typedref} and \pkg{varioref}) and with the options
-% |showonlyrefs| and |showmanualtags| of \pkg{mathtools}.
+% \subsection*{Changes between 2.3 and 2.4}
+%
+% Correction of a bug with |{DispWithArrows}| : cf. question 535989 on |TeX StackExchange|.
%
-% \subsection*{Changes between 1.8 and 1.9}
+% \subsection*{Changes between 2.2 and 2.3}
%
-% New option |wrap-lines| for the environments |{DispWithArrows}| and
-% |{DispWithArrows*}|.
+% Two options for the arrows of type |up| and |down|: |width| and |radius|.
%
-% \subsection*{Changes between 1.9 and 1.10}
+% \subsection*{Changes between 2.1 and 2.2}
%
-% If the option |wrap-lines| is used, the option ``|text width|'' of Tikz is
-% still active: if the value given to ``|text width|'' is lower than the width
-% computed by |wrap-lines|, this value is used to wrap the lines.
+% Addition of |\normalbaselines| at the beginning of |\@@_post_halign:|.
%
-% The option |wrap-lines| is now fully compatible with the class option |leqno|.
+% The warning for an environment ending by |\\| has been transformed in |error|.
%
-% Correction of a bug: |\nointerlineskip| and |\makebox[.6\linewidth]{}| should
-% be inserted in |{DispWithArrows}| only in vertical mode.
+% \subsection*{Changes between 2.0 and 2.1}
+%
+% Option |max-length-of-arrow|.
+%
+% Validation with regular expression for the first argument of |\MultiArrow|.
%
-% \subsection*{Changes between 1.10 and 1.11}
+% \subsection*{Changes between 1.18 and 2.0}
+%
+% A version of \pkg{witharrows} is available for plain-TeX.
+%
+% \subsection*{Changes between 1.17 and 1.18}
%
-% New commands |\WithArrowsNewStyle| and |\WithArrowsRightX|.
+% New option |<...>| for |{DispWithArrows}|.
%
-% \subsection*{Changes between 1.11 and 1.12}
+% Option |subequations|.
%
-% New command |\tagnextline|.
+% Warning when |{WithArrows}| or |{DispWithArrows}| ends by "\\".
+%
+% No space before an environment |{DispWithArrows}| if we are at the beginning
+% of a |{minipage}|.
%
-% New option |tagged-lines|.
+% \subsection*{Changes between 1.16 and 1.17}
+%
+% Option |format|.
%
-% An option of position (|ll|, |lr|, |rl|, |rr| or |i|) is now allowed at the
-% local level even if the option |group| or the option |groups| is used at the
-% global or environment level.
+% \subsection*{Changes between 1.15 and 1.16}
%
-% Compatibility of |{DispWithArrows}| with |\qedhere| of \pkg{amsthm}.
+% Option |no-arrows|
%
-% Compatibility with the packages \pkg{refcheck}, \pkg{showlabels} and
-% \pkg{listlbls}.
+% The behaviour of |{DispWithArrows}| after an |\item| of a LaTeX list has been
+% changed : no vertical is added. The previous behaviour can be restored with
+% the option |standard-behaviour-with-items|.
+%
+% A given name can no longer be used for two distinct environments. However,
+% it's possible to deactivate this control with the option
+% |allow-duplicate-names|.
+%
%
-% The option |\AllowLineWithoutAmpersand| is deprecated because lines without
-% ampersands are now always allowed.
+% \subsection*{Changes between 1.14 and 1.15}
%
-% \subsection*{Changes between 1.12 and 1.13}
+% Option |new-group| to start a new group of arrows (only available when the
+% environment is composed with the option |groups|).
+%
+% Tikz externalization is now deactivated in the environments of the
+% extension \pkg{witharrows}.\footnote{Before this version, there was an error
+% when using \pkg{witharrows} with Tikz externalization. In any case, it's not
+% possible to externalize the Tikz elements constructed by \pkg{witharrows}
+% because they use the options |overlay| and |remember picture|.}
%
-% Options |start-adjust|, |end-adjust| and |adjust|.
-%
-% This version is not stricty compatible with previous ones. To restore the
-% behaviour of the previous versions, one has to use the option |adjust| with
-% the value $0$~pt:
-%
-% \begin{Verbatim}
-% \WithArrowsOptions{adjust = 0pt}
-% \end{Verbatim}
%
% \subsection*{Changes between 1.13 and 1.14}
%
@@ -7885,99 +8094,116 @@ version 2005/12/01 or later.
% The error |Option incompatible with 'group(s)'| was suppressed in the version
% 1.12 but this was a mistake since this error is used with the option |xoffset|
% at the local level. The error is put back.
+%
+% \subsection*{Changes between 1.12 and 1.13}
+%
+% Options |start-adjust|, |end-adjust| and |adjust|.
%
-% \subsection*{Changes between 1.14 and 1.15}
+% This version is not stricty compatible with previous ones. To restore the
+% behaviour of the previous versions, one has to use the option |adjust| with
+% the value $0$~pt:
+%
+% \begin{Verbatim}
+% \WithArrowsOptions{adjust = 0pt}
+% \end{Verbatim}
%
-% Option |new-group| to start a new group of arrows (only available when the
-% environment is composed with the option |groups|).
+% \subsection*{Changes between 1.11 and 1.12}
%
-% Tikz externalization is now deactivated in the environments of the
-% extension \pkg{witharrows}.\footnote{Before this version, there was an error
-% when using \pkg{witharrows} with Tikz externalization. In any case, it's not
-% possible to externalize the Tikz elements constructed by \pkg{witharrows}
-% because they use the options |overlay| and |remember picture|.}
+% New command |\tagnextline|.
%
-% \subsection*{Changes between 1.15 and 1.16}
+% New option |tagged-lines|.
%
-% Option |no-arrows|
+% An option of position (|ll|, |lr|, |rl|, |rr| or |i|) is now allowed at the
+% local level even if the option |group| or the option |groups| is used at the
+% global or environment level.
%
-% The behaviour of |{DispWithArrows}| after an |\item| of a LaTeX list has been
-% changed : no vertical is added. The previous behaviour can be restored with
-% the option |standard-behaviour-with-items|.
-%
-% A given name can no longer be used for two distinct environments. However,
-% it's possible to deactivate this control with the option
-% |allow-duplicate-names|.
-%
+% Compatibility of |{DispWithArrows}| with |\qedhere| of \pkg{amsthm}.
%
-% \subsection*{Changes between 1.16 and 1.17}
-%
-% Option |format|.
+% Compatibility with the packages \pkg{refcheck}, \pkg{showlabels} and
+% \pkg{listlbls}.
%
-% \subsection*{Changes between 1.17 and 1.18}
+% The option |\AllowLineWithoutAmpersand| is deprecated because lines without
+% ampersands are now always allowed.
%
-% New option |<...>| for |{DispWithArrows}|.
+% \subsection*{Changes between 1.10 and 1.11}
%
-% Option |subequations|.
+% New commands |\WithArrowsNewStyle| and |\WithArrowsRightX|.
%
-% Warning when |{WithArrows}| or |{DispWithArrows}| ends by "\\".
-%
-% No space before an environment |{DispWithArrows}| if we are at the beginning
-% of a |{minipage}|.
+% \subsection*{Changes between 1.9 and 1.10}
%
-% \subsection*{Changes between 1.18 and 2.0}
-%
-% A version of \pkg{witharrows} is available for plain-TeX.
-%
+% If the option |wrap-lines| is used, the option ``|text width|'' of Tikz is
+% still active: if the value given to ``|text width|'' is lower than the width
+% computed by |wrap-lines|, this value is used to wrap the lines.
%
-% \subsection*{Changes between 2.0 and 2.1}
-%
-% Option |max-length-of-arrow|.
+% The option |wrap-lines| is now fully compatible with the class option |leqno|.
+%
+% Correction of a bug: |\nointerlineskip| and |\makebox[.6\linewidth]{}| should
+% be inserted in |{DispWithArrows}| only in vertical mode.
+%
+% \subsection*{Changes between 1.8 and 1.9}
%
-% Validation with regular expression for the first argument of |\MultiArrow|.
+% New option |wrap-lines| for the environments |{DispWithArrows}| and
+% |{DispWithArrows*}|.
%
-% \subsection*{Changes between 2.1 and 2.2}
+% \subsection*{Changes between 1.7 and 1.8}
%
-% Addition of |\normalbaselines| at the beginning of |\@@_post_halign:|.
+% The numbers and tags of the environment |{DispWithArrows}| are now compatible
+% with all the major LaTeX packages concerning references (\pkg{autonum},
+% \pkg{cleveref}, \pkg{fancyref}, \pkg{hyperref}, \pkg{prettyref},
+% \pkg{refstyle}, \pkg{typedref} and \pkg{varioref}) and with the options
+% |showonlyrefs| and |showmanualtags| of \pkg{mathtools}.
%
-% The warning for an environment ending by |\\| has been transformed in |error|.
+% \subsection*{Changes between 1.6 and 1.7}
%
-% \subsection*{Changes between 2.2 and 2.3}
-%
-% Two options for the arrows of type |up| and |down|: |width| and |radius|.
+% New environments |{DispWithArrows}| and |{DispWithArrows*}|.
%
-% \subsection*{Changes between 2.3 and 2.4}
+% \subsection*{Changes between versions 1.5 and 1.6}
%
-% Correction of a bug with |{DispWithArrows}| : cf. question 535989 on |TeX StackExchange|.
+% The code has been improved to be faster and the Tikz library |calc| is no
+% longer required.
%
-% \subsection*{Changes between 2.4 and 2.5}
+% A new option |name| is available for the environments |{WithArrows}|.
%
-% Arrows of type |o| which are \emph{over} other arrows.
+% \subsection*{Changes between versions 1.4 and 1.5}
+%
+% The Tikz code used to draw the arrows can be changed with the option
+% |tikz-code|.
%
-% \pkg{witharrows} now requires and loads \pkg{varwidth}
+% Two new options |code-before| and |code-after| have been added at the
+% environment level.
%
-% \subsection*{Changes between 2.5 and 2.5.1}
+% A special version of |\Arrow| is available in |code-after| in order to draw
+% arrows in nested environments.
%
-% Correction of the erroneous programmation of the nodes aliases.
-%
-% \subsection*{Changes between 2.5.1 and 2.6}
+% A command |\MultiArrow| is available in |code-after| to draw arrows of other
+% shapes.
%
-% The key |format| now supports the letters |R|, |C| and |L|.
+% \subsection*{Changes between versions 1.3 and 1.4}
%
+% The package \pkg{footnote} is no longer loaded by default. Instead, two
+% options |footnote| and |footnotehyper| have been added. In particular,
+% \pkg{witharrows} becomes compatible with \cls{beamer}.
%
-% \subsection*{Changes between 2.6 and 2.6a (and 2.6b)}
+% \subsection*{Changes between versions 1.2 and 1.3}
+%
+% New options |ygap| and |ystart| for fine tuning.
%
-% Replacement of |\hbox_unpack_clear:N| by |\hbox_unpack_drop:N| since
-% |\hbox_unpack_clear:N| is now deprecated in \pkg{expl3}.
+% \subsection*{Changes between versions 1.1 and 1.2}
%
-% Version 2.6d: correction of a bug (cf. question 628461 on TeX StackExchange).
+% The package \pkg{witharrows} can now be loaded without having loaded
+% previously \pkg{tikz} and the libraries |arrow.meta| and |bending| (this
+% extension and these libraries are loaded silently by \pkg{witharrows}).
%
-% \subsection*{Changes between 2.6b and 2.7}
+% New option |groups| (with a \emph{s})
%
-% Correction of a bug: when the key |wrap-lines| was in force, the content of
-% the annotations was not ``flush left'' by default as it should be (but justified).
+% \subsection*{Changes between versions 1.0 and 1.1}
+%
+% Option for the command |\\| and option |interline|
+%
+% Compatibility with |\usetikzlibrary{babel}|
%
-% \PrintIndex
+% Possibility of nested environments |{WithArrows}|
+%
%
% \tableofcontents
%
diff --git a/macros/generic/witharrows/witharrows.ins b/macros/generic/witharrows/witharrows.ins
index d101deff19..5a65f4914c 100644
--- a/macros/generic/witharrows/witharrows.ins
+++ b/macros/generic/witharrows/witharrows.ins
@@ -1,5 +1,5 @@
%%
-%% Copyright (C) 2017-2022 by F. Pantigny
+%% Copyright (C) 2017-2023 by F. Pantigny
%%
%%
%% This file may be distributed and/or modified under the
@@ -17,7 +17,7 @@
\usedir{tex/latex/witharrows}
\preamble
-Copyright (C) 2017-2022 by F. Pantigny
+Copyright (C) 2017-2023 by F. Pantigny
This file may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
diff --git a/macros/generic/witharrows/witharrows.pdf b/macros/generic/witharrows/witharrows.pdf
index a6570633ea..2cae02ea86 100644
--- a/macros/generic/witharrows/witharrows.pdf
+++ b/macros/generic/witharrows/witharrows.pdf
Binary files differ
diff --git a/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf b/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
index 65f4d3e66e..f6420bc786 100644
--- a/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
+++ b/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/profcollege/latex/ProfCollege.sty b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
index 5238a5e97e..97f9f842e8 100644
--- a/macros/latex/contrib/profcollege/latex/ProfCollege.sty
+++ b/macros/latex/contrib/profcollege/latex/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{2022/12/01}%
+\def\filedate{2023/01/01}%
\let\PfCfiledate\filedate%
-\def\fileversion{0.99-z-c}%
+\def\fileversion{0.99-z-d}%
\let\PfCfileversion\fileversion%
\ProvidesPackage{ProfCollege}[\filedate\space v\fileversion\space Aide pour utiliser LaTeX au college]
@@ -348,6 +348,739 @@
}
%%%
+% Calisson
+%
+\setKVdefault[Calisson]{Taille=3,Solution=false,Rayon=5cm,Couleur=red}%
+
+\def\UpdatetoksCalissong#1\nil{\addtotok\tokcalissonlistetracesg{,"#1"}}%
+\def\UpdatetoksCalissongDepart#1\nil{\addtotok\tokcalissonlistetracesg{"#1"}}%
+\def\UpdatetoksCalissond#1\nil{\addtotok\tokcalissonlistetracesd{,"#1"}}%
+\def\UpdatetoksCalissondDepart#1\nil{\addtotok\tokcalissonlistetracesd{"#1"}}%
+
+\newtoks\tokcalissonlistetracesg
+\newtoks\tokcalissonlistetracesd
+
+\NewDocumentCommand\Calisson{o m}{%
+ \useKVdefault[Calisson]%
+ \setKV[Calisson]{#1}%
+ % Essai de cassage du code
+ \tokcalissonlistetracesg{}%
+ \tokcalissonlistetracesd{}%
+ %Partie Gauche -> ok
+ \StrLeft{0#2}{2}[\Depart]%
+ \StrGobbleLeft{0#2}{2}[\Reste]%
+ \expandafter\UpdatetoksCalissongDepart\Depart0\nil%
+ \xintFor* ##1 in {\xintSeq{1}{\fpeval{\useKV[Calisson]{Taille}-1}}}\do{%
+ \StrLeft{0\Reste}{3}[\Depart]%
+ \expandafter\UpdatetoksCalissong\Depart\nil%
+ \StrGobbleLeft{0\Reste}{3}[\Reste]%
+ }%
+ \StrLeft{00\Reste}{3}[\Depart]%
+ \StrGobbleLeft{00\Reste}{3}[\Reste]%
+ \expandafter\UpdatetoksCalissong\Depart\nil%
+ % fin premiere ligne
+ \xintFor* ##1 in {\xintSeq{1}{\fpeval{\useKV[Calisson]{Taille}-1}}}\do{%
+ \StrLeft{\Reste}{2}[\Depart]%
+ \expandafter\UpdatetoksCalissong\Depart0\nil%
+ \StrGobbleLeft{\Reste}{2}[\Reste]%
+ \xintFor* ##2 in {\xintSeq{1}{\fpeval{\useKV[Calisson]{Taille}-1}}}\do{%
+ \StrLeft{\Reste}{3}[\Depart]%
+ \expandafter\UpdatetoksCalissong\Depart\nil%
+ \StrGobbleLeft{\Reste}{3}[\Reste]%
+ }%
+ \StrLeft{00\Reste}{3}[\Depart]%
+ \expandafter\UpdatetoksCalissong\Depart\nil%
+ \StrGobbleLeft{00\Reste}{3}[\Reste]%
+ }%
+ % fin des lignes intermédiaires
+ \xintFor* ##1 in {\xintSeq{1}{\fpeval{\useKV[Calisson]{Taille}}}}\do{%
+ \StrLeft{\Reste}{2}[\Depart]%
+ \expandafter\UpdatetoksCalissong\Depart0\nil%
+ \StrGobbleLeft{\Reste}{2}[\Reste]
+ \xintifboolexpr{##1>\fpeval{\useKV[Calisson]{Taille}-1}}{}{%
+ \xintFor* ##2 in {\xintSeq{\fpeval{\useKV[Calisson]{Taille}-##1}}{1}}\do{%
+ \StrLeft{\Reste}{3}[\Depart]%
+ \expandafter\UpdatetoksCalissong\Depart\nil%
+ \StrGobbleLeft{\Reste}{3}[\Reste]%
+ }%
+ }%
+ }%
+ %Liste gauche : \the\tokcalissonlistetracesg%
+ % Partie droite
+ \StrLeft{0\Reste}{3}[\Depart]%
+ \expandafter\UpdatetoksCalissondDepart\Depart\nil%
+ \StrGobbleLeft{0\Reste}{3}[\Reste]%
+ \xintFor* ##1 in {\xintSeq{1}{\fpeval{\useKV[Calisson]{Taille}-2}}}\do{%
+ \StrLeft{0\Reste}{3}[\Depart]%
+ \expandafter\UpdatetoksCalissond\Depart\nil%
+ \StrGobbleLeft{0\Reste}{3}[\Reste]%
+ }%
+ \StrLeft{00\Reste}{3}[\Depart]%
+ \StrGobbleLeft{00\Reste}{3}[\Reste]%
+ \expandafter\UpdatetoksCalissond\Depart\nil%
+% fin premiere ligne
+ \xintFor* ##1 in {\xintSeq{1}{\fpeval{\useKV[Calisson]{Taille}-1}}}\do{%
+ \StrLeft{\Reste}{1}[\Depart]%
+ \expandafter\UpdatetoksCalissond\Depart00\nil%
+ \StrGobbleLeft{\Reste}{1}[\Reste]%
+ \xintFor* ##2 in {\xintSeq{1}{\fpeval{\useKV[Calisson]{Taille}-1}}}\do{%
+ \StrLeft{\Reste}{3}[\Depart]%
+ \expandafter\UpdatetoksCalissond\Depart\nil%
+ \StrGobbleLeft{\Reste}{3}[\Reste]%
+ }%
+ \StrLeft{00\Reste}{3}[\Depart]%
+ \expandafter\UpdatetoksCalissond\Depart\nil%
+ \StrGobbleLeft{00\Reste}{3}[\Reste]%
+ }%
+ %% fin des lignes intermédiaires
+ \xintFor* ##1 in {\xintSeq{1}{\fpeval{\useKV[Calisson]{Taille}}}}\do{%
+ \StrLeft{\Reste}{1}[\Depart]%
+ \expandafter\UpdatetoksCalissond\Depart00\nil%
+ \StrGobbleLeft{\Reste}{1}[\Reste]%
+ \xintifboolexpr{##1>\fpeval{\useKV[Calisson]{Taille}-1}}{}{%
+ \xintFor* ##2 in {\xintSeq{\fpeval{\useKV[Calisson]{Taille}-##1}}{1}}\do{%
+ \StrLeft{\Reste}{3}[\Depart]%
+ \expandafter\UpdatetoksCalissond\Depart\nil%
+ \StrGobbleLeft{\Reste}{3}[\Reste]%
+ }%
+ }%
+ }%
+% \par Liste droite :\the\tokcalissonlistetracesd
+ \BuildCalisson{\the\tokcalissonlistetracesg}{\the\tokcalissonlistetracesd}%
+}%
+
+\NewDocumentCommand\BuildCalisson{m m}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ boolean Solution;
+ Solution:=\useKV[Calisson]{Solution};
+
+ color CouleurSolution;
+ CouleurSolution:=\useKV[Calisson]{Couleur};
+
+ Rayon=\useKV[Calisson]{Rayon};
+ Taille=\useKV[Calisson]{Taille};
+
+ pair A,B,C,D,E,F,O;
+ O=(0,0);
+ path cc;
+ cc=cercles(O,Rayon);
+ D=pointarc(cc,30);
+ E=pointarc(cc,90);
+ F=pointarc(cc,150);
+ A=pointarc(cc,210);
+ B=pointarc(cc,270);
+ C=pointarc(cc,330);
+ trace polygone(A,B,C,D,E,F) withpen pencircle scaled 2;
+ path Gauche,Droit,Haut,Bas,TopGauche,BasDroit;
+ Gauche=F--A--B;
+ Droit=E--D--C;
+ Haut=F--E--D;
+ Bas=A--B--C;
+ TopGauche=E--F--A;
+ BasDroit=D--C--B;
+ for k=1 upto 2*Taille-1:
+ trace (point(k*length Gauche/(2*Taille)) of Gauche)--(point(k*length Droit/(2*Taille)) of Droit) dashed evenly;
+ trace (point(k*length Haut/(2*Taille)) of Haut)--(point(k*length Bas/(2*Taille)) of Bas) dashed evenly;
+ trace (point(k*length TopGauche/(2*Taille)) of TopGauche)--(point(k*length BasDroit/(2*Taille)) of BasDroit) dashed evenly;
+ endfor;
+
+ pair Hor,Ver,Horn;
+ Hor=(1/Taille)[E,F];
+ Ver=rotation(Hor,E,60);
+ Horn=rotation(Hor,E,120);
+
+ % On positionne les points
+ pair M[];
+ n=0;
+ %Partie Gauche -> ok
+ for k=0 upto Taille-1:
+ for l=0 upto Taille:
+ n:=n+1;
+ M[n]=E+k*(Ver-E)+l*(Hor-E);
+ %dotlabel.top(decimal(n),M[n]);
+ endfor;
+ endfor;
+ for k=Taille upto 2*Taille-1:
+ for l=0 upto (2*Taille-1-k):
+ n:=n+1;
+ M[n]=E+k*(Ver-E)+l*(Hor-E);
+ %dotlabel.top(decimal(n),M[n]);
+ endfor;
+ endfor;
+ % Partie Droite -> ok
+ for k=1 upto Taille:
+ n:=n+1;
+ M[n]=E+k*(Horn-E);
+ %dotlabel.top(decimal(n),M[n]);
+ endfor;
+ for k=1 upto Taille-1:
+ for l=0 upto Taille:
+ n:=n+1;
+ M[n]=E+k*(Ver-E)+l*(Horn-E);
+ %dotlabel.top(decimal(n),M[n]);
+ endfor;
+ endfor;
+ for k=Taille upto 2*Taille-1:
+ for l=0 upto (2*Taille-1-k):
+ n:=n+1;
+ M[n]=E+k*(Ver-E)+l*(Horn-E);
+ %dotlabel.top(decimal(n),M[n]);
+ endfor;
+ endfor;
+ %
+
+ string Retiens;
+ Retiens="";
+
+ pair Depla;
+ Depla:=Hor;
+
+ vardef LesTracesg(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ for d=1 upto 3:
+ Retiens:=substring(d-1,d) of p_;
+ if d=1:Depla:=Hor
+ elseif d=2:Depla:=Ver
+ else : Depla:=Horn
+ fi;
+ if (Retiens="0") or (Retiens="f"):
+ elseif Retiens="t":
+ trace (chemin(Depla,E) shifted (M[n]-E)) withpen pencircle scaled 2;
+ elseif Retiens="s":
+ if Solution:
+ trace (chemin(Depla,E) shifted (M[n]-E)) withpen pencircle scaled 2 withcolor CouleurSolution;
+ fi;
+ fi;
+ endfor;
+ endfor;
+ enddef;
+
+ vardef LesTracesd(text t)=
+ for p_=t:
+ n:=n+1;
+ for d=1 upto 3:
+ Retiens:=substring(d-1,d) of p_;
+ if d=1:Depla:=Horn
+ elseif d=2:Depla:=Ver
+ else : Depla:=Hor
+ fi;
+ if (Retiens="0") or (Retiens="f"):
+ elseif Retiens="t":
+ trace (chemin(Depla,E) shifted (M[n]-E)) withpen pencircle scaled 2;
+ elseif Retiens="s":
+ if Solution:
+ trace (chemin(Depla,E) shifted (M[n]-E)) withpen pencircle scaled 2 withcolor CouleurSolution;
+ fi;
+ fi;
+ endfor;
+ endfor;
+ enddef;
+
+ LesTracesg(#1);
+ LesTracesd(#2);
+ \end{mplibcode}
+ \else
+ \begin{mpost}[mpsettings={boolean Solution; Solution:=\useKV[Calisson]{Solution}; Rayon=\useKV[Calisson]{Rayon};Taille=\useKV[Calisson]{Taille};color CouleurSolution; CouleurSolution:=\useKV[Calisson]{Couleur};}]
+ pair A,B,C,D,E,F,O;
+ O=(0,0);
+ path cc;
+ cc=cercles(O,Rayon);
+ D=pointarc(cc,30);
+ E=pointarc(cc,90);
+ F=pointarc(cc,150);
+ A=pointarc(cc,210);
+ B=pointarc(cc,270);
+ C=pointarc(cc,330);
+ trace polygone(A,B,C,D,E,F) withpen pencircle scaled 2;
+ path Gauche,Droit,Haut,Bas,TopGauche,BasDroit;
+ Gauche=F--A--B;
+ Droit=E--D--C;
+ Haut=F--E--D;
+ Bas=A--B--C;
+ TopGauche=E--F--A;
+ BasDroit=D--C--B;
+ for k=1 upto 2*Taille-1:
+ trace (point(k*length Gauche/(2*Taille)) of Gauche)--(point(k*length Droit/(2*Taille)) of Droit) dashed evenly;
+ trace (point(k*length Haut/(2*Taille)) of Haut)--(point(k*length Bas/(2*Taille)) of Bas) dashed evenly;
+ trace (point(k*length TopGauche/(2*Taille)) of TopGauche)--(point(k*length BasDroit/(2*Taille)) of BasDroit) dashed evenly;
+ endfor;
+
+ pair Hor,Ver,Horn;
+ Hor=(1/Taille)[E,F];
+ Ver=rotation(Hor,E,60);
+ Horn=rotation(Hor,E,120);
+
+ % On positionne les points
+ pair M[];
+ n=0;
+ %Partie Gauche -> ok
+ for k=0 upto Taille-1:
+ for l=0 upto Taille:
+ n:=n+1;
+ M[n]=E+k*(Ver-E)+l*(Hor-E);
+ %dotlabel.top(decimal(n),M[n]);
+ endfor;
+ endfor;
+ for k=Taille upto 2*Taille-1:
+ for l=0 upto (2*Taille-1-k):
+ n:=n+1;
+ M[n]=E+k*(Ver-E)+l*(Hor-E);
+ %dotlabel.top(decimal(n),M[n]);
+ endfor;
+ endfor;
+ % Partie Droite -> ok
+ for k=1 upto Taille:
+ n:=n+1;
+ M[n]=E+k*(Horn-E);
+ %dotlabel.top(decimal(n),M[n]);
+ endfor;
+ for k=1 upto Taille-1:
+ for l=0 upto Taille:
+ n:=n+1;
+ M[n]=E+k*(Ver-E)+l*(Horn-E);
+ %dotlabel.top(decimal(n),M[n]);
+ endfor;
+ endfor;
+ for k=Taille upto 2*Taille-1:
+ for l=0 upto (2*Taille-1-k):
+ n:=n+1;
+ M[n]=E+k*(Ver-E)+l*(Horn-E);
+ %dotlabel.top(decimal(n),M[n]);
+ endfor;
+ endfor;
+ %
+
+ string Retiens;
+ Retiens="";
+
+ pair Depla;
+ Depla:=Hor;
+
+ vardef LesTracesg(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ for d=1 upto 3:
+ Retiens:=substring(d-1,d) of p_;
+ if d=1:Depla:=Hor
+ elseif d=2:Depla:=Ver
+ else : Depla:=Horn
+ fi;
+ if (Retiens="0") or (Retiens="f"):
+ elseif Retiens="t":
+ trace (chemin(Depla,E) shifted (M[n]-E)) withpen pencircle scaled 2;
+ elseif Retiens="s":
+ if Solution:
+ trace (chemin(Depla,E) shifted (M[n]-E)) withpen pencircle scaled 2 withcolor CouleurSolution;
+ fi;
+ fi;
+ endfor;
+ endfor;
+ enddef;
+
+ vardef LesTracesd(text t)=
+ for p_=t:
+ n:=n+1;
+ for d=1 upto 3:
+ Retiens:=substring(d-1,d) of p_;
+ if d=1:Depla:=Horn
+ elseif d=2:Depla:=Ver
+ else : Depla:=Hor
+ fi;
+ if (Retiens="0") or (Retiens="f"):
+ elseif Retiens="t":
+ trace (chemin(Depla,E) shifted (M[n]-E)) withpen pencircle scaled 2;
+ elseif Retiens="s":
+ if Solution:
+ trace (chemin(Depla,E) shifted (M[n]-E)) withpen pencircle scaled 2 withcolor CouleurSolution;
+ fi;
+ fi;
+ endfor;
+ endfor;
+ enddef;
+
+ LesTracesg(#1);
+ LesTracesd(#2);
+ \end{mpost}
+ \fi
+}
+
+%%%
+% Tectonic
+%%%
+\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}}%
+
+\newlength\PfCTectonic
+
+\NewDocumentCommand\Tectonic{o m}{%
+ \useKVdefault[ClesTectonic]%
+ \setKV[ClesTectonic]{#1}%
+ \ifboolKV[ClesTectonic]{Tailles}{%
+ \setKV[ClesTectonic]{THauteur=\useKV[ClesTectonic]{Taille}}%
+ \setKV[ClesTectonic]{TLargeur=\useKV[ClesTectonic]{Taille}}%
+ }{}%
+ \setlength{\PfCTectonic}{\useKV[ClesTectonic]{Largeur}+\tabcolsep}%
+ \setsepchar[*]{,*/}%
+ \readlist*\ListeCasesTectonic{#2}%
+ \savecomparemode%
+ \comparestrict%
+ \begin{NiceTabular}{*{\useKV[ClesTectonic]{TLargeur}}{m{\useKV[ClesTectonic]{Largeur}}}}%
+ \CodeBefore%
+ \xintFor* ##1 in {\xintSeq{2}{\fpeval{\useKV[ClesTectonic]{THauteur}}}}\do{%
+ \tikz\draw[gray] (##1-|1) -- (##1-|last);%
+ }%
+ \xintFor* ##1 in {\xintSeq{2}{\fpeval{\useKV[ClesTectonic]{TLargeur}}}}\do{%
+ \tikz\draw[gray] (1-|##1) -- (last-|##1);%
+ }%
+ \Body%
+ \xintFor* ##1 in {\xintSeq{0}{\fpeval{\useKV[ClesTectonic]{THauteur}-1}}}\do{%
+ \xintFor* ##2 in {\xintSeq{1}{\useKV[ClesTectonic]{TLargeur}}}\do{%
+ \rule{0pt}{\PfCTectonic}%
+ \StrCompare{\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},1]}{b}[\PfCTestb]%\PfCTestb
+ \StrCompare{\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},1]}{l}[\PfCTestl]%\PfCTestr
+ \StrCompare{\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},1]}{lb}[\PfCTestlb]%\PfCTestbr
+ \xintifboolexpr{\PfCTestb==0}{%
+ \Block[borders={bottom},line-width=2pt]{1-1}{%
+ \ifboolKV[ClesTectonic]{Solution}{%
+ \StrCompare{\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},2]}{\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},3]}[\PfCTestMeme]
+ \xintifboolexpr{\PfCTestMeme>0}{\color{\useKV[ClesTectonic]{CouleurSolution}}}{}%
+ \Large\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},3]%
+ }{%
+ \ifboolKV[ClesTectonic]{Aide}{%
+ \xintifboolexpr{\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},3]==\useKV[ClesTectonic]{Nombre}}{%
+ \cellcolor{LightGray}\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},3]%
+ }{}%
+ }{}%
+ }%
+ }%
+ }{%
+ \xintifboolexpr{\PfCTestl==0}{%
+ \Block[borders={left},line-width=2pt]{1-1}{\ifboolKV[ClesTectonic]{Solution}{%
+ \StrCompare{\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},2]}{\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},3]}[\PfCTestMeme]
+ \xintifboolexpr{\PfCTestMeme>0}{\color{\useKV[ClesTectonic]{CouleurSolution}}}{}%
+ \Large\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},3]}{%
+ \ifboolKV[ClesTectonic]{Aide}{%
+ \xintifboolexpr{\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},3]==\useKV[ClesTectonic]{Nombre}}{%
+ \cellcolor{LightGray}\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},3]%
+ }{}%
+ }{}%
+ }%
+ }%
+ }{%
+ \xintifboolexpr{\PfCTestlb==0}{%
+ \Block[borders={bottom,left},line-width=2pt]{1-1}{\ifboolKV[ClesTectonic]{Solution}{%
+ \StrCompare{\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},2]}{\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},3]}[\PfCTestMeme]
+ \xintifboolexpr{\PfCTestMeme>0}{\color{\useKV[ClesTectonic]{CouleurSolution}}}{}
+ \Large\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},3]}{%
+ \ifboolKV[ClesTectonic]{Aide}{%
+ \xintifboolexpr{\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},3]==\useKV[ClesTectonic]{Nombre}}{%
+ \cellcolor{LightGray}\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},3]%
+ }{}%
+ }{}%
+ }%
+ }%
+ }{%
+ \Block{1-1}{\ifboolKV[ClesTectonic]{Solution}{%
+ \StrCompare{\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},2]}{\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},3]}[\PfCTestMeme]
+ \xintifboolexpr{\PfCTestMeme>0}{\color{\useKV[ClesTectonic]{CouleurSolution}}}{}
+ \Large\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},3]}{%
+ \ifboolKV[ClesTectonic]{Aide}{%
+ \xintifboolexpr{\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},3]==\useKV[ClesTectonic]{Nombre}}{%
+ \cellcolor{LightGray}\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*##1+##2},3]%
+ }{}%
+ }{}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \xintifForLast{\\}{&}%
+ }%
+ }%
+ \CodeAfter%
+ \tikz\draw[line width=2pt] (1-|1) rectangle (last-|last);%
+ \xintFor* ##1 in {\xintSeq{1}{\fpeval{\useKV[ClesTectonic]{THauteur}}}}\do{%
+ \xintFor* ##2 in {\xintSeq{1}{\useKV[ClesTectonic]{TLargeur}}}\do{%
+ \ifboolKV[ClesTectonic]{Solution}{%
+ %\tikz\node[fill=white] at (\fpeval{##1+0.5} -|\fpeval{##2+0.5}) {\Large$\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*(##1-1)+##2},2]$};%
+ }{%
+ \tikz\node at (\fpeval{##1+0.5} -|\fpeval{##2+0.5}) {\Large$\ListeCasesTectonic[\fpeval{\useKV[ClesTectonic]{TLargeur}*(##1-1)+##2},2]$};%
+ }%
+ }%
+ }%
+ \end{NiceTabular}%
+ \restorecomparemode%
+}%
+
+%%%
+% Enigme Aire
+%%%
+\setKVdefault[EnigmeAire]{Modele=A,Couleur=LightSteelBlue,Echelle=7mm,Etape=1}
+
+\def\MPEnigmeAireA{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ u:=\useKV[EnigmeAire]{Echelle};
+ pair A[],B[];
+ numeric la[];
+ la1=ceiling(3+uniformdeviate(7));
+ la2=ceiling(3+uniformdeviate(7));
+ la3=ceiling(3+uniformdeviate(7));
+ la4=ceiling(4+uniformdeviate(6));
+ A1=u*(1,1);
+ A2-A1=u*(10,0);
+ A3-A2=u*(0,5);
+ A4-A3=A1-A2;
+ B1=(la1/(la1+la2+la3))[A1,A2];
+ B2=((la1+la2)/(la1+la2+la3))[A1,A2];
+ B3-B2=A4-A1;
+ B4-B1=B3-B2;
+ fill polygone(B1,B2,B3,B4) withcolor \useKV[EnigmeAire]{Couleur};
+ trace polygone(B1,B2,B3,B4);
+ trace polygone(A1,A2,A3,A4);
+ label(TEX("\Aire[m]{"&decimal(la1*la4)&"}"),iso(A1,B4));
+ label(TEX("?\,\si{\square\meter}"),iso(B1,B3));
+ label(TEX("\Aire[m]{"&decimal(la3*la4)&"}"),iso(B2,A3));
+ trace cotation(A4,B3,3mm,3mm,TEX("\Lg[m]{"&decimal(la1+la2)&"}"));
+ trace cotation(B1,A2,-3mm,-3mm,TEX("\Lg[m]{"&decimal(la3+la2)&"}"));
+ \end{mplibcode}
+ \fi
+}
+
+\def\MPEnigmeAireB{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ u:=\useKV[EnigmeAire]{Echelle};
+ pair A[],B[];
+ numeric La[],la[],Ca[];
+ la1=ceiling(3+uniformdeviate(7));
+ la2=ceiling(3+uniformdeviate(7));
+ La1=ceiling(8+uniformdeviate(7));
+ La2=ceiling(uniformdeviate(5));
+ Ca1=1+ceiling(uniformdeviate(La1-La2-2));
+ Ca2=ceiling(uniformdeviate(la2-2));
+ A1=u*(1,1);
+ A2-A1=u*(10,0);
+ A3-A2=u*(0,2);
+ A4-A3=u*(-7,0);
+ A5-A4=u*(0,4);
+ A6-A5=(xpart(A1-A4),0);
+ A7-A6=A4-A5;
+ B1=(Ca1/(La1-La2))[A4,A3];
+ B3=((Ca2+1)/la2)[A4,A5];
+ B2-B1=B3-A4;
+ fill polygone(A4,B1,B2,B3) withcolor \useKV[EnigmeAire]{Couleur};
+ trace chemin(B1,B2,B3);
+ trace polygone(A1,A2,A3,A4,A5,A6);
+ trace chemin(A7,A4);
+ label(TEX("\Aire[m]{"&decimal(la1*La1)&"}"),iso(A1,A3));
+ label(TEX("?\,\si{\square\meter}"),iso(B1,B3));
+ label(TEX("\Aire[m]{"&decimal(la2*La2)&"}"),iso(A7,A5));
+ trace appelation(A6,A5,3mm,TEX("\Lg[m]{"&decimal(La2)&"}"));
+ trace appelation(B1,A3,3mm,TEX("\Lg[m]{"&decimal(La1-La2-Ca1)&"}"));
+ label.rt(TEX("\Lg[m]{"&decimal(la2-Ca2)&"}"),iso(A5,B3));
+ label.rt(TEX("\Lg[m]{"&decimal(la1)&"}"),iso(A2,A3));
+ \end{mplibcode}
+ \fi
+}
+
+\def\MPEnigmeAireC{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ u:=\useKV[EnigmeAire]{Echelle};
+ pair A[];
+ numeric la[],La[];
+ La1=ceiling(3+uniformdeviate(7));
+ La2=ceiling(3+uniformdeviate(7));
+ La3=ceiling(3+uniformdeviate(7));
+ la1=ceiling(3+uniformdeviate(7));
+ la2=ceiling(3+uniformdeviate(7));
+ la3=ceiling(3+uniformdeviate(7));
+ A1=u*(1,1);
+ A4-A1=if La1+La2+La3>la1+la2+la3:
+ u*(10,0)
+ else:
+ u*(8,0);
+ fi;
+ A2=(La1/(La1+La2+La3))[A1,A4];
+ A3=((La1+La2)/(La1+La2+La3))[A1,A4];
+ A5-A4=if La1+La2+La3>la1+la2+la3:
+ u*(0,7)
+ else:
+ u*(0,10);
+ fi;
+ A6-A5=A3-A4;
+ A7-A3=((la1+la2)/(la1+la2+la3))[A4,A5]-A4;
+ A8-A7=A2-A3;
+ A9-A2=(la1/(la1+la2+la3))[A4,A5]-A4;
+ A10-A9=A1-A2;
+ trace polygone(A1,A4,A5,A6,A7,A8,A9,A10);
+ trace segment(A2,A9);
+ trace segment(A3,A7);
+ label(TEX("\Aire[cm]{"&decimal(la1*La1)&"}"),iso(A1,A9));
+ label(TEX("\Aire[cm]{"&decimal((la1+la2)*La2)&"}"),iso(A2,A7));
+ label(TEX("\Aire[cm]{"&decimal((la1+la2+la3)*La3)&"}"),iso(A3,A5));
+ trace cotation(A1,A4,-3mm,-3mm,TEX("\Lg[cm]{"&decimal(La1+La2+La3)&"}"));
+ label.lft(TEX("\Lg{"&decimal(la1)&"}"),iso(A1,A10));
+ label.lft(TEX("\Lg{"&decimal(la2)&"}"),iso(A9,A8));
+ label.lft(TEX("?\,\si{\centi\meter}"),iso(A7,A6));
+ \end{mplibcode}
+ \fi
+}
+
+\def\MPEnigmeAireD{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ u:=\useKV[EnigmeAire]{Echelle};
+ Etape:=\useKV[EnigmeAire]{Etape};
+ pair A[];
+ numeric la[],La[];
+ la[1]=ceiling(3+uniformdeviate(7));
+ la[2]=ceiling(3+uniformdeviate(7));
+ k=1;
+ La[k]=ceiling(3+uniformdeviate(7));
+ A[1]=u*(9,-9);
+ A[6*(k-1)+2]-A[6*(k-1)+1]=u*(0,3);
+ A[6*(k-1)+3]-A[6*(k-1)+2]=u*(-6,0);
+ A[6*(k-1)+4]-A[6*(k-1)+3]=A[6*(k-1)+1]-A[6*(k-1)+2];
+ A[6*(k-1)+5]=(la[k]/(la[k]+la[k+1]))[A[6*(k-1)+1],A[6*(k-1)+4]];
+ A[6*(k-1)+6]-A[6*(k-1)+5]=A[6*(k-1)+2]-A[6*(k-1)+1];
+ trace polygone(A[6*(k-1)+1],A[6*(k-1)+2],A[6*(k-1)+3],A[6*(k-1)+4]);
+ trace segment(A[6*(k-1)+5],A[6*(k-1)+6]);
+ trace cotation(A[6*(k-1)+5],A[6*(k-1)+1],-3mm,-3mm,TEX("?\,\si{\centi\meter}"));
+ label(TEX("\Aire{"&decimal(la[k]*La[k])&"}"),iso(A[6*(k-1)+5],A[6*(k-1)+2]));
+ label(TEX("\Aire{"&decimal(la[k+1]*La[k])&"}"),iso(A[6*(k-1)+4],A[6*(k-1)+6]));
+ if Etape<2:
+ trace cotation(A[6*(k-1)+3],A[6*(k-1)+6],3mm,3mm,TEX("\Lg{"&decimal(la[k+1])&"}"));
+ fi;
+ for k=2 upto Etape:
+ La[k]=ceiling(3+uniformdeviate(7));
+ la[k+1]=ceiling(3+uniformdeviate(7));
+ A[6*(k-1)+1]=A[6*(k-1)];
+ A[6*(k-1)+2]-A[6*(k-1)+1]=u*(0,3);
+ A[6*(k-1)+3]-A[6*(k-1)+2]=u*(-6,0);
+ A[6*(k-1)+4]-A[6*(k-1)+3]=A[6*(k-1)+1]-A[6*(k-1)+2];
+ A[6*(k-1)+5]=A[6*(k-1)-3];%(la[k]/(la[k]+la[k+1]))[A[6*(k-1)+1],A[6*(k-1)+4]];
+ A[6*(k-1)+6]-A[6*(k-1)+5]=A[6*(k-1)+2]-A[6*(k-1)+1];
+ trace polygone(A[6*(k-1)+1],A[6*(k-1)+2],A[6*(k-1)+3],A[6*(k-1)+4]);
+ trace segment(A[6*(k-1)+5],A[6*(k-1)+6]);
+ if k=Etape:
+ trace cotation(A[6*(k-1)+3],A[6*(k-1)+6],3mm,3mm,TEX("\Lg{"&decimal(la[k+1])&"}"));
+ fi;
+ label(TEX("\Aire[cm]{"&decimal(la[k]*La[k])&"}"),iso(A[6*(k-1)+6],A[6*(k-1)]));
+ label(TEX("\Aire[cm]{"&decimal(la[k+1]*La[k])&"}"),iso(A[6*(k-1)+4],A[6*(k-1)+6]));
+ endfor;
+ \end{mplibcode}
+ \fi
+}
+
+\def\MPEnigmeAireE{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ u:=\useKV[EnigmeAire]{Echelle};
+ pair A[];
+ numeric la[],La[];
+ La1=ceiling(3+uniformdeviate(7));
+ La2=ceiling(3+uniformdeviate(7));
+ La3=ceiling(3+uniformdeviate(7));
+ la1=ceiling(4+uniformdeviate(5));
+ la2=ceiling(4+uniformdeviate(5));
+ la3=la1+la2+2;
+ A1=u*(7,1);
+ A11-A1=if la3>(La1+La2+La3):u*(0,10) else:u*(0,7) fi;
+ A2=(La1/(La1+La2+La3))[A1,A11];
+ A3=((La1+La2)/(La1+La2+La3))[A1,A11];
+ A8-A2=if la3>(La1+La2+La3):u*(-7,0) else:u*(-10,0) fi;
+ A6-A8=A11-A2;
+ A7-A8=A3-A2;
+ A4=(la2/la3)[A7,A3];
+ A5-A4=A6-A7;
+ A9=(la1/la3)[A2,A8];
+ A10-A9=A1-A2;
+ trace polygone(A1,A3,A4,A5,A6,A8,A9,A10);
+ trace segment(A7,A4);
+ trace segment(A2,A9);
+ label(TEX("\Aire[cm]{"&decimal(la1*La1)&"}"),iso(A1,A9));
+ label(TEX("\Aire[cm]{"&decimal(la3*La2)&"}"),iso(A2,A7));
+ label(TEX("\Aire[cm]{"&decimal(la2*La3)&"}"),iso(A4,A6));
+ trace cotationarc(A5,A4,5mm,4,1,TEX("\Lg[cm]{"&decimal(La3)&"}") rotated 90);
+ trace cotationarc(A9,A8,3mm,4,1,TEX("\Lg[cm]{"&decimal(la3-la1)&"}") rotated 180);
+ trace cotationarc(A4,A3,3mm,4,1,TEX("\Lg[cm]{"&decimal(la3-la2)&"}"));
+ trace cotationarc(A3,A1,5mm,3,1,TEX("?") rotated 90);
+ \end{mplibcode}
+ \fi
+}
+
+\def\MPEnigmeAireF{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ u:=\useKV[EnigmeAire]{Echelle};
+ pair A[];
+ numeric la[],La[];
+ la1=ceiling(2+uniformdeviate(4));
+ la2=ceiling(2+uniformdeviate(4));
+ la3=ceiling(2+uniformdeviate(4));
+ la4=ceiling(2+uniformdeviate(4));
+ La1=ceiling(8+uniformdeviate(4));
+ La2=ceiling(8+uniformdeviate(4));
+ La3=ceiling(8+uniformdeviate(4));
+ La4=ceiling(8+uniformdeviate(4));
+ A1=(0,0);
+ A2-A1=u*(0,-3.5);
+ A3-A2=u*(2.25,0);
+ A4-A1=A3-A2;
+ A5-A1=u*(6,0);
+ A6-A5=u*(0,2.5);
+ A7-A6=A1-A5;
+ A8-A7=u*(0,2);
+ A9-A8=u*(-2,0);
+ A10-A9=A1-A8;
+ A11-A1=u*(-4.5,0);
+ A12-A11=u*(0,-1.5);
+ A13-A12=A1-A11;
+ fill polygone(A1,A5,A6,A7) withcolor \useKV[EnigmeAire]{Couleur};
+ trace polygone(A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13);
+ trace segment(A7,A13);
+ trace segment(A10,A4);
+ label(TEX("?\,\si{\square\centi\meter}"),iso(A1,A6));
+ label(TEX("\Aire[cm]{"&decimal(la1*La1)&"}"),iso(A2,A4));
+ label(TEX("\Aire[cm]{"&decimal(la3*La3)&"}"),iso(A10,A8));
+ label(TEX("\Aire[cm]{"&decimal(la4*La4)&"}"),iso(A12,A1));
+ trace cotationarc(A12,A11,5mm,4,1,TEX("\Lg[cm]{"&decimal(la4)&"}") rotated -90);
+ trace cotationarc(A5,A4,5mm,4,1,TEX("\Lg[cm]{"&decimal(La2-la1)&"}") rotated 180);
+ trace cotationarc(A8,A7,5mm,4,1,TEX("\Lg[cm]{"&decimal(La3-la2)&"}") rotated 90);
+ trace cotationarc(A11,A10,3mm,4,1,TEX("\Lg[cm]{"&decimal(La4-la3)&"}"));
+ trace cotationarc(A2,A13,5mm,3,1,TEX("\Lg[cm]{"&decimal(La1-la4)&"}") rotated -90);
+ \end{mplibcode}
+ \fi
+}
+
+\NewDocumentCommand\EnigmeAire{o}{%
+ \useKVdefault[EnigmeAire]%
+ \setKV[EnigmeAire]{#1}%
+ \IfStrEqCase{\useKV[EnigmeAire]{Modele}}{%
+ {A}{\MPEnigmeAireA}
+ {B}{\MPEnigmeAireB}
+ {C}{\MPEnigmeAireC}
+ {D}{\MPEnigmeAireD}
+ {E}{\MPEnigmeAireE}
+ {F}{\MPEnigmeAireF}
+ }%
+}%
+
+%%%
% Barres de calculs
%%%
\setKVdefault[SuiteBarre]{Litteral=false,Perso=false,Decimaux=false}
@@ -1893,12 +2626,35 @@
pair K;
K=(0,0);
-
+
trace Engrenage(Mm[1],Zz[1],(0,0));
+
+ Signe=1;
+
for w=2 upto (n div 2):
K:=K+pointarc(cercles((0,0),u*Mm[w]*(Zz[w-1]+Zz[w])*0.5+0.04*u),0);
- AngleRot:=360/(2*Zz[w]);
- trace rotation(Engrenage(Mm[w],Zz[w],K),K,180-AngleRot);
+ AngleRot[w]:=360/(2*Zz[w]);
+ if w=2:
+ trace rotation(Engrenage(Mm[w],Zz[w],K),K,180-AngleRot[w]);
+ if (Zz[w] mod 2)=0:
+ Signe:=Signe*(-1);
+ fi;
+ else:
+ if (Zz[w] mod 2)=1:
+ if Signe=-1:
+ trace rotation(Engrenage(Mm[w],Zz[w],K),K,180);
+ else:
+ trace rotation(Engrenage(Mm[w],Zz[w],K),K,180-AngleRot[w]);
+ fi;
+ else:
+ Signe:=Signe*(-1);
+ if Signe=1:
+trace rotation(Engrenage(Mm[w],Zz[w],K),K,180);
+ else:
+trace rotation(Engrenage(Mm[w],Zz[w],K),K,180-AngleRot[w]);
+ fi;
+ fi;
+ fi;
endfor;
\end{mplibcode}
\else
@@ -1921,16 +2677,39 @@
pair K;
K=(0,0);
-
+
trace Engrenage(Mm[1],Zz[1],(0,0));
+
+ Signe=1;
+
for w=2 upto (n div 2):
K:=K+pointarc(cercles((0,0),u*Mm[w]*(Zz[w-1]+Zz[w])*0.5+0.04*u),0);
- AngleRot:=360/(2*Zz[w]);
- trace rotation(Engrenage(Mm[w],Zz[w],K),K,180-AngleRot);
+ AngleRot[w]:=360/(2*Zz[w]);
+ if w=2:
+ trace rotation(Engrenage(Mm[w],Zz[w],K),K,180-AngleRot[w]);
+ if (Zz[w] mod 2)=0:
+ Signe:=Signe*(-1);
+ fi;
+ else:
+ if (Zz[w] mod 2)=1:
+ if Signe=-1:
+ trace rotation(Engrenage(Mm[w],Zz[w],K),K,180);
+ else:
+ trace rotation(Engrenage(Mm[w],Zz[w],K),K,180-AngleRot[w]);
+ fi;
+ else:
+ Signe:=Signe*(-1);
+ if Signe=1:
+trace rotation(Engrenage(Mm[w],Zz[w],K),K,180);
+ else:
+trace rotation(Engrenage(Mm[w],Zz[w],K),K,180-AngleRot[w]);
+ fi;
+ fi;
+ fi;
endfor;
\end{mpost}
\fi
-}%
+}
%%%
% Tortue
@@ -19889,7 +20668,8 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
%%%
% Fonction
%%%
-\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,Epaisseur=1}
+\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,Epaisseur=1,Couleur=black,PointsCourbe=true,Codes=false}
+\defKV[ClesFonction]{Traces=\setKV[ClesFonction]{Codes}}%
\newtoks\toklistePtsFn%pour la discipline
@@ -20227,11 +21007,17 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ boolean PointsCourbe;
+ PointsCourbe=\useKV[ClesFonction]{PointsCourbe};
+
+ boolean Code;
+ Code=\useKV[ClesFonction]{Codes};
+
x.u:=#2;
y.u:=#3;
X.u:=#4;
Y.u:=#5;
- numeric dirav[],dirap[];
+
pair Fn[],Gn[];
n=0;
for p_=#1:
@@ -20244,7 +21030,13 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
MaxX=-999;
MinY=999;
MaxY=-999;
- for k=0 upto N:
+ debutbalai=0;
+ finbalai=N;
+ if \useKV[ClesFonction]{Prolonge}:
+ debutbalai:=2;
+ finbalai:=N-2;
+ fi;
+ for k=debutbalai upto finbalai:
if xpart(Gn[k])<MinX:
MinX:=xpart(Gn[k]);
fi;
@@ -20258,34 +21050,51 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
MaxY:=ypart(Gn[k]);
fi;
endfor;
+ if MaxY<1:
+ MaxY:=2;
+ fi;
+ if MinY>-1:
+ MinY:=-2;
+ fi;
+ %
+ path cadreexterieur;
+ cadreexterieur=(((MinX-1)*X.u*cm,(MinY-1)*Y.u*cm)--((MaxX+1)*X.u*cm,(MinY-1)*Y.u*cm)--((MaxX+1)*X.u*cm,(MaxY+1)*Y.u*cm)--((MinX-1)*X.u*cm,(MaxY+1)*Y.u*cm)--cycle);
+ draw Fn[1]
+ for k=2 upto N-1:
+ ..{dir angle(Fn[k+1]-Fn[k-1])}Fn[k]{dir angle(Fn[k+1]-Fn[k-1])}
+ endfor withpen pencircle scaled \useKV[ClesFonction]{Epaisseur} withcolor \useKV[ClesFonction]{Couleur};
+ clip currentpicture to cadreexterieur;
+ picture RetiensCourbe;
+ RetiensCourbe=currentpicture;
+ currentpicture:=nullpicture;
for k=MinY-1 step y.u until MaxY+1:
draw cm*((MinX-1)*X.u,k*Y.u)--cm*((MaxX+1)*X.u,k*Y.u) withcolor 0.75white;
endfor;
for k=MinX-1 step x.u until MaxX+1:
draw cm*(k*X.u,(MinY-1)*Y.u)--cm*(k*X.u,(MaxY+1)*Y.u) withcolor 0.75white;
endfor;
- for k=0 upto N:
+ if PointsCourbe:
+ for k=debutbalai upto finbalai:
fill cercles(Fn[k],0.5mm);
endfor;
drawarrow (0,(MinY-1)*Y.u*cm)--(0,(MaxY+1)*Y.u*cm);
drawarrow ((MinX-1)*X.u*cm,0)--((MaxX+1)*X.u*cm,0);
%
+ draw RetiensCourbe;
label.llft(btex O etex,(0,0));
dotlabel.bot(btex 1 etex,cm*X.u*(1,0));
dotlabel.lft(btex 1 etex,cm*Y.u*(0,1));
- %
- draw Fn[1]
- for k=2 upto N-1:
- ..{dir angle(Fn[k+1]-Fn[k-1])}Fn[k]{dir angle(Fn[k+1]-Fn[k-1])}
- endfor withpen pencircle scaled \useKV[ClesFonction]{Epaisseur};
+ fi;
+ if Code:
+ \useKV[ClesFonction]{Traces};
+ fi;
\end{mplibcode}
\else
- \begin{mpost}[mpsettings={numeric Epaisseur; Epaisseur=\useKV[ClesFonction]{Epaisseur};}]
+ \begin{mpost}[mpsettings={numeric Epaisseur; Epaisseur=\useKV[ClesFonction]{Epaisseur}; color CouleurCourbe; CouleurCourbe=\useKV[ClesFonction]{Couleur};boolean PointsCourbe;PointsCourbe=\useKV[ClesFonction]{PointsCourbe};}]
x.u:=#2;
y.u:=#3;
X.u:=#4;
Y.u:=#5;
- numeric dirav[],dirap[];
pair Fn[],Gn[];
n=0;
for p_=#1:
@@ -20298,7 +21107,13 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
MaxX=-999;
MinY=999;
MaxY=-999;
- for k=0 upto N:
+ debutbalai=0;
+ finbalai=N;
+ if \useKV[ClesFonction]{Prolonge}:
+ debutbalai:=2;
+ finbalai:=N-2;
+ fi;
+ for k=debutbalai upto finbalai:
if xpart(Gn[k])<MinX:
MinX:=xpart(Gn[k]);
fi;
@@ -20312,26 +21127,41 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
MaxY:=ypart(Gn[k]);
fi;
endfor;
+ if MaxY<1:
+ MaxY:=2;
+ fi;
+ if MinY>-1:
+ MinY:=-2;
+ fi;
+ %
+ path cadreexterieur;
+ cadreexterieur=(((MinX-1)*X.u*cm,(MinY-1)*Y.u*cm)--((MaxX+1)*X.u*cm,(MinY-1)*Y.u*cm)--((MaxX+1)*X.u*cm,(MaxY+1)*Y.u*cm)--((MinX-1)*X.u*cm,(MaxY+1)*Y.u*cm)--cycle);
+ draw Fn[1]
+ for k=2 upto N-1:
+ ..{dir angle(Fn[k+1]-Fn[k-1])}Fn[k]{dir angle(Fn[k+1]-Fn[k-1])}
+ endfor withpen pencircle scaled \useKV[ClesFonction]{Epaisseur} withcolor \useKV[ClesFonction]{Couleur};
+ clip currentpicture to cadreexterieur;
+ picture RetiensCourbe;
+ RetiensCourbe=currentpicture;
+ currentpicture:=nullpicture;
for k=MinY-1 step y.u until MaxY+1:
draw cm*((MinX-1)*X.u,k*Y.u)--cm*((MaxX+1)*X.u,k*Y.u) withcolor 0.75white;
endfor;
for k=MinX-1 step x.u until MaxX+1:
draw cm*(k*X.u,(MinY-1)*Y.u)--cm*(k*X.u,(MaxY+1)*Y.u) withcolor 0.75white;
endfor;
- for k=0 upto N:
+ if PointsCourbe:
+ for k=debutbalai upto finbalai:
fill cercles(Fn[k],0.5mm);
endfor;
drawarrow (0,(MinY-1)*Y.u*cm)--(0,(MaxY+1)*Y.u*cm);
drawarrow ((MinX-1)*X.u*cm,0)--((MaxX+1)*X.u*cm,0);
- %
+ %
+ draw RetiensCourbe;
label.llft(btex O etex,(0,0));
dotlabel.bot(btex 1 etex,cm*X.u*(1,0));
dotlabel.lft(btex 1 etex,cm*Y.u*(0,1));
- %
- draw Fn[1]
- for k=2 upto N-1:
- ..{dir angle(Fn[k+1]-Fn[k-1])}Fn[k]{dir angle(Fn[k+1]-Fn[k-1])}
- endfor withpen pencircle scaled Epaisseur;
+ fi;
\end{mpost}
\fi
}%
@@ -20411,7 +21241,8 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
%%%
% Diff\'erentes représentations graphiques
%%%
-\setKVdefault[TraceG]{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={},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}
+\setKVdefault[TraceG]{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={},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}%
+\defKV[TraceG]{Traces=\setKV[TraceG]{Code}}%
\newcommand\TraceGraphique[2][]{%
\useKVdefault[TraceG]%
@@ -20664,6 +21495,14 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
vardef arccos(expr x)=%Définition mathématique en radian
pi*angle((x,sqrt(1-x**2)))/180
enddef;
+
+ def enplace=
+ xscaled x.u yscaled y.u shifted (Origine*cm)
+ enddef;
+
+ vardef placepoint(expr q,r)=
+ (q,r) enplace
+ enddef;
path Cb[];
@@ -20700,10 +21539,10 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
drawoptions();
fi;
if Graduations:
- for k=gradx step gradx until xmax*gradx/grillex:
+ for k=gradx step gradx until bornesup:%xmax*gradx/grillex:
dotlabel.bot(TEX("\num{"&decimal(k)&"}"),(k*x.u+xpart(Origine*cm),ypart(Origine*cm)));
endfor;
- for k=-gradx step -gradx until xmin*gradx/grillex:
+ for k=-gradx step -gradx until borneinf:%xmin*gradx/grillex:
dotlabel.bot(TEX("\num{"&decimal(k)&"}"),(k*x.u+xpart(Origine*cm),ypart(Origine*cm)));
endfor;
for k=grady step grady until ymax*grady/grilley:
@@ -20713,6 +21552,7 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
dotlabel.lft(TEX("\num{"&decimal(k)&"}"),(xpart(Origine*cm),k*y.u+ypart(Origine*cm)));
endfor;
fi;
+
drawoptions(withpen pencircle scaled(1));
drawarrow (u*(0,ymin)--u*(0,ymax)) shifted (u*(xpart(Origine),0));
drawarrow (u*(xmin,0)--u*(xmax,0)) shifted (u*(0,ypart(Origine)));
@@ -20725,11 +21565,14 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
pair PT,Tangente;
PT:=point (pos*length Cb1) of Cb1;
Tangente:=unitvector(direction t of Cb1);
- label(btex \useKV[TraceG]{NomCourbe} etex rotated angle(Tangente),PT+2mm*(Tangente rotated 90));
+ label(TEX("\useKV[TraceG]{NomCourbe}") rotated angle(Tangente),PT+2mm*(Tangente rotated 90));
% fin labelisation
clip currentpicture to polygone(u*(xmin,ymin),u*(xmax,ymin),u*(xmax,ymax),u*(xmin,ymax));
label.rt(btex \useKV[TraceG]{LabelX} etex,u*(xmax,ypart(Origine)));
label.top(btex \useKV[TraceG]{LabelY} etex,u*(xpart(Origine),ymax));
+ if \useKV[TraceG]{Code}:
+ \useKV[TraceG]{Traces}
+ fi;
\end{mplibcode}
\else
\mpxcommands{%
@@ -22151,7 +22994,8 @@ u:=\useKV[ClesFormule]{Echelle};
%%%
% Reperage
%%%
-\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,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,Etages=4}
+\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,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,Etages=4,Code=false}
+\defKV[ClesReperage]{Traces=\setKV[ClesReperage]{Code}}
% ValeurOrigine permet de faire des morceaux de demi-droite gradu\'ee en passant par droite :)
\def\Updatetoksdroite#1/#2\nil{\addtotok\toklistepointdroite{#1,"#2",}}
@@ -22394,7 +23238,7 @@ u:=\useKV[ClesFormule]{Echelle};
drawarrow Projette(A)--Projette(1.5[D,A]);
drawarrow Projette(C)--Projette(1.5[D,C]);
drawarrow Projette(E)--Projette(1.5[D,E]);
- label.bot(btex $x$ etex,Projette(1.5[D,A]));
+ label.top(btex $x$ etex,Projette(1.5[D,A]));
label.top(btex $y$ etex,Projette(1.5[D,C]));
label.top(btex $z$ etex,Projette(1.5[D,E]));
label.ulft(btex 1 etex,Projette((1/#2)[D,A]));
@@ -22508,6 +23352,9 @@ u:=\useKV[ClesFormule]{Echelle};
toto(#7);
fi;
draw Pave(A,B,C,D,E,F,G,H)(#1,#3,#5);
+ if \useKV[ClesReperage]{Code}:
+ \useKV[ClesReperage]{Traces}
+ fi;
\end{mplibcode}
\else
\begin{mpost}[mpsettings={input PfCGeometrie;}]
@@ -24001,8 +24848,8 @@ u:=\useKV[ClesFormule]{Echelle};
temp=Tc1--Tc5--Tc6--Tc4--arccercle(Tc4,Tc1,Tc0)--cycle;
if nbt>0:
fill temp withcolor ColMercure;
- fi;
trace Tc5--Tc6;
+ fi;
trace arccercle(Tc4,Tc1,Tc0);
trace Tc1--Tc2--arccercle(Tc2,Tc3,iso(Tc2,Tc3))--Tc4;
enddef;
@@ -24183,11 +25030,11 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V
path temp;
temp=Tc1--Tc5--Tc6--Tc4--arccercle(Tc4,Tc1,Tc0)--cycle;
if nbt>0:
- fill temp;
+ fill temp withcolor ColMercure;
+ trace Tc5--Tc6;
fi;
trace arccercle(Tc4,Tc1,Tc0);
trace Tc1--Tc2--arccercle(Tc2,Tc3,iso(Tc2,Tc3))--Tc4;
- trace Tc5--Tc6;
enddef;
if Mercure:Thermo(1) else : Thermo(0) fi;
@@ -26897,7 +27744,8 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V
%%%
% Papiers
%%%
-\setKVdefault[Papiers]{Cinq=true,Seyes=false,Isometrique=false,IsometriquePointe=false,Millimetre=false,Triangle=false,Largeur=5,Hauteur=4,Couleur=black,Grille=-1,GrillePointe=-1,PageEntiere=false,ZoneTexte=false,Baseline=false}%
+\setKVdefault[Papiers]{Cinq=true,Seyes=false,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}}
%\def\MPBaseLineSkip#1#2#3{%à retravailler : ne fonctionne pas :(
% %
@@ -26990,6 +27838,9 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V
for k=0 step 0.5 until #2:
draw horizon shifted((0,k*cm));
endfor;
+ if \useKV[Papiers]{CodeAfter}:
+ \useKV[Papiers]{Traces};
+ fi;
\end{mplibcode}%
\else%
\begin{mpost}
diff --git a/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp b/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp
index 02a3f66ce2..3c5ed4be0d 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp
@@ -811,6 +811,28 @@ vardef cotationmil(expr aa,bb,ecart,decalage,cote)= %Christophe
cot
enddef;
+vardef cotationarc(expr aaa,bbb,decal,ecart,sens,texte)=%pour le texte sens=1 ou -1
+ save ty;
+ picture ty;
+ pair mnp,ctr;
+ mnp=iso(aaa,bbb)+decal*unitvector(rotation(bbb,iso(aaa,bbb),90)-iso(aaa,bbb));
+ ctr=CentreCercleC(aaa,bbb,mnp);
+ path cts[];
+ cts0=arccercle(bbb,aaa,ctr);
+ cts1=arccercle(bbb,cts0 intersectionpoint perpendiculaire(aaa,bbb,iso(aaa,bbb)),ctr);
+ cts2=arccercle(cts0 intersectionpoint perpendiculaire(aaa,bbb,iso(aaa,bbb)),aaa,ctr);
+ ty=image(
+ trace subpath(0,arctime(arclength cts1*(1-(ecart/10))) of cts1) of cts1 dashed evenly;
+ trace subpath(0,arctime(arclength cts2*(1-(ecart/10))) of reverse(cts2)) of reverse(cts2) dashed evenly;
+ if sens=1:
+ label(texte rotated (angle(bbb-aaa)),mnp);
+ else:
+ label(texte rotated (angle(bbb-aaa)+180),mnp);
+ fi;
+ );
+ ty
+ enddef;
+
%%%%%%%%%%
%francisation
%%%%%%%%%
diff --git a/macros/latex/contrib/profcollege/metapost/PfCSolid.mp b/macros/latex/contrib/profcollege/metapost/PfCSolid.mp
index 829fad5d30..342b992167 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCSolid.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCSolid.mp
@@ -988,4 +988,89 @@ def alphafill_(expr p, c) =
endgroup;
enddef;
+vardef Cercles(text t)=
+ save Cer;
+ save n;
+ n:=0;
+ for p_=t:
+ if color p_:
+ n:=n+1;
+ _T[n]:=p_;
+ fi;
+ endfor;
+ path Cer;
+ color ptcer[];
+ for k=0 step 5 until 360 :
+ ptcer[k div 5]-_T[1]=Distance(_T[1],_T[2])*((_T[4]-_T[3])*cosd(k)/Distance(_T[3],_T[4])+(_T[5]-_T[3])*sind(k)/Distance(_T[3],_T[5]));
+ endfor;
+ Cer=Projette(ptcer0)
+ for k=0 step 5 until 360 :
+ ..Projette(ptcer[k div 5])
+ endfor
+ ..cycle;
+ Cer
+enddef;
+
+vardef Label@#(expr s,z)=
+ save p; picture p;
+ label@#(s,Projette(z));
+enddef;
+vardef DotLabel@#(expr s,z)=
+ save p; picture p;
+ dotlabel@#(s,Projette(z));
+enddef;
+
+vardef DefinirSommets(text t)=
+ color t;
+ nbauto:=0;
+ for p_=t:
+ nbauto:=nbauto+1;
+ if unknown p_:p_=Sommet[nbauto]; else: p_:=Sommet[nbauto] fi;
+ endfor;
+enddef;
+
+vardef DefinirSommetsSection(text t)=
+ color t;
+ nbauto:=0;
+ for p_=t:
+ nbauto:=nbauto+1;
+ if unknown p_:p_=MSection[nbauto]; else: p_:=MSection[nbauto] fi;
+ endfor;
+enddef;
+
+vardef EcrireSommetsPave(text t)=
+ if AutoLabel:
+ nb:=0;
+ for p_=t:
+ nb:=nb+1;
+ if nb=1:
+ label.llft(TEX(""&p_&""),Projette(Sommet1));
+ fi;
+ if nb=2:
+ label.lrt(TEX(""&p_&""),Projette(Sommet2));
+ fi;
+ if nb=3:
+ label.rt(TEX(""&p_&""),Projette(Sommet3));
+ fi;
+ if nb=4:
+ if Pointilles:
+ label.ulft(TEX(""&p_&""),Projette(Sommet4));
+ fi;
+ fi;
+ if nb=5:
+ label.ulft(TEX(""&p_&""),Projette(Sommet5));
+ fi;
+ if nb=6:
+ label.lft(TEX(""&p_&""),Projette(Sommet6));
+ fi;
+ if nb=7:
+ label.lrt(TEX(""&p_&""),Projette(Sommet7));
+ fi;
+ if nb=8:
+ label.urt(TEX(""&p_&""),Projette(Sommet8));
+ fi;
+ endfor;
+ fi;
+enddef;
+
endinput;
diff --git a/macros/latex/contrib/elegantbook/License b/obsolete/macros/latex/contrib/elegantbook/License
index 2244313901..2244313901 100644
--- a/macros/latex/contrib/elegantbook/License
+++ b/obsolete/macros/latex/contrib/elegantbook/License
diff --git a/macros/latex/contrib/elegantbook/README.md b/obsolete/macros/latex/contrib/elegantbook/README.md
index 81a32d5340..81a32d5340 100644
--- a/macros/latex/contrib/elegantbook/README.md
+++ b/obsolete/macros/latex/contrib/elegantbook/README.md
diff --git a/macros/latex/contrib/elegantbook/elegantbook-cn.pdf b/obsolete/macros/latex/contrib/elegantbook/elegantbook-cn.pdf
index 28e8022c4c..28e8022c4c 100644
--- a/macros/latex/contrib/elegantbook/elegantbook-cn.pdf
+++ b/obsolete/macros/latex/contrib/elegantbook/elegantbook-cn.pdf
Binary files differ
diff --git a/macros/latex/contrib/elegantbook/elegantbook-cn.tex b/obsolete/macros/latex/contrib/elegantbook/elegantbook-cn.tex
index e289e77d37..e289e77d37 100644
--- a/macros/latex/contrib/elegantbook/elegantbook-cn.tex
+++ b/obsolete/macros/latex/contrib/elegantbook/elegantbook-cn.tex
diff --git a/macros/latex/contrib/elegantbook/elegantbook-en.pdf b/obsolete/macros/latex/contrib/elegantbook/elegantbook-en.pdf
index 1c2fcfdeb5..1c2fcfdeb5 100644
--- a/macros/latex/contrib/elegantbook/elegantbook-en.pdf
+++ b/obsolete/macros/latex/contrib/elegantbook/elegantbook-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/elegantbook/elegantbook-en.tex b/obsolete/macros/latex/contrib/elegantbook/elegantbook-en.tex
index c581abc9fe..c581abc9fe 100644
--- a/macros/latex/contrib/elegantbook/elegantbook-en.tex
+++ b/obsolete/macros/latex/contrib/elegantbook/elegantbook-en.tex
diff --git a/macros/latex/contrib/elegantbook/elegantbook.cls b/obsolete/macros/latex/contrib/elegantbook/elegantbook.cls
index 4fb3e3d93a..4fb3e3d93a 100644
--- a/macros/latex/contrib/elegantbook/elegantbook.cls
+++ b/obsolete/macros/latex/contrib/elegantbook/elegantbook.cls
diff --git a/macros/latex/contrib/elegantbook/figure/cover.jpg b/obsolete/macros/latex/contrib/elegantbook/figure/cover.jpg
index ac6395fd8f..ac6395fd8f 100644
--- a/macros/latex/contrib/elegantbook/figure/cover.jpg
+++ b/obsolete/macros/latex/contrib/elegantbook/figure/cover.jpg
Binary files differ
diff --git a/macros/latex/contrib/elegantbook/figure/logo-blue.png b/obsolete/macros/latex/contrib/elegantbook/figure/logo-blue.png
index 5b6db8397e..5b6db8397e 100644
--- a/macros/latex/contrib/elegantbook/figure/logo-blue.png
+++ b/obsolete/macros/latex/contrib/elegantbook/figure/logo-blue.png
Binary files differ
diff --git a/macros/latex/contrib/elegantbook/image/founder.png b/obsolete/macros/latex/contrib/elegantbook/image/founder.png
index 7f68e73c6a..7f68e73c6a 100644
--- a/macros/latex/contrib/elegantbook/image/founder.png
+++ b/obsolete/macros/latex/contrib/elegantbook/image/founder.png
Binary files differ
diff --git a/macros/latex/contrib/elegantbook/image/scatter.jpg b/obsolete/macros/latex/contrib/elegantbook/image/scatter.jpg
index 6692f1f454..6692f1f454 100644
--- a/macros/latex/contrib/elegantbook/image/scatter.jpg
+++ b/obsolete/macros/latex/contrib/elegantbook/image/scatter.jpg
Binary files differ
diff --git a/macros/latex/contrib/elegantbook/reference.bib b/obsolete/macros/latex/contrib/elegantbook/reference.bib
index c4870395f2..c4870395f2 100644
--- a/macros/latex/contrib/elegantbook/reference.bib
+++ b/obsolete/macros/latex/contrib/elegantbook/reference.bib
diff --git a/macros/latex/contrib/elegantnote/License b/obsolete/macros/latex/contrib/elegantnote/License
index 2244313901..2244313901 100644
--- a/macros/latex/contrib/elegantnote/License
+++ b/obsolete/macros/latex/contrib/elegantnote/License
diff --git a/macros/latex/contrib/elegantnote/README.md b/obsolete/macros/latex/contrib/elegantnote/README.md
index aa93fc8eb2..aa93fc8eb2 100644
--- a/macros/latex/contrib/elegantnote/README.md
+++ b/obsolete/macros/latex/contrib/elegantnote/README.md
diff --git a/macros/latex/contrib/elegantnote/elegantnote-cn.pdf b/obsolete/macros/latex/contrib/elegantnote/elegantnote-cn.pdf
index 8bf2257791..8bf2257791 100644
--- a/macros/latex/contrib/elegantnote/elegantnote-cn.pdf
+++ b/obsolete/macros/latex/contrib/elegantnote/elegantnote-cn.pdf
Binary files differ
diff --git a/macros/latex/contrib/elegantnote/elegantnote-cn.tex b/obsolete/macros/latex/contrib/elegantnote/elegantnote-cn.tex
index 92f891971c..92f891971c 100644
--- a/macros/latex/contrib/elegantnote/elegantnote-cn.tex
+++ b/obsolete/macros/latex/contrib/elegantnote/elegantnote-cn.tex
diff --git a/macros/latex/contrib/elegantnote/elegantnote-en.pdf b/obsolete/macros/latex/contrib/elegantnote/elegantnote-en.pdf
index 7f5f18c5f4..7f5f18c5f4 100644
--- a/macros/latex/contrib/elegantnote/elegantnote-en.pdf
+++ b/obsolete/macros/latex/contrib/elegantnote/elegantnote-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/elegantnote/elegantnote-en.tex b/obsolete/macros/latex/contrib/elegantnote/elegantnote-en.tex
index 8b61d99b15..8b61d99b15 100644
--- a/macros/latex/contrib/elegantnote/elegantnote-en.tex
+++ b/obsolete/macros/latex/contrib/elegantnote/elegantnote-en.tex
diff --git a/macros/latex/contrib/elegantnote/elegantnote.cls b/obsolete/macros/latex/contrib/elegantnote/elegantnote.cls
index 4dc70b15d4..4dc70b15d4 100644
--- a/macros/latex/contrib/elegantnote/elegantnote.cls
+++ b/obsolete/macros/latex/contrib/elegantnote/elegantnote.cls
diff --git a/macros/latex/contrib/elegantnote/image/founder.png b/obsolete/macros/latex/contrib/elegantnote/image/founder.png
index 7f68e73c6a..7f68e73c6a 100644
--- a/macros/latex/contrib/elegantnote/image/founder.png
+++ b/obsolete/macros/latex/contrib/elegantnote/image/founder.png
Binary files differ
diff --git a/macros/latex/contrib/elegantnote/image/logo-blue.png b/obsolete/macros/latex/contrib/elegantnote/image/logo-blue.png
index 5b6db8397e..5b6db8397e 100644
--- a/macros/latex/contrib/elegantnote/image/logo-blue.png
+++ b/obsolete/macros/latex/contrib/elegantnote/image/logo-blue.png
Binary files differ
diff --git a/macros/latex/contrib/elegantnote/image/logo.png b/obsolete/macros/latex/contrib/elegantnote/image/logo.png
index 1252e91ece..1252e91ece 100644
--- a/macros/latex/contrib/elegantnote/image/logo.png
+++ b/obsolete/macros/latex/contrib/elegantnote/image/logo.png
Binary files differ
diff --git a/macros/latex/contrib/elegantnote/image/scatter.pdf b/obsolete/macros/latex/contrib/elegantnote/image/scatter.pdf
index b217cdc055..b217cdc055 100644
--- a/macros/latex/contrib/elegantnote/image/scatter.pdf
+++ b/obsolete/macros/latex/contrib/elegantnote/image/scatter.pdf
Binary files differ
diff --git a/macros/latex/contrib/elegantnote/image/scatter.py b/obsolete/macros/latex/contrib/elegantnote/image/scatter.py
index 576e6b07df..576e6b07df 100644
--- a/macros/latex/contrib/elegantnote/image/scatter.py
+++ b/obsolete/macros/latex/contrib/elegantnote/image/scatter.py
diff --git a/macros/latex/contrib/elegantpaper/License b/obsolete/macros/latex/contrib/elegantpaper/License
index 2244313901..2244313901 100644
--- a/macros/latex/contrib/elegantpaper/License
+++ b/obsolete/macros/latex/contrib/elegantpaper/License
diff --git a/macros/latex/contrib/elegantpaper/README.md b/obsolete/macros/latex/contrib/elegantpaper/README.md
index 75e2f84320..75e2f84320 100644
--- a/macros/latex/contrib/elegantpaper/README.md
+++ b/obsolete/macros/latex/contrib/elegantpaper/README.md
diff --git a/macros/latex/contrib/elegantpaper/elegantpaper-cn.pdf b/obsolete/macros/latex/contrib/elegantpaper/elegantpaper-cn.pdf
index 9eed5768e2..9eed5768e2 100644
--- a/macros/latex/contrib/elegantpaper/elegantpaper-cn.pdf
+++ b/obsolete/macros/latex/contrib/elegantpaper/elegantpaper-cn.pdf
Binary files differ
diff --git a/macros/latex/contrib/elegantpaper/elegantpaper-cn.tex b/obsolete/macros/latex/contrib/elegantpaper/elegantpaper-cn.tex
index feb0beba62..feb0beba62 100644
--- a/macros/latex/contrib/elegantpaper/elegantpaper-cn.tex
+++ b/obsolete/macros/latex/contrib/elegantpaper/elegantpaper-cn.tex
diff --git a/macros/latex/contrib/elegantpaper/elegantpaper-en.pdf b/obsolete/macros/latex/contrib/elegantpaper/elegantpaper-en.pdf
index 89d191200f..89d191200f 100644
--- a/macros/latex/contrib/elegantpaper/elegantpaper-en.pdf
+++ b/obsolete/macros/latex/contrib/elegantpaper/elegantpaper-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/elegantpaper/elegantpaper-en.tex b/obsolete/macros/latex/contrib/elegantpaper/elegantpaper-en.tex
index 7126f03870..7126f03870 100644
--- a/macros/latex/contrib/elegantpaper/elegantpaper-en.tex
+++ b/obsolete/macros/latex/contrib/elegantpaper/elegantpaper-en.tex
diff --git a/macros/latex/contrib/elegantpaper/elegantpaper.cls b/obsolete/macros/latex/contrib/elegantpaper/elegantpaper.cls
index ca6a74f313..ca6a74f313 100644
--- a/macros/latex/contrib/elegantpaper/elegantpaper.cls
+++ b/obsolete/macros/latex/contrib/elegantpaper/elegantpaper.cls
diff --git a/macros/latex/contrib/elegantpaper/image/founder.png b/obsolete/macros/latex/contrib/elegantpaper/image/founder.png
index 7f68e73c6a..7f68e73c6a 100644
--- a/macros/latex/contrib/elegantpaper/image/founder.png
+++ b/obsolete/macros/latex/contrib/elegantpaper/image/founder.png
Binary files differ
diff --git a/macros/latex/contrib/elegantpaper/reference.bib b/obsolete/macros/latex/contrib/elegantpaper/reference.bib
index c4870395f2..c4870395f2 100644
--- a/macros/latex/contrib/elegantpaper/reference.bib
+++ b/obsolete/macros/latex/contrib/elegantpaper/reference.bib
diff --git a/support/latexindent/LatexIndent/Document.pm b/support/latexindent/LatexIndent/Document.pm
index 6a45320fe7..8982509445 100644
--- a/support/latexindent/LatexIndent/Document.pm
+++ b/support/latexindent/LatexIndent/Document.pm
@@ -37,7 +37,7 @@ use LatexIndent::BlankLines qw/protect_blank_lines unprotect_blank_lines condens
use LatexIndent::ModifyLineBreaks
qw/modify_line_breaks_body modify_line_breaks_end modify_line_breaks_end_after remove_line_breaks_begin adjust_line_breaks_end_parent verbatim_modify_line_breaks/;
use LatexIndent::Sentence qw/one_sentence_per_line/;
-use LatexIndent::Wrap qw/text_wrap/;
+use LatexIndent::Wrap qw/text_wrap text_wrap_comment_blocks/;
use LatexIndent::TrailingComments
qw/remove_trailing_comments put_trailing_comments_back_in add_comment_symbol construct_trailing_comment_regexp/;
use LatexIndent::HorizontalWhiteSpace qw/remove_trailing_whitespace remove_leading_space/;
@@ -297,6 +297,31 @@ sub process_body_of_text {
$logger->info('*Phase 4: final indentation check');
$self->final_indentation_check;
+ # one sentence per line: sentences are objects, as of V3.5.1
+ if ( $is_m_switch_active
+ and ${ $mainSettings{modifyLineBreaks}{oneSentencePerLine} }{manipulateSentences}
+ and ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{when} eq 'after' )
+ {
+ $logger->trace("*one-sentence-per-line text wrapping routine, textWrapOptions:when set to 'after'")
+ if $is_tt_switch_active;
+ $self->one_sentence_per_line( textWrap => 1 );
+ }
+
+ # option for text wrap
+ if ( $is_m_switch_active
+ and !${ $mainSettings{modifyLineBreaks}{oneSentencePerLine} }{manipulateSentences}
+ and !${ $mainSettings{modifyLineBreaks}{oneSentencePerLine} }{textWrapSentences}
+ and ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{columns} != 0
+ and ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{when} eq 'after' )
+ {
+ $self->text_wrap();
+ }
+
+ # option for comment text wrap
+ $self->text_wrap_comment_blocks()
+ if ($is_m_switch_active
+ and ${ ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{comments} }{wrap}
+ and ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{when} eq 'after' );
return;
}
@@ -304,8 +329,10 @@ sub find_objects {
my $self = shift;
# one sentence per line: sentences are objects, as of V3.5.1
- $self->one_sentence_per_line
- if ( $is_m_switch_active and ${ $mainSettings{modifyLineBreaks}{oneSentencePerLine} }{manipulateSentences} );
+ $self->one_sentence_per_line(
+ textWrap => ( ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{when} eq 'before' ) )
+ if ( $is_m_switch_active
+ and ${ $mainSettings{modifyLineBreaks}{oneSentencePerLine} }{manipulateSentences} );
# text wrapping
#
@@ -319,7 +346,8 @@ sub find_objects {
if ( $is_m_switch_active
and !${ $mainSettings{modifyLineBreaks}{oneSentencePerLine} }{manipulateSentences}
and !${ $mainSettings{modifyLineBreaks}{oneSentencePerLine} }{textWrapSentences}
- and ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{columns} != 0 )
+ and ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{columns} != 0
+ and ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{when} eq 'before' )
{
$self->text_wrap();
@@ -327,6 +355,12 @@ sub find_objects {
$self->verbatim_modify_line_breaks( when => "afterTextWrap" );
}
+ # option for comment text wrap
+ $self->text_wrap_comment_blocks()
+ if ($is_m_switch_active
+ and ${ ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{comments} }{wrap}
+ and ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{when} eq 'before' );
+
# search for environments
$logger->trace('*looking for ENVIRONMENTS') if $is_t_switch_active;
$self->find_environments if ${$self}{body} =~ m/$environmentBasicRegExp/s;
@@ -496,7 +530,13 @@ sub tasks_common_to_each_object {
$self->check_for_hidden_children if ${$self}{body} =~ m/$tokens{beginOfToken}/;
# double back slash poly-switch check
- $self->double_back_slash_else if ( $is_m_switch_active and ${$self}{lookForAlignDelims} );
+ $self->double_back_slash_else
+ if (
+ $is_m_switch_active
+ and ( ${$self}{lookForAlignDelims}
+ or ( defined ${$self}{DBSStartsOnOwnLine} and ${$self}{DBSStartsOnOwnLine} != 0 )
+ or ( defined ${$self}{DBSFinishesWithLineBreak} and ${$self}{DBSFinishesWithLineBreak} != 0 ) )
+ );
# some objects can format their body to align at the & character
$self->align_at_ampersand if ( ${$self}{lookForAlignDelims} and !${$self}{measureHiddenChildren} );
diff --git a/support/latexindent/LatexIndent/GetYamlSettings.pm b/support/latexindent/LatexIndent/GetYamlSettings.pm
index 23f5a70d85..a5931d17f7 100644
--- a/support/latexindent/LatexIndent/GetYamlSettings.pm
+++ b/support/latexindent/LatexIndent/GetYamlSettings.pm
@@ -117,16 +117,75 @@ sub yaml_read_settings {
# we'll need the home directory a lot in what follows
my $homeDir = File::HomeDir->my_home;
- $logger->info("*YAML settings read: indentconfig.yaml or .indentconfig.yaml") unless $switches{onlyDefault};
+ $logger->info("*YAML reading settings") unless $switches{onlyDefault};
+
+ my $indentconfig = undef;
+ if ( defined $ENV{LATEXINDENT_CONFIG} && !$switches{onlyDefault} ) {
+ if ( -f $ENV{LATEXINDENT_CONFIG} ) {
+ $indentconfig = $ENV{LATEXINDENT_CONFIG};
+ $logger->info('The $LATEXINDENT_CONFIG variable was detected.');
+ $logger->info( 'The value of $LATEXINDENT_CONFIG is: "' . $ENV{LATEXINDENT_CONFIG} . '"' );
+ }
+ else {
+ $logger->warn('*The $LATEXINDENT_CONFIG variable is assigned, but does not point to a file!');
+ $logger->warn( 'The value of $LATEXINDENT_CONFIG is: "' . $ENV{LATEXINDENT_CONFIG} . '"' );
+ }
+ }
+ if ( !defined $indentconfig && !$switches{onlyDefault} ) {
+
+# see all possible values of $^O here: https://perldoc.perl.org/perlport#Unix and https://perldoc.perl.org/perlport#DOS-and-Derivatives
+ if ( $^O eq "linux" ) {
+ if ( defined $ENV{XDG_CONFIG_HOME} && -f "$ENV{XDG_CONFIG_HOME}/latexindent/indentconfig.yaml" ) {
+ $indentconfig = "$ENV{XDG_CONFIG_HOME}/latexindent/indentconfig.yaml";
+ $logger->info( 'The $XDG_CONFIG_HOME variable and the config file in "'
+ . "$ENV{XDG_CONFIG_HOME}/latexindent/indentconfig.yaml"
+ . '" were recognized' );
+ $logger->info( 'The value of $XDG_CONFIG_HOME is: "' . $ENV{XDG_CONFIG_HOME} . '"' );
+ }
+ elsif ( -f "$homeDir/.config/latexindent/indentconfig.yaml" ) {
+ $indentconfig = "$homeDir/.config/latexindent/indentconfig.yaml";
+ $logger->info(
+ 'The config file in "' . "$homeDir/.config/latexindent/indentconfig.yaml" . '" was recognized' );
+ }
+ }
+ elsif ( $^O eq "darwin" ) {
+ if ( -f "$homeDir/Library/Preferences/latexindent/indentconfig.yaml" ) {
+ $indentconfig = "$homeDir/Library/Preferences/latexindent/indentconfig.yaml";
+ $logger->info( 'The config file in "'
+ . "$homeDir/Library/Preferences/latexindent/indentconfig.yaml"
+ . '" was recognized' );
+ }
+ }
+ elsif ( $^O eq "MSWin32" || $^O eq "cygwin" ) {
+ if ( defined $ENV{LOCALAPPDATA} && -f "$ENV{LOCALAPPDATA}/latexindent/indentconfig.yaml" ) {
+ $indentconfig = "$ENV{LOCALAPPDATA}/latexindent/indentconfig.yaml";
+ $logger->info( 'The $LOCALAPPDATA variable and the config file in "'
+ . "$ENV{LOCALAPPDATA}"
+ . '\latexindent\indentconfig.yaml" were recognized' );
+ $logger->info( 'The value of $LOCALAPPDATA is: "' . $ENV{LOCALAPPDATA} . '"' );
+ }
+ elsif ( -f "$homeDir/AppData/Local/latexindent/indentconfig.yaml" ) {
+ $indentconfig = "$homeDir/AppData/Local/latexindent/indentconfig.yaml";
+ $logger->info( 'The config file in "'
+ . "$homeDir"
+ . '\AppData\Local\latexindent\indentconfig.yaml" was recognized' );
+ }
+ }
- # get information about user settings- first check if indentconfig.yaml exists
- my $indentconfig = "$homeDir/indentconfig.yaml";
+ # if $indentconfig is still not defined, fallback to the location in $homeDir
+ if ( !defined $indentconfig ) {
- # if indentconfig.yaml doesn't exist, check for the hidden file, .indentconfig.yaml
- $indentconfig = "$homeDir/.indentconfig.yaml" if ( !-e $indentconfig );
+ # if all of these don't exist check home directly, with the non hidden file
+ $indentconfig = ( -f "$homeDir/indentconfig.yaml" ) ? "$homeDir/indentconfig.yaml" : undef;
+
+ # if indentconfig.yaml doesn't exist, check for the hidden file, .indentconfig.yaml
+ $indentconfig = ( -f "$homeDir/.indentconfig.yaml" ) ? "$homeDir/.indentconfig.yaml" : undef;
+ $logger->info( 'The config file in "' . "$indentconfig" . '" was recognized' ) if defined $indentconfig;
+ }
+ }
# messages for indentconfig.yaml and/or .indentconfig.yaml
- if ( -e $indentconfig and !$switches{onlyDefault} ) {
+ if ( defined $indentconfig && -f $indentconfig && !$switches{onlyDefault} ) {
# read the absolute paths from indentconfig.yaml
$userSettings = YAML::Tiny->read("$indentconfig");
@@ -135,19 +194,6 @@ sub yaml_read_settings {
if ( $userSettings and ( ref( $userSettings->[0] ) eq 'HASH' ) and $userSettings->[0]->{paths} ) {
$logger->info("Reading path information from $indentconfig");
- # if both indentconfig.yaml and .indentconfig.yaml exist
- if ( -e File::HomeDir->my_home . "/indentconfig.yaml"
- and -e File::HomeDir->my_home . "/.indentconfig.yaml" )
- {
- $logger->info("$homeDir/.indentconfig.yaml has been found, but $indentconfig takes priority");
- }
- elsif ( -e File::HomeDir->my_home . "/indentconfig.yaml" ) {
- $logger->info("(Alternatively $homeDir/.indentconfig.yaml can be used)");
- }
- elsif ( -e File::HomeDir->my_home . "/.indentconfig.yaml" ) {
- $logger->info("(Alternatively $homeDir/indentconfig.yaml can be used)");
- }
-
# output the contents of indentconfig to the log file
$logger->info( Dump \%{ $userSettings->[0] } );
@@ -190,7 +236,8 @@ sub yaml_read_settings {
else {
if ( $switches{onlyDefault} ) {
$logger->info("*-d switch active: only default settings requested");
- $logger->info("not reading USER settings from $indentconfig") if ( -e $indentconfig );
+ $logger->info("not reading USER settings from $indentconfig")
+ if ( defined $indentconfig && -e $indentconfig );
$logger->info("Ignoring the -l switch: $switches{readLocalSettings} (you used the -d switch)")
if ( $switches{readLocalSettings} );
$logger->info("Ignoring the -y switch: $switches{yaml} (you used the -d switch)") if ( $switches{yaml} );
@@ -198,9 +245,9 @@ sub yaml_read_settings {
$switches{yaml} = 0;
}
else {
- # give the user instructions on where to put indentconfig.yaml or .indentconfig.yaml
+ # give the user instructions on where to put the config file
$logger->info(
- "Home directory is $homeDir (didn't find either indentconfig.yaml or .indentconfig.yaml)\nTo specify user settings you would put indentconfig.yaml here: $homeDir/indentconfig.yaml\nAlternatively, you can use the hidden file .indentconfig.yaml as: $homeDir/.indentconfig.yaml"
+ "Home directory is $homeDir (didn't find a config file, see all posible locations here: https://latexindentpl.readthedocs.io/en/latest/sec-appendices.html#indentconfig-options)"
);
}
}
@@ -693,6 +740,25 @@ sub yaml_read_settings {
}
+ # the following are incompatible:
+ #
+ # modifyLineBreaks:
+ # oneSentencePerLine:
+ # manipulateSentences: 1
+ # textWrapSentences: 1
+ # sentenceIndent: " " <!------
+ # textWrapOptions:
+ # columns: 100
+ # when: after <!------
+ #
+ if ( $is_m_switch_active
+ and ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{when} eq 'after'
+ and ${ $mainSettings{modifyLineBreaks}{oneSentencePerLine} }{sentenceIndent} =~ m/\h+/ )
+ {
+ $logger->warn("*one-sentence-per-line *ignoring* sentenceIndent, as text wrapping set to 'after'");
+ ${ $mainSettings{modifyLineBreaks}{oneSentencePerLine} }{sentenceIndent} = q();
+ }
+
# some users may wish to see showAmalgamatedSettings
# which details the overall state of the settings modified
# from the default in various user files
@@ -887,8 +953,12 @@ sub yaml_modify_line_breaks_settings {
my @toBeAssignedTo = ${$self}{additionalAssignments} ? @{ ${$self}{additionalAssignments} } : ();
# the following will *definitley* be in the array, so let's add them
- push( @toBeAssignedTo,
- ( "BeginStartsOnOwnLine", "BodyStartsOnOwnLine", "EndStartsOnOwnLine", "EndFinishesWithLineBreak" ) );
+ push(
+ @toBeAssignedTo,
+ ( "BeginStartsOnOwnLine", "BodyStartsOnOwnLine", "EndStartsOnOwnLine", "EndFinishesWithLineBreak",
+ "DBSStartsOnOwnLine", "DBSFinishesWithLineBreak"
+ )
+ );
# we can efficiently loop through the following
foreach (@toBeAssignedTo) {
diff --git a/support/latexindent/LatexIndent/Sentence.pm b/support/latexindent/LatexIndent/Sentence.pm
index cee8b559ab..3447d975c3 100644
--- a/support/latexindent/LatexIndent/Sentence.pm
+++ b/support/latexindent/LatexIndent/Sentence.pm
@@ -32,15 +32,16 @@ our @EXPORT_OK = qw/one_sentence_per_line/;
our $sentenceCounter;
sub one_sentence_per_line {
- my $self = shift;
+ my $self = shift;
+ my %input = @_;
$logger->trace(
"*One sentence per line regular expression construction: (see oneSentencePerLine: manipulateSentences)")
if $is_t_switch_active;
+ #
# sentences FOLLOW
- # sentences FOLLOW
- # sentences FOLLOW
+ #
my $sentencesFollow = q();
while ( my ( $sentencesFollowEachPart, $yesNo )
@@ -105,9 +106,9 @@ sub one_sentence_per_line {
$logger->trace("Sentences follow regexp:") if $is_tt_switch_active;
$logger->trace($sentencesFollow) if $is_tt_switch_active;
+ #
# sentences BEGIN with
- # sentences BEGIN with
- # sentences BEGIN with
+ #
my $sentencesBeginWith = q();
while ( my ( $sentencesBeginWithEachPart, $yesNo )
@@ -136,9 +137,9 @@ sub one_sentence_per_line {
}
$sentencesBeginWith = qr/$sentencesBeginWith/;
+ #
# sentences END with
- # sentences END with
- # sentences END with
+ #
${ ${ $mainSettings{modifyLineBreaks}{oneSentencePerLine} }{sentencesEndWith} }{basicFullStop} = 0
if ${ ${ $mainSettings{modifyLineBreaks}{oneSentencePerLine} }{sentencesEndWith} }{betterFullStop};
my $sentencesEndWith = q();
@@ -181,9 +182,9 @@ sub one_sentence_per_line {
}
$sentencesEndWith = qr/$sentencesEndWith/;
+ #
# the OVERALL sentence regexp
- # the OVERALL sentence regexp
- # the OVERALL sentence regexp
+ #
$logger->trace("Overall sentences end with regexp:") if $is_tt_switch_active;
$logger->trace($sentencesEndWith) if $is_tt_switch_active;
@@ -268,12 +269,26 @@ sub one_sentence_per_line {
$replacementText = ${@{${$self}{children}}[-1]}{replacementText};
} else {
$sentenceCounter++;
- push(@sentenceStorage,{id=>$tokens{sentence}.$sentenceCounter.$tokens{endOfToken},value=>$middle.$end});
+ push(@sentenceStorage,{id=>$tokens{sentence}.$sentenceCounter.$tokens{endOfToken},value=>$middle.$end,leadingHorizontalSpace=>$h_space,follows=>$beginning});
$replacementText = $beginning.$h_space.$tokens{sentence}.$sentenceCounter.$tokens{endOfToken}.$trailingComments.$trailing.($lineBreaksAtEnd ? q() : "\n");
};
$replacementText;
/xsge;
+ #
+ # remove spaces between trailing comments
+ #
+ #
+ # from:
+ #
+ # % first comment %second comment
+ # ^
+ # into:
+ #
+ # % first comment%second comment
+ #
+ ${$self}{body} =~ s/($trailingCommentRegExp)\h($trailingCommentRegExp)/$1$2/sg;
+
if ( ${ $mainSettings{modifyLineBreaks}{oneSentencePerLine} }{sentenceIndent} !~ m/\h+/ ) {
# loop back through the sentenceStorage and replace with the sentence, adjusting line breaks
@@ -288,6 +303,8 @@ sub one_sentence_per_line {
body => $sentenceStorageValue,
name => "sentence",
modifyLineBreaksYamlName => "sentence",
+ leadingHorizontalSpace => ${$sentence}{leadingHorizontalSpace},
+ follows => ${$sentence}{follows},
);
# text wrapping
@@ -302,7 +319,7 @@ sub one_sentence_per_line {
${ $mainSettings{modifyLineBreaks}{oneSentencePerLine} }{textWrapSentences} = 0;
}
else {
- $sentenceObj->text_wrap;
+ $sentenceObj->text_wrap if $input{textWrap};
}
# indentation of sentences
@@ -316,7 +333,7 @@ sub one_sentence_per_line {
my $bodyFirstLine = $1;
my $remainingBody = $2;
my $indentation = ${ $mainSettings{modifyLineBreaks}{oneSentencePerLine} }{sentenceIndent};
- $logger->trace("first line of sencent: $bodyFirstLine") if $is_tt_switch_active;
+ $logger->trace("first line of sentence: $bodyFirstLine") if $is_tt_switch_active;
$logger->trace("remaining body (before indentation):\n'$remainingBody'") if ($is_tt_switch_active);
# add the indentation to all the body except first line
@@ -326,6 +343,7 @@ sub one_sentence_per_line {
# put the body back together
${$sentenceObj}{body} = $bodyFirstLine . "\n" . $remainingBody;
}
+
$sentenceStorageValue = ${$sentenceObj}{body};
}
diff --git a/support/latexindent/LatexIndent/TrailingComments.pm b/support/latexindent/LatexIndent/TrailingComments.pm
index 4ddfe8eb1a..71b1027a1b 100644
--- a/support/latexindent/LatexIndent/TrailingComments.pm
+++ b/support/latexindent/LatexIndent/TrailingComments.pm
@@ -24,7 +24,7 @@ use LatexIndent::LogFile qw/$logger/;
use Data::Dumper;
use Exporter qw/import/;
our @EXPORT_OK
- = qw/remove_trailing_comments put_trailing_comments_back_in $trailingCommentRegExp add_comment_symbol construct_trailing_comment_regexp/;
+ = qw/remove_trailing_comments put_trailing_comments_back_in $trailingCommentRegExp add_comment_symbol construct_trailing_comment_regexp @trailingComments/;
our @trailingComments;
our $commentCounter = 0;
our $trailingCommentRegExp;
@@ -39,13 +39,17 @@ sub add_comment_symbol {
# add a trailing comment token after, for example, a square brace [
# or a curly brace { when, for example, BeginStartsOnOwnLine == 2
- my $self = shift;
+ my $self = shift;
+ my %input = @_;
+
+ my $commentValue = ( defined $input{value} ? $input{value} : q() );
# increment the comment counter
$commentCounter++;
# store the comment -- without this, it won't get processed correctly at the end
- push( @trailingComments, { id => $tokens{trailingComment} . $commentCounter . $tokens{endOfToken}, value => q() } );
+ push( @trailingComments,
+ { id => $tokens{trailingComment} . $commentCounter . $tokens{endOfToken}, value => $commentValue } );
# log file info
$logger->trace("*Updating trailing comment array") if $is_t_switch_active;
@@ -145,8 +149,6 @@ sub put_trailing_comments_back_in {
$logger->trace("Comment not at end of line $trailingcommentID, moving it to end of line")
if $is_t_switch_active;
${$self}{body} =~ s/%$trailingcommentID(.*)$/$1%$trailingcommentValue/m;
- #####if(${$self}{body} =~ m/%$trailingcommentID\h*[^%]+?$/mx){
- ##### $logger->trace("Comment not at end of line $trailingcommentID, moving it to end of line") if $is_t_switch_active;
}
else {
${$self}{body} =~ s/%$trailingcommentID/%$trailingcommentValue/;
diff --git a/support/latexindent/LatexIndent/Version.pm b/support/latexindent/LatexIndent/Version.pm
index 9773c55fcd..090879ef0d 100644
--- a/support/latexindent/LatexIndent/Version.pm
+++ b/support/latexindent/LatexIndent/Version.pm
@@ -20,6 +20,6 @@ use warnings;
use Exporter qw/import/;
our @EXPORT_OK = qw/$versionNumber $versionDate/;
-our $versionNumber = '3.19.1';
-our $versionDate = '2022-12-04';
+our $versionNumber = '3.20';
+our $versionDate = '2023-01-01';
1
diff --git a/support/latexindent/LatexIndent/Wrap.pm b/support/latexindent/LatexIndent/Wrap.pm
index 7f3d026a4e..8af51ed176 100644
--- a/support/latexindent/LatexIndent/Wrap.pm
+++ b/support/latexindent/LatexIndent/Wrap.pm
@@ -20,14 +20,14 @@ use warnings;
use Text::Wrap;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::AlignmentAtAmpersand qw/get_column_width/;
-use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
+use LatexIndent::TrailingComments qw/$trailingCommentRegExp @trailingComments/;
use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active $is_m_switch_active/;
use LatexIndent::LogFile qw/$logger/;
use LatexIndent::Verbatim qw/%verbatimStorage/;
use Exporter qw/import/;
-our @ISA = "LatexIndent::Document"; # class inheritance, Programming Perl, pg 321
-our @EXPORT_OK = qw/text_wrap/;
+our @ISA = "LatexIndent::Document"; # class inheritance, Programming Perl, pg 321
+our @EXPORT_OK = qw/text_wrap text_wrap_comment_blocks/;
our $sentenceCounter;
sub text_wrap {
@@ -35,13 +35,15 @@ sub text_wrap {
$logger->trace("*Text wrap regular expression construction: (see textWrapOptions: )") if $is_t_switch_active;
+ #
# textWrap Blocks FOLLOW
- # textWrap Blocks FOLLOW
- # textWrap Blocks FOLLOW
+ #
my $blocksFollow = q();
my $blocksFollowHash = \%{ ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{blocksFollow} };
foreach my $blocksFollowEachPart ( sort keys %{$blocksFollowHash} ) {
+ last if ${$self}{modifyLineBreaksYamlName} eq 'sentence';
+
my $yesNo = $blocksFollowHash->{$blocksFollowEachPart};
if ($yesNo) {
if ( $blocksFollowEachPart eq "par" ) {
@@ -118,16 +120,19 @@ sub text_wrap {
# followed by 0 or more h-space and line breaks
$blocksFollow = ( $blocksFollow eq '' ? q() : qr/(?:$blocksFollow)(?:\h|\R)*/sx );
- $logger->trace("textWrap blocks follow regexp:") if $is_tt_switch_active;
+ $logger->trace("textWrap blocks follow regexp:")
+ if ( $is_tt_switch_active and ${$self}{modifyLineBreaksYamlName} ne 'sentence' );
$logger->trace($blocksFollow) if $is_tt_switch_active;
+ #
# textWrap Blocks BEGIN with
- # textWrap Blocks BEGIN with
- # textWrap Blocks BEGIN with
+ #
my $blocksBeginWith = q();
my $blocksBeginWithHash = \%{ ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{blocksBeginWith} };
foreach my $blocksBeginWithEachPart ( sort keys %{$blocksBeginWithHash} ) {
+ last if ${$self}{modifyLineBreaksYamlName} eq 'sentence';
+
my $yesNo = $blocksBeginWithHash->{$blocksBeginWithEachPart};
if ($yesNo) {
if ( $blocksBeginWithEachPart eq "A-Z" ) {
@@ -156,13 +161,15 @@ sub text_wrap {
}
$blocksBeginWith = qr/$blocksBeginWith/;
+ #
# textWrap Blocks END with
- # textWrap Blocks END with
- # textWrap Blocks END with
+ #
my $blocksEndBefore = q();
my $blocksEndBeforeHash = \%{ ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{blocksEndBefore} };
foreach my $blocksEndBeforeEachPart ( sort keys %{$blocksEndBeforeHash} ) {
+ last if ${$self}{modifyLineBreaksYamlName} eq 'sentence';
+
my $yesNo = $blocksEndBeforeHash->{$blocksEndBeforeEachPart};
if ($yesNo) {
if ( $blocksEndBeforeEachPart eq "other" ) {
@@ -191,14 +198,17 @@ sub text_wrap {
}
$blocksEndBefore = qr/$blocksEndBefore/;
+ #
# the OVERALL textWrap Blocks regexp
- # the OVERALL textWrap Blocks regexp
- # the OVERALL textWrap Blocks regexp
- $logger->trace("Overall textWrap Blocks end with regexp:") if $is_tt_switch_active;
+ #
+ $logger->trace("Overall textWrap Blocks end with regexp:")
+ if ( $is_tt_switch_active and ${$self}{modifyLineBreaksYamlName} ne 'sentence' );
$logger->trace($blocksEndBefore) if $is_tt_switch_active;
# store the text wrap blocks
my @textWrapBlockStorage = split( /($blocksFollow)/, ${$self}{body} );
+ @textWrapBlockStorage = split( /(\s*$blocksFollow)/, ${$self}{body} )
+ if ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{when} eq 'after';
# sentences need special treatment
if ( ${$self}{modifyLineBreaksYamlName} eq 'sentence' ) {
@@ -209,8 +219,9 @@ sub text_wrap {
my $columns = ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{columns};
# vital Text::Wrap options
- $Text::Wrap::columns = $columns;
- $Text::Wrap::huge = ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{huge};
+ $Text::Wrap::columns = $columns;
+ $Text::Wrap::huge = ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{huge};
+ $Text::Wrap::unexpand = 0;
# all other Text::Wrap options not usually needed/helpful, but available
$Text::Wrap::separator = ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{separator}
@@ -222,17 +233,123 @@ sub text_wrap {
$Text::Wrap::tabstop = ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{tabstop}
if ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{tabstop};
+ # only needed if when:after
+ my $subsequentSpace = q();
+
# clear the body, which will be updated with newly wrapped body
${$self}{body} = q();
+ # text wrap block loop counter
+ my $textWrapBlockCount = -1;
+
# loop back through the text wrap block storage
foreach my $textWrapBlockStorageValue (@textWrapBlockStorage) {
+
+ # increment text wrap block loop counter
+ $textWrapBlockCount++;
+
if ( $textWrapBlockStorageValue =~ m/^\s*$blocksBeginWith/s
or ${$self}{modifyLineBreaksYamlName} eq 'sentence' )
{
+# text wrap AFTER indentation needs to turn, for example (with columns: 100),
+#
+# before:
+#
+# \begin{abstract}
+# This is a very long sentence that should be wrapped at some point, which is the case but is is is is line width is not respected because of the indentation.
+# \end{abstract}
+#
+# after:
+#
+# \begin{abstract}
+# This is a very long sentence that should be wrapped at some point, which is the case but is is
+# is is line width is not respected because of the indentation.
+# \end{abstract}
+# ----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|
+# 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110
+#
+# note: it respects the column width AND indentation
+#
+# see also: test-cases/text-wrap/issue-359*.tex
+#
+ if ( ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{when} eq 'after' ) {
+
+ # reset columns
+ $Text::Wrap::columns = $columns;
+
+ # reset subsequent Space
+ $subsequentSpace = q();
+
+ my $numberOfTABS = 0;
+
+ # measure leading horizontal space
+ if ( ${$self}{modifyLineBreaksYamlName} eq 'sentence' ) {
+ my $thingToMeasure = ( split( /\R/, ${$self}{follows} ) )[-1];
+
+ $subsequentSpace
+ = ( ${$self}{follows} ? " " x length($thingToMeasure) : q() );
+
+ # possible tab adjustments
+ $thingToMeasure = q() if ( not defined $thingToMeasure );
+ $numberOfTABS = () = $thingToMeasure =~ m/\t/g;
+ for ( my $i = 1; $i <= $numberOfTABS; $i++ ) {
+ $subsequentSpace =~ s/ / /;
+ }
+ }
+ else {
+ # note, in the above we have defined
+ #
+ # @textWrapBlockStorage = split( /(\s*$blocksFollow)/, ${$self}{body} )
+ #
+ # so that both the *match* AND the *block* are stored, so
+ #
+ # ( split( /\R/, $textWrapBlockStorage[ $textWrapBlockCount - 1 ] ) )[-1]
+ #
+ # represents the *match*
+ #
+
+ # scenarios such as
+ #
+ # % comment goes here
+ # text that isn't commented
+ #
+ # means that the *match* doesn't contain a linebreak
+ #
+ if ( scalar( split( /\R/, $textWrapBlockStorage[ $textWrapBlockCount - 1 ] ) ) == 1
+ and ( split( /\R/, $textWrapBlockStorage[ $textWrapBlockCount - 1 ] ) )[-1]
+ =~ m/$trailingCommentRegExp/ )
+ {
+ $subsequentSpace = q();
+ }
+ else {
+ my $thingToMeasure = ( split( /\R/, $textWrapBlockStorage[ $textWrapBlockCount - 1 ] ) )[-1];
+
+ $subsequentSpace = (
+ $textWrapBlockCount == 0
+ ? q()
+ : " " x length($thingToMeasure)
+ );
+
+ # possible tab adjustments
+ $numberOfTABS = () = $thingToMeasure =~ m/\t/g;
+ for ( my $i = 1; $i <= $numberOfTABS; $i++ ) {
+ $subsequentSpace =~ s/ / /;
+ }
+ }
+ }
+ $Text::Wrap::columns = $columns - length($subsequentSpace);
+
+ # possible tab adjustments
+ for ( my $i = 1; $i <= $numberOfTABS; $i++ ) {
+ $subsequentSpace =~ s/ /\t/;
+ }
+ }
+
# LIMIT is one greater than the maximum number of times EXPR may be split
my @textWrapBeforeEndWith = split( /($blocksEndBefore)/, $textWrapBlockStorageValue, 2 );
+ @textWrapBeforeEndWith = split( /(\s*$blocksEndBefore)/, $textWrapBlockStorageValue, 2 )
+ if ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{when} eq 'after';
# sentences need special treatment
if ( ${$self}{modifyLineBreaksYamlName} eq 'sentence' ) {
@@ -355,6 +472,75 @@ sub text_wrap {
$textWrapBlockStorageValue = wrap( '', '', $textWrapBlockStorageValue )
if ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{columns} > 0;
+ # if text wrap has happened *AFTER* indentation,
+ # then we need to add the leading indentation
+ # onto the lines of the text wrap block
+ #
+ # before:
+ #
+ # \begin{abstract}
+ # This is a very long sentence that should be wrapped at some point, which is the case but is is
+ # is is line width is not respected because of the indentation.
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ # \end{abstract}
+ #
+ # after:
+ #
+ # \begin{abstract}
+ # This is a very long sentence that should be wrapped at some point, which is the case but is is
+ # is is line width is not respected because of the indentation.
+ # ^^^^
+ # \end{abstract}
+ if ( ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{when} eq 'after' ) {
+
+ # add leading indentation back in to the text-wrapped block
+ $textWrapBlockStorageValue =~ s/^/$subsequentSpace/mg;
+
+ # remove the very first leading space, which is already handled by blocks follow
+ $textWrapBlockStorageValue =~ s/^\h*//s unless ${$self}{modifyLineBreaksYamlName} eq 'sentence';
+ }
+
+ #
+ # optionally wrap comments
+ #
+ if ( ${ ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{comments} }{wrap}
+ and $trailingComments ne '' )
+ {
+
+ my $commentValue = q();
+
+ # split the trailing comments, and put the *values* together
+ foreach ( split( /([0-9]+)$tokens{endOfToken}/, $trailingComments ) ) {
+ next unless $_ =~ m/[0-9]/;
+
+ $commentValue .= ${ $trailingComments[ $_ - 1 ] }{value};
+ }
+
+# leading comment space, e.g.
+#
+# % This is a very very long trailing comment that needs to be wrapped by latexindent to make sure the visual display is in a good shape.
+# ^^^^^
+#
+ $commentValue =~ m/^(\h+)/s;
+ my $leadingCommentSpace = ( $1 ? $1 : ' ' );
+
+ # reset columns
+ $Text::Wrap::columns
+ = $columns - &get_column_width( ( split( /\R/, $textWrapBlockStorageValue ) )[-1] );
+ $commentValue = wrap( '', '', $commentValue );
+
+ # the 2nd and subsequent lines need further attention
+ my @commentArray = ( split( /\R/, $commentValue ) );
+ my $firstLine = shift(@commentArray);
+ my $secondCommentLineOnwards = join( " ", @commentArray );
+ $secondCommentLineOnwards =~ s/\h{2,}/ /sg;
+
+ # assemble the new trailing comments, which will be wrapped after this routine as a comment block
+ $trailingComments = "%" . $self->add_comment_symbol( value => $firstLine );
+ $trailingComments .= "\n$subsequentSpace%"
+ . $self->add_comment_symbol( value => $leadingCommentSpace . $secondCommentLineOnwards );
+ }
+
# append trailing comments from WITHIN the block
$textWrapBlockStorageValue =~ s/\R?$/$trailingComments\n/s if ( $trailingComments ne '' );
@@ -383,4 +569,142 @@ sub text_wrap {
}
+sub text_wrap_comment_blocks {
+
+ my $self = shift;
+
+ # call the text wrapping routine
+ my $columns = ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{columns};
+
+ #
+ # text wrap comment blocks
+ #
+ #
+ # from:
+ #
+ # % first comment
+ # % second comment
+ # % third comment
+ # % fourth comment
+ # % fifth comment
+ #
+ # into:
+ #
+ # % first comment second comment
+ # % third comment fourth comment
+ # % fifth comment
+ #
+ ${$self}{body} =~ s&((?:^\h*$trailingCommentRegExp\R)+)&
+ my @commentBlocks = $1;
+ my $trailingComments = q();
+
+ # loop through comment blocks
+ foreach my $commentBlock (@commentBlocks){
+
+ my $leadingHorizontalSpace = ($commentBlock =~ m|^(\h*\t*)|s? $1 : q());
+ my $numberOfTABS = () = $leadingHorizontalSpace =~ m/\t/g;
+ $leadingHorizontalSpace =~ s/\t/ /g;
+
+ my $commentValue = q();
+ $trailingComments = q();
+
+ # split the trailing comments, and put the *values* together
+ foreach (split(/([0-9]+)$tokens{endOfToken}/,$commentBlock)){
+ next unless $_ =~ m/[0-9]/;
+
+ $commentValue .= " ".${$trailingComments[$_-1]}{value};
+ }
+
+ # very first space
+ $commentValue =~ s|^\h||s;
+
+ # leading space
+ $commentValue =~ s|^(\h*)||s;
+ my $leadingSpace = (${${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{comments}}{inheritLeadingSpace}? $1: ' ' );
+
+ $commentValue =~ s/\h{2,}/ /sg if ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{multipleSpacesToSingle};
+
+ # reset columns
+ $Text::Wrap::columns = $columns - length($leadingHorizontalSpace)-length($leadingSpace);
+ # ^^
+ # for the space added after comment symbol below
+
+ # tab adjustment
+ for (my $i=1; $i<=$numberOfTABS;$i++){
+ $leadingHorizontalSpace =~ s/ /\t/;
+ }
+
+ # wrap the comments
+ $commentValue = wrap( '', '', $commentValue );
+
+ # put them into storage
+ $trailingComments .= $leadingHorizontalSpace."%".$self->add_comment_symbol(value=>$leadingSpace.$_)."\n" foreach (split( /\R/, $commentValue ) );
+
+ }
+ $trailingComments;
+ &xemg;
+
+ #
+ # text wrap multiple comments on a line
+ #
+ # from:
+ #
+ # % fifth comment% fourth comment% third comment% second comment% first comment
+ #
+ # into:
+ #
+ # % first comment second comment
+ # % third comment fourth comment
+ # % fifth comment
+ #
+ ${$self}{body} =~ s&((?:$trailingCommentRegExp\h*)+)&
+ my @commentBlocks = $1;
+ my $trailingComments = q();
+
+ # loop through comment blocks
+ foreach my $commentBlock (@commentBlocks){
+
+ my $leadingHorizontalSpace = ($commentBlock =~ m|^(\h*\t*)|s? $1 : q());
+ my $numberOfTABS = () = $leadingHorizontalSpace =~ m/\t/g;
+ $leadingHorizontalSpace =~ s/\t/ /g;
+
+ my $commentValue = q();
+ $trailingComments = q();
+
+ # split the trailing comments, and put the *values* together
+ foreach (split(/([0-9]+)$tokens{endOfToken}/,$commentBlock)){
+ next unless $_ =~ m/[0-9]/;
+
+ $commentValue .= " ".${$trailingComments[$_-1]}{value};
+ }
+
+ # very first space
+ $commentValue =~ s|^\h||s;
+
+ # leading space
+ $commentValue =~ s|^(\h*)||s;
+ my $leadingSpace = (${${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{comments}}{inheritLeadingSpace}? $1: ' ' );
+
+ $commentValue =~ s/\h{2,}/ /sg if ${ $mainSettings{modifyLineBreaks}{textWrapOptions} }{multipleSpacesToSingle};
+
+ # reset columns
+ $Text::Wrap::columns = $columns - length($leadingHorizontalSpace)-length($leadingSpace);
+ # ^^
+ # for the space added after comment symbol below
+
+ # tab adjustment
+ for (my $i=1; $i<=$numberOfTABS;$i++){
+ $leadingHorizontalSpace =~ s/ /\t/;
+ }
+
+ # wrap the comments
+ $commentValue = wrap( '', '', $commentValue );
+
+ # put them into storage
+ $trailingComments .= $leadingHorizontalSpace."%".$self->add_comment_symbol(value=>$leadingSpace.$_)."\n" foreach (split( /\R/, $commentValue ) );
+
+ }
+ $trailingComments;
+ &xemg;
+}
1;
diff --git a/support/latexindent/README b/support/latexindent/README
index 52b5bfcce7..ed1737c8ef 100644
--- a/support/latexindent/README
+++ b/support/latexindent/README
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- latexindent.pl, version 3.19.1, 2022-12-04
+ latexindent.pl, version 3.20, 2023-01-01
PERL script to indent code within environments, and align delimited
environments in .tex files.
diff --git a/support/latexindent/bin/linux/latexindent b/support/latexindent/bin/linux/latexindent
index 248757a3b5..8ae6e8a42b 100644
--- a/support/latexindent/bin/linux/latexindent
+++ b/support/latexindent/bin/linux/latexindent
Binary files differ
diff --git a/support/latexindent/bin/macos/latexindent b/support/latexindent/bin/macos/latexindent
index e685596550..5883f1bcf3 100644
--- a/support/latexindent/bin/macos/latexindent
+++ b/support/latexindent/bin/macos/latexindent
Binary files differ
diff --git a/support/latexindent/defaultSettings.yaml b/support/latexindent/defaultSettings.yaml
index c61de167a9..032735e6fd 100644
--- a/support/latexindent/defaultSettings.yaml
+++ b/support/latexindent/defaultSettings.yaml
@@ -1,4 +1,4 @@
-# defaultSettings.yaml for latexindent.pl, version 3.19.1, 2022-12-04
+# defaultSettings.yaml for latexindent.pl, version 3.20, 2023-01-01
# a script that aims to
# beautify .tex, .sty, .cls files
#
@@ -164,7 +164,7 @@ lookForAlignDelims:
justification: left
alignFinalDoubleBackSlash: 0
dontMeasure: 0
- delimiterRegEx: '(?<!\\)(&)'
+ delimiterRegEx: (?<!\\)(&)
delimiterJustification: left
lookForChildCodeBlocks: 1
tabularx:
@@ -252,16 +252,16 @@ itemNames:
# there's no restrictions
specialBeginEnd:
displayMath:
- begin: '\\\['
- end: '\\\]'
- lookForThis: 1
+ begin: (?<!\\)\\\[ # \[ but *not* \\[
+ end: \\\] # \]
+ lookForThis: 1
inlineMath:
- begin: '(?<!\$)(?<!\\)\$(?!\$)'
- end: '(?<!\\)\$(?!\$)'
+ begin: (?<!\$)(?<!\\)\$(?!\$) # $ but *not* \$ or $$
+ end: (?<!\\)\$(?!\$) # $ but *not* \$ or $$
lookForThis: 1
displayMathTeX:
- begin: '\$\$'
- end: '\$\$'
+ begin: \$\$ # $$
+ end: \$\$ # $$
lookForThis: 1
specialBeforeCommand: 0
@@ -332,34 +332,34 @@ indentRules:
# set noAdditionalIndent globally for codeblocks
noAdditionalIndentGlobal:
- environments: 0
- commands: 1
- optionalArguments: 0
- mandatoryArguments: 0
- ifElseFi: 0
- items: 0
- keyEqualsValuesBracesBrackets: 0
- namedGroupingBracesBrackets: 0
- UnNamedGroupingBracesBrackets: 0
- specialBeginEnd: 0
- afterHeading: 0
- filecontents: 0
+ environments: 0 # 0/1
+ commands: 1 # 0/1
+ optionalArguments: 0 # 0/1
+ mandatoryArguments: 0 # 0/1
+ ifElseFi: 0 # 0/1
+ items: 0 # 0/1
+ keyEqualsValuesBracesBrackets: 0 # 0/1
+ namedGroupingBracesBrackets: 0 # 0/1
+ UnNamedGroupingBracesBrackets: 0 # 0/1
+ specialBeginEnd: 0 # 0/1
+ afterHeading: 0 # 0/1
+ filecontents: 0 # 0/1
# set indentRules globally for codeblocks; these need
# to be horizontal spaces, if they are to be used
indentRulesGlobal:
- environments: 0
- commands: 0
- optionalArguments: 0
- mandatoryArguments: 0
- ifElseFi: 0
- items: 0
- keyEqualsValuesBracesBrackets: 0
- namedGroupingBracesBrackets: 0
- UnNamedGroupingBracesBrackets: 0
- specialBeginEnd: 0
- afterHeading: 0
- filecontents: 0
+ environments: 0 # 0/1
+ commands: 0 # 0/1
+ optionalArguments: 0 # 0/1
+ mandatoryArguments: 0 # 0/1
+ ifElseFi: 0 # 0/1
+ items: 0 # 0/1
+ keyEqualsValuesBracesBrackets: 0 # 0/1
+ namedGroupingBracesBrackets: 0 # 0/1
+ UnNamedGroupingBracesBrackets: 0 # 0/1
+ specialBeginEnd: 0 # 0/1
+ afterHeading: 0 # 0/1
+ filecontents: 0 # 0/1
# command code block details
commandCodeBlocks:
@@ -367,13 +367,13 @@ commandCodeBlocks:
stringsAllowedBetweenArguments:
-
amalgamate: 1
- - 'node'
- - 'at'
- - 'to'
- - 'decoration'
- - '\+\+'
- - '\-\-'
- - '\#\#\d'
+ - node
+ - at
+ - to
+ - decoration
+ - \+\+
+ - \-\-
+ - \#\#\d
commandNameSpecial:
-
amalgamate: 1
@@ -493,125 +493,129 @@ dos2unixlinebreaks: 0
#
# you can specify settings on a per-name basis
modifyLineBreaks:
- preserveBlankLines: 1
- condenseMultipleBlankLinesInto: 1
+ preserveBlankLines: 1 # 0/1
+ condenseMultipleBlankLinesInto: 1 # 0/1
oneSentencePerLine:
- manipulateSentences: 0
- removeSentenceLineBreaks: 1
- multipleSpacesToSingle: 1
- textWrapSentences: 0 # setting to 1 disables main textWrap routine
+ manipulateSentences: 0 # 0/1
+ removeSentenceLineBreaks: 1 # 0/1
+ multipleSpacesToSingle: 1 # 0/1
+ textWrapSentences: 0 # 1 disables main textWrap
sentenceIndent: ""
sentencesFollow:
- par: 1
- blankLine: 1
- fullStop: 1
- exclamationMark: 1
- questionMark: 1
- rightBrace: 1
- commentOnPreviousLine: 1
- other: 0
- sentencesBeginWith:
- A-Z: 1
- a-z: 0
- other: 0
+ par: 1 # 0/1
+ blankLine: 1 # 0/1
+ fullStop: 1 # 0/1
+ exclamationMark: 1 # 0/1
+ questionMark: 1 # 0/1
+ rightBrace: 1 # 0/1
+ commentOnPreviousLine: 1 # 0/1
+ other: 0 # regex
+ sentencesBeginWith:
+ A-Z: 1 # 0/1
+ a-z: 0 # 0/1
+ other: 0 # regex
sentencesEndWith:
- basicFullStop: 0
- betterFullStop: 1
- exclamationMark: 1
- questionMark: 1
- other: 0
+ basicFullStop: 0 # 0/1
+ betterFullStop: 1 # 0/1
+ exclamationMark: 1 # 0/1
+ questionMark: 1 # 0/1
+ other: 0 # regex
textWrapOptions:
columns: 0
- multipleSpacesToSingle: 1
+ multipleSpacesToSingle: 1
removeBlockLineBreaks: 1
+ when: before # before/after
+ comments:
+ wrap: 0 # 0/1
+ inheritLeadingSpace: 0 # 0/1
blocksFollow:
- headings: 1
- commentOnPreviousLine: 1
- par: 1
- blankLine: 1
- verbatim: 1
- filecontents: 1
- other: '\\\]|\\item(?:\h|\[)' # regex
+ headings: 1 # 0/1
+ commentOnPreviousLine: 1 # 0/1
+ par: 1 # 0/1
+ blankLine: 1 # 0/1
+ verbatim: 1 # 0/1
+ filecontents: 1 # 0/1
+ other: \\\]|\\item(?:\h|\[) # regex
blocksBeginWith:
- A-Z: 1
- a-z: 1
- 0-9: 0
- other: 0 # regex
+ A-Z: 1 # 0/1
+ a-z: 1 # 0/1
+ 0-9: 0 # 0/1
+ other: 0 # regex
blocksEndBefore:
- commentOnOwnLine: 1
- verbatim: 1
- filecontents: 1
- other: '\\begin\{|\\\[|\\end\{' # regex
- huge: overflow # forbid mid-word line breaks
+ commentOnOwnLine: 1 # 0/1
+ verbatim: 1 # 0/1
+ filecontents: 1 # 0/1
+ other: \\begin\{|\\\[|\\end\{ # regex
+ huge: overflow # forbid mid-word line breaks
separator: ""
- # poly-switches below here
- environments:
- BeginStartsOnOwnLine: 0
- BodyStartsOnOwnLine: 0
- EndStartsOnOwnLine: 0
- EndFinishesWithLineBreak: 0
- equation*:
- BeginStartsOnOwnLine: 0
- BodyStartsOnOwnLine: 0
- EndStartsOnOwnLine: 0
- EndFinishesWithLineBreak: 0
+ # poly-switches below here # -1: remove, 0: off, 1: add, 2: comment+add, 3: add blank line, 4: add blank line
+ environments:
+ BeginStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ BodyStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ EndStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ EndFinishesWithLineBreak: 0 # -1,0,1,2,3,4
+ equation*:
+ BeginStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ BodyStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ EndStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ EndFinishesWithLineBreak: 0 # -1,0,1,2,3,4
ifElseFi:
- IfStartsOnOwnLine: 0
- BodyStartsOnOwnLine: 0
- OrStartsOnOwnLine: 0
- OrFinishesWithLineBreak: 0
- ElseStartsOnOwnLine: 0
- ElseFinishesWithLineBreak: 0
- FiStartsOnOwnLine: 0
- FiFinishesWithLineBreak: 0
+ IfStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ BodyStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ OrStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ OrFinishesWithLineBreak: 0 # -1,0,1,2,3,4
+ ElseStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ ElseFinishesWithLineBreak: 0 # -1,0,1,2,3,4
+ FiStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ FiFinishesWithLineBreak: 0 # -1,0,1,2,3,4
ifnum:
- IfStartsOnOwnLine: 0
- BodyStartsOnOwnLine: 0
- OrStartsOnOwnLine: 0
- OrFinishesWithLineBreak: 0
- ElseStartsOnOwnLine: 0
- ElseFinishesWithLineBreak: 0
- FiStartsOnOwnLine: 0
- FiFinishesWithLineBreak: 0
+ IfStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ BodyStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ OrStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ OrFinishesWithLineBreak: 0 # -1,0,1,2,3,4
+ ElseStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ ElseFinishesWithLineBreak: 0 # -1,0,1,2,3,4
+ FiStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ FiFinishesWithLineBreak: 0 # -1,0,1,2,3,4
commands:
- CommandStartsOnOwnLine: 0
+ CommandStartsOnOwnLine: 0
CommandNameFinishesWithLineBreak: 0
optionalArguments:
- LSqBStartsOnOwnLine: 0
- OptArgBodyStartsOnOwnLine: 0
- RSqBStartsOnOwnLine: 0
- RSqBFinishesWithLineBreak: 0
- mandatoryArguments:
- LCuBStartsOnOwnLine: 0
- MandArgBodyStartsOnOwnLine: 0
- RCuBStartsOnOwnLine: 0
- RCuBFinishesWithLineBreak: 0
+ LSqBStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ OptArgBodyStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ RSqBStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ RSqBFinishesWithLineBreak: 0 # -1,0,1,2,3,4
+ mandatoryArguments:
+ LCuBStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ MandArgBodyStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ RCuBStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ RCuBFinishesWithLineBreak: 0 # -1,0,1,2,3,4
keyEqualsValuesBracesBrackets:
- KeyStartsOnOwnLine: 0
- EqualsStartsOnOwnLine: 0
- EqualsFinishesWithLineBreak: 0
- items:
- ItemStartsOnOwnLine: 0
- ItemFinishesWithLineBreak: 0
+ KeyStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ EqualsStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ EqualsFinishesWithLineBreak: 0 # -1,0,1,2,3,4
+ items:
+ ItemStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ ItemFinishesWithLineBreak: 0 # -1,0,1,2,3,4
namedGroupingBracesBrackets:
- NameStartsOnOwnLine: 0
- NameFinishesWithLineBreak: 0
+ NameStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ NameFinishesWithLineBreak: 0 # -1,0,1,2,3,4
specialBeginEnd:
- SpecialBeginStartsOnOwnLine: 0
- SpecialBodyStartsOnOwnLine: 0
- SpecialEndStartsOnOwnLine: 0
- SpecialEndFinishesWithLineBreak: 0
+ SpecialBeginStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ SpecialBodyStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ SpecialEndStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ SpecialEndFinishesWithLineBreak: 0 # -1,0,1,2,3,4
verbatim:
- VerbatimBeginStartsOnOwnLine: 0
- VerbatimEndFinishesWithLineBreak: 0
+ VerbatimBeginStartsOnOwnLine: 0 # -1,0,1,2,3,4
+ VerbatimEndFinishesWithLineBreak: 0 # -1,0,1,2,3,4
# replacements, only active when either -r or -rr switches are active
replacements:
-
amalgamate: 1
-
- this: 'latexindent.pl'
- that: 'pl.latexindent'
+ this: latexindent.pl
+ that: pl.latexindent
lookForThis: 0
when: before
@@ -619,28 +623,28 @@ replacements:
# is central to latexindent.pl
fineTuning:
environments:
- name: '[a-zA-Z@\*0-9_\\]+'
+ name: [a-zA-Z@\*0-9_\\]+
ifElseFi:
- name: '(?!@?if[a-zA-Z@]*?\{)@?if[a-zA-Z@]*?'
+ name: (?!@?if[a-zA-Z@]*?\{)@?if[a-zA-Z@]*?
commands:
- name: '[+a-zA-Z@\*0-9_\:]+?'
+ name: [+a-zA-Z@\*0-9_\:]+?
items:
- canBeFollowedBy: '(?:\[[^]]*?\])|(?:<[^>]*?>)'
+ canBeFollowedBy: (?:\[[^]]*?\])|(?:<[^>]*?>)
keyEqualsValuesBracesBrackets:
- name: '[a-zA-Z@\*0-9_\/.:\#-]+[a-zA-Z@\*0-9_\/.\h\{\}:\#-]*?'
- follow: '(?:(?<!\\)\{)|,|(?:(?<!\\)\[)'
+ name: [a-zA-Z@\*0-9_\/.:\#-]+[a-zA-Z@\*0-9_\/.\h\{\}:\#-]*?
+ follow: (?:(?<!\\)\{)|,|(?:(?<!\\)\[)
namedGroupingBracesBrackets:
- name: '[0-9\.a-zA-Z@\*><]+?'
- follow: '\h|\R|\{|\[|\$|\)|\('
+ name: [0-9\.a-zA-Z@\*><]+?
+ follow: \h|\R|\{|\[|\$|\)|\(
UnNamedGroupingBracesBrackets:
- follow: '\{|\[|,|&|\)|\(|\$'
+ follow: \{|\[|,|&|\)|\(|\$
arguments:
- before: '(?:#\d\h*;?,?\/?)+|\<.*?\>'
- between: '_|\^|\*'
+ before: (?:#\d\h*;?,?\/?)+|\<.*?\>
+ between: _|\^|\*
trailingComments:
- notPreceededBy: '(?<!\\)'
+ notPreceededBy: (?<!\\)
modifyLineBreaks:
- doubleBackSlash: '\\\\(?:\h*\[\h*\d+\h*[a-zA-Z]+\h*\])?'
+ doubleBackSlash: \\\\(?:\h*\[\h*\d+\h*[a-zA-Z]+\h*\])?
comma: ','
betterFullStop: |-
(?x) # ignore spaces in the below
diff --git a/support/latexindent/documentation/contributors.bib b/support/latexindent/documentation/contributors.bib
index 4b7af4f8da..0e74a4798b 100644
--- a/support/latexindent/documentation/contributors.bib
+++ b/support/latexindent/documentation/contributors.bib
@@ -174,3 +174,11 @@
author = "eggplants",
urldate = {2022-06-12},
keywords = {contributor},}
+
+@online{nehctargl,
+ title = " Added support for the XDG specification",
+ url = "https://github.com/cmhughes/latexindent.pl/pull/397",
+ date = {2022-12-23},
+ author = "Nehctargl",
+ urldate = {2022-12-23},
+ keywords = {contributor},}
diff --git a/support/latexindent/documentation/latexindent-yaml-schema.json b/support/latexindent/documentation/latexindent-yaml-schema.json
index b8492f4b15..5d490c800c 100644
--- a/support/latexindent/documentation/latexindent-yaml-schema.json
+++ b/support/latexindent/documentation/latexindent-yaml-schema.json
@@ -2,7 +2,7 @@
"$schema": "http://json-schema.org/schema",
"$id": "latexindent-yaml-schema.json",
"title": "latexindent.pl YAML schema",
- "description": "latexindent.pl YAML schema helper, V3.19.1 2022-12-04",
+ "description": "latexindent.pl YAML schema helper, V3.20 2023-01-01",
"type": "object",
"properties": {
"fileExtensionPreference": {
diff --git a/support/latexindent/documentation/latexindent.pdf b/support/latexindent/documentation/latexindent.pdf
index 383437f181..2717823a16 100644
--- a/support/latexindent/documentation/latexindent.pdf
+++ b/support/latexindent/documentation/latexindent.pdf
Binary files differ
diff --git a/support/latexindent/documentation/latexindent.tex b/support/latexindent/documentation/latexindent.tex
index d58def5ed8..a1fa404dda 100644
--- a/support/latexindent/documentation/latexindent.tex
+++ b/support/latexindent/documentation/latexindent.tex
@@ -335,10 +335,17 @@
#3,
}
+% reference: https://tex.stackexchange.com/questions/145504/yaml-syntax-highlighting/654987#654987
\lstdefinestyle{yaml-LST}{
style=tcblatex,
numbers=none,
- numberstyle=\color{red},
+ numberstyle=\color{red}\small,
+ basicstyle=\color{black}\ttfamily\small,
+ string=[s]{'}{'},
+ stringstyle=\color{black}\ttfamily\small,
+ comment=[l]{:},
+ commentstyle=\color{blue}\ttfamily\small,
+ morecomment=[l]{-},
}
\lstdefinestyle{demo}{
@@ -474,7 +481,7 @@
\lstdefinestyle{textWrapOptionsAll}{
style=yaml-LST,
- firstnumber=523,linerange={523-546},
+ firstnumber=523,linerange={523-550},
numbers=left,
}
@@ -504,19 +511,19 @@
\lstdefinestyle{modifylinebreaksEnv}{
style=yaml-LST,
- firstnumber=548,linerange={548-557},
+ firstnumber=552,linerange={552-561},
numbers=left,
}
\lstdefinestyle{replacements}{
style=yaml-LST,
- firstnumber=609,linerange={609-617},
+ firstnumber=613,linerange={613-621},
numbers=left,
}
\lstdefinestyle{fineTuning}{
style=yaml-LST,
- firstnumber=620,linerange={620-672},
+ firstnumber=624,linerange={624-676},
numbers=left,
}
@@ -807,9 +814,9 @@
need.
There have been several contributors to the project so far (and hopefully more in the
- future!); thank you very much to the people detailed in \vref{sec:contributors} for their
- valued contributions, and thank you to those who report bugs and request features at
- \cite{latexindent-home}.
+ future!); thank you very much to the people detailed in \vref{sec:contributors} for
+ their valued contributions, and thank you to those who report bugs and request features
+ at \cite{latexindent-home}.
\subsection{License}
\texttt{latexindent.pl} is free and open source, and it always will be; it
@@ -821,8 +828,8 @@
\cpageref{page:onlyonebackup}) but you should still be careful when using it. The script
has been tested on many files, but there are some known limitations (see
\cref{sec:knownlimitations}). You, the user, are responsible for ensuring that you
- maintain backups of your files before running \texttt{latexindent.pl} on them. I think it
- is important at this stage to restate an important part of the license here:
+ maintain backups of your files before running \texttt{latexindent.pl} on them. I think
+ it is important at this stage to restate an important part of the license here:
\begin{quote}\itshape
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -831,8 +838,9 @@
\end{quote}
There is certainly no malicious intent in releasing this script, and I do hope that it
works as you expect it to; if it does not, please first of all make sure that you have
- the correct settings, and then feel free to let me know at \cite{latexindent-home} with a
- complete minimum working example as I would like to improve the code as much as possible.
+ the correct settings, and then feel free to let me know at \cite{latexindent-home} with
+ a complete minimum working example as I would like to improve the code as much as
+ possible.
\begin{warning}
Before you try the script on anything important (like your thesis), test it out on the
@@ -853,9 +861,9 @@ latexindent.pl myfile.tex
from the command line.
- We give an introduction to \texttt{latexindent.pl} using \cref{lst:quick-start}; there is
- no explanation in this section, which is deliberate for a quick start. The rest of the
- manual is more verbose.
+ We give an introduction to \texttt{latexindent.pl} using \cref{lst:quick-start}; there
+ is no explanation in this section, which is deliberate for a quick start. The rest of
+ the manual is more verbose.
\cmhlistingsfromfile{demonstrations/quick-start.tex}{\texttt{quick-start.tex}}{lst:quick-start}
@@ -879,9 +887,10 @@ latexindent.pl -l quick-start1.yaml quick-start.tex
gives \cref{lst:quick-start-mod1}.
\begin{cmhtcbraster}
- \cmhlistingsfromfile{demonstrations/quick-start1.yaml}[yaml-TCB]{\texttt{quick-start1.yaml}}{lst:quick-start1yaml}
\cmhlistingsfromfile[showspaces=true]{demonstrations/quick-start-mod1.tex}{\texttt{quick-start-mod1.tex}}{lst:quick-start-mod1}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/quick-start1.yaml}[yaml-TCB]{\texttt{quick-start1.yaml}}{lst:quick-start1yaml}
\end{cmhtcbraster}
+ See \cref{subsec:indentation:and:horizontal:space}.
\end{example}
\begin{example}
@@ -894,9 +903,10 @@ latexindent.pl -l quick-start2.yaml quick-start.tex
gives \cref{lst:quick-start-mod2}.
\begin{cmhtcbraster}
- \cmhlistingsfromfile{demonstrations/quick-start2.yaml}[yaml-TCB]{\texttt{quick-start2.yaml}}{lst:quick-start2yaml}
\cmhlistingsfromfile[showspaces=true]{demonstrations/quick-start-mod2.tex}{\texttt{quick-start-mod2.tex}}{lst:quick-start-mod2}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/quick-start2.yaml}[yaml-TCB]{\texttt{quick-start2.yaml}}{lst:quick-start2yaml}
\end{cmhtcbraster}
+ See \cref{sec:noadd-indent-rules}.
\end{example}
\begin{example}
@@ -909,9 +919,10 @@ latexindent.pl -l quick-start3.yaml quick-start.tex
gives \cref{lst:quick-start-mod3}.
\begin{cmhtcbraster}
- \cmhlistingsfromfile{demonstrations/quick-start3.yaml}[yaml-TCB]{\texttt{quick-start3.yaml}}{lst:quick-start3yaml}
\cmhlistingsfromfile{demonstrations/quick-start-mod3.tex}{\texttt{quick-start-mod3.tex}}{lst:quick-start-mod3}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/quick-start3.yaml}[yaml-TCB]{\texttt{quick-start3.yaml}}{lst:quick-start3yaml}
\end{cmhtcbraster}
+ See \cref{sec:noadd-indent-rules}.
\end{example}
\begin{example}
@@ -924,8 +935,8 @@ latexindent.pl -m -l quick-start4.yaml quick-start.tex
gives \cref{lst:quick-start-mod4}.
\begin{cmhtcbraster}
- \cmhlistingsfromfile{demonstrations/quick-start4.yaml}[MLB-TCB]{\texttt{quick-start4.yaml}}{lst:quick-start4yaml}
\cmhlistingsfromfile{demonstrations/quick-start-mod4.tex}{\texttt{quick-start-mod4.tex}}{lst:quick-start-mod4}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/quick-start4.yaml}[MLB-TCB]{\texttt{quick-start4.yaml}}{lst:quick-start4yaml}
\end{cmhtcbraster}
Full details of text wrapping in \cref{subsec:textwrapping}.
\end{example}
@@ -940,8 +951,8 @@ latexindent.pl -m -l quick-start5.yaml quick-start.tex
gives \cref{lst:quick-start-mod5}.
\begin{cmhtcbraster}
- \cmhlistingsfromfile{demonstrations/quick-start5.yaml}[MLB-TCB]{\texttt{quick-start5.yaml}}{lst:quick-start5yaml}
\cmhlistingsfromfile{demonstrations/quick-start-mod5.tex}{\texttt{quick-start-mod5.tex}}{lst:quick-start-mod5}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/quick-start5.yaml}[MLB-TCB]{\texttt{quick-start5.yaml}}{lst:quick-start5yaml}
\end{cmhtcbraster}
Full details of text wrapping in \cref{subsec:textwrapping}.
\end{example}
@@ -956,8 +967,8 @@ latexindent.pl -m -l quick-start6.yaml quick-start.tex
gives \cref{lst:quick-start-mod6}.
\begin{cmhtcbraster}
- \cmhlistingsfromfile{demonstrations/quick-start6.yaml}[MLB-TCB]{\texttt{quick-start6.yaml}}{lst:quick-start6yaml}
\cmhlistingsfromfile{demonstrations/quick-start-mod6.tex}{\texttt{quick-start-mod6.tex}}{lst:quick-start-mod6}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/quick-start6.yaml}[MLB-TCB]{\texttt{quick-start6.yaml}}{lst:quick-start6yaml}
\end{cmhtcbraster}
This is an example of a \emph{poly-switch}; full details of \emph{poly-switches} are
covered in \cref{sec:poly-switches}.
@@ -973,12 +984,47 @@ latexindent.pl -m -l quick-start7.yaml quick-start.tex
gives \cref{lst:quick-start-mod7}.
\begin{cmhtcbraster}
- \cmhlistingsfromfile{demonstrations/quick-start7.yaml}[MLB-TCB]{\texttt{quick-start7.yaml}}{lst:quick-start7yaml}
\cmhlistingsfromfile{demonstrations/quick-start-mod7.tex}{\texttt{quick-start-mod7.tex}}{lst:quick-start-mod7}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/quick-start7.yaml}[MLB-TCB]{\texttt{quick-start7.yaml}}{lst:quick-start7yaml}
\end{cmhtcbraster}
Full details of \emph{poly-switches} are covered in \cref{sec:poly-switches}.
\end{example}
+ \begin{example}
+ Running
+
+ \begin{commandshell}
+latexindent.pl -l quick-start8.yaml quick-start.tex
+\end{commandshell}
+
+ gives \cref{lst:quick-start-mod8}; note that the \emph{preamble} has been indented.
+
+ \begin{cmhtcbraster}
+ \cmhlistingsfromfile*{demonstrations/quick-start-mod8.tex}{\texttt{quick-start-mod8.tex}}{lst:quick-start-mod8}
+ \cmhlistingsfromfile*[style=yaml-LST]{demonstrations/quick-start8.yaml}[yaml-TCB]{\texttt{quick-start8.yaml}}{lst:quick-start8yaml}
+ \end{cmhtcbraster}
+
+ See \cref{subsec:filecontents:preamble}.
+
+ \end{example}
+
+ \begin{example}
+ Running
+
+ \begin{commandshell}
+latexindent.pl -l quick-start9.yaml quick-start.tex
+\end{commandshell}
+
+ gives \cref{lst:quick-start-mod9}.
+
+ \begin{cmhtcbraster}
+ \cmhlistingsfromfile*{demonstrations/quick-start-mod9.tex}{\texttt{quick-start-mod9.tex}}{lst:quick-start-mod9}
+ \cmhlistingsfromfile*[style=yaml-LST]{demonstrations/quick-start9.yaml}[yaml-TCB]{\texttt{quick-start9.yaml}}{lst:quick-start9yaml}
+ \end{cmhtcbraster}
+
+ See \cref{sec:noadd-indent-rules}.
+ \end{example}
+
\subsection{Required perl modules}
If you receive an error message such as that given in
\cref{lst:poss-errors}, then you need to install the missing perl modules.
@@ -1005,43 +1051,45 @@ perl latexindent-module-installer.pl
The different listings are presented using different styles:
- \begin{minipage}{.4\textwidth}
- \cmhlistingsfromfile{demonstrations/demo-tex.tex}{\texttt{demo-tex.tex}}{lst:demo-tex}
- \end{minipage}%
- \hfill
- \begin{minipage}{.4\textwidth}
- This type of listing is a \texttt{.tex} file.
- \end{minipage}%
+ \begin{widepage}
+ \begin{minipage}{.4\linewidth}
+ \cmhlistingsfromfile{demonstrations/demo-tex.tex}{\texttt{demo-tex.tex}}{lst:demo-tex}
+ \end{minipage}%
+ \hfill
+ \begin{minipage}{.4\linewidth}
+ This type of listing is a \texttt{.tex} file.
+ \end{minipage}%
- \begin{minipage}{.4\textwidth}
- \cmhlistingsfromfile[style=fileExtensionPreference]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{fileExtensionPreference}}{lst:fileExtensionPreference-demo}
- \end{minipage}%
- \hfill
- \begin{minipage}{.4\textwidth}
- This type of listing is a \texttt{.yaml} file; when you see line numbers given (as here)
- it means that the snippet is taken directly from \texttt{defaultSettings.yaml}, discussed in
- detail in \vref{sec:defuseloc}.
- \end{minipage}%
+ \begin{minipage}{.4\linewidth}
+ \cmhlistingsfromfile[style=fileExtensionPreference]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{fileExtensionPreference}}{lst:fileExtensionPreference-demo}
+ \end{minipage}%
+ \hfill
+ \begin{minipage}{.4\linewidth}
+ This type of listing is a \texttt{.yaml} file; when you see line numbers given (as here)
+ it means that the snippet is taken directly from \texttt{defaultSettings.yaml}, discussed in
+ detail in \vref{sec:defuseloc}.
+ \end{minipage}%
- \begin{minipage}{.55\textwidth}
- \cmhlistingsfromfile[style=modifylinebreaks]{../defaultSettings.yaml}[MLB-TCB,width=.85\linewidth,before=\centering]{\texttt{modifyLineBreaks}}{lst:modifylinebreaks-demo}
- \end{minipage}%
- \hfill
- \begin{minipage}{.4\textwidth}
- This type of listing is a \texttt{.yaml} file, but it will only
- be relevant when the \texttt{-m} switch is active; see \vref{sec:modifylinebreaks}
- for more details.
- \end{minipage}%
+ \begin{minipage}{.6\linewidth}
+ \cmhlistingsfromfile[style=modifylinebreaks]{../defaultSettings.yaml}[MLB-TCB,width=.95\linewidth,before=\centering]{\texttt{modifyLineBreaks}}{lst:modifylinebreaks-demo}
+ \end{minipage}%
+ \hfill
+ \begin{minipage}{.4\linewidth}
+ This type of listing is a \texttt{.yaml} file, but it will only
+ be relevant when the \texttt{-m} switch is active; see \vref{sec:modifylinebreaks}
+ for more details.
+ \end{minipage}%
- \begin{minipage}{.55\textwidth}
- \cmhlistingsfromfile[style=replacements]{../defaultSettings.yaml}[replace-TCB,width=.85\linewidth,before=\centering]{\texttt{replacements}}{lst:replacements-demo}
- \end{minipage}%
- \hfill
- \begin{minipage}{.4\textwidth}
- This type of listing is a \texttt{.yaml} file, but it will only
- be relevant when the \texttt{-r} switch is active; see \vref{sec:replacements}
- for more details.
- \end{minipage}%
+ \begin{minipage}{.6\linewidth}
+ \cmhlistingsfromfile[style=replacements]{../defaultSettings.yaml}[replace-TCB,width=.95\linewidth,before=\centering]{\texttt{replacements}}{lst:replacements-demo}
+ \end{minipage}%
+ \hfill
+ \begin{minipage}{.4\linewidth}
+ This type of listing is a \texttt{.yaml} file, but it will only
+ be relevant when the \texttt{-r} switch is active; see \vref{sec:replacements}
+ for more details.
+ \end{minipage}%
+ \end{widepage}
% \begin{latexonly}
You will occasionally see dates shown in the margin (for example, next to this
@@ -1063,21 +1111,21 @@ perl latexindent-module-installer.pl
expressions, and if you'd like to read about them, I recommend \cite{masteringregexp}.
% arara: pdflatex: { files: [latexindent]}
\section{Demonstration: before and after}
- Let's give a demonstration of some before and after code -- after all, you probably won't
- want to try the script if you don't much like the results. You might also like to watch
- the video demonstration I made on youtube \cite{cmh:videodemo}
+ Let's give a demonstration of some before and after code -- after all, you probably
+ won't want to try the script if you don't much like the results. You might also like to
+ watch the video demonstration I made on youtube \cite{cmh:videodemo}
As you look at \crefrange{lst:filecontentsbefore}{lst:pstricksafter}, remember that
\texttt{latexindent.pl} is just following its rules, and there is nothing particular
about these code snippets. All of the rules can be modified so that you can personalise
your indentation scheme.
- In each of the samples given in \crefrange{lst:filecontentsbefore}{lst:pstricksafter} the
- `before' case is a `worst case scenario' with no effort to make indentation. The `after'
- result would be the same, regardless of the leading white space at the beginning of each
- line which is stripped by \texttt{latexindent.pl} (unless a \texttt{verbatim}-like
- environment or \texttt{noIndentBlock} is specified -- more on this in
- \cref{sec:defuseloc}).
+ In each of the samples given in \crefrange{lst:filecontentsbefore}{lst:pstricksafter}
+ the `before' case is a `worst case scenario' with no effort to make indentation. The
+ `after' result would be the same, regardless of the leading white space at the beginning
+ of each line which is stripped by \texttt{latexindent.pl} (unless a
+ \texttt{verbatim}-like environment or \texttt{noIndentBlock} is specified -- more on
+ this in \cref{sec:defuseloc}).
\begin{widepage}
\centering
@@ -1143,7 +1191,7 @@ perl latexindent-module-installer.pl
\index{latexindent-linux} \index{linux} \index{TeXLive}
\texttt{latexindent-linux} is available from \cite{latexindent-home}.
- \announce*{2022-10-30}{Linux Ubuntu standalone executable}
+ \announce{2022-10-30}{Linux Ubuntu standalone executable}
\subsubsection{macOS users without perl}
\texttt{latexindent.pl} ships with \texttt{latexindent-macos} for macOS
@@ -1151,7 +1199,7 @@ perl latexindent-module-installer.pl
\index{latexindent-macos} \index{macOS} \index{TeXLive}
\texttt{latexindent-macOS} is available from \cite{latexindent-home}.
- \announce*{2022-10-30}{macOS standalone executable}
+ \announce{2022-10-30}{macOS standalone executable}
\subsubsection{conda users}
Users of \texttt{conda} should see the details given in \cref{sec:app:conda}.
@@ -1201,8 +1249,8 @@ latexindent.pl -h
latexindent.pl --help
\end{commandshell}
- As above this will output a welcome message to the terminal, including the version number
- and available options.
+ As above this will output a welcome message to the terminal, including the version
+ number and available options.
\begin{commandshell}
latexindent.pl myfile.tex
@@ -1237,9 +1285,9 @@ latexindent.pl myfile.tex --overwrite
\cref{sec:defuseloc}, and in particular see \texttt{backupExtension} and
\texttt{onlyOneBackUp}.
- Note that if \texttt{latexindent.pl} can not create the backup, then it will exit without
- touching your original file; an error message will be given asking you to check the
- permissions of the backup file.
+ Note that if \texttt{latexindent.pl} can not create the backup, then it will exit
+ without touching your original file; an error message will be given asking you to check
+ the permissions of the backup file.
\flagbox{-wd, --overwriteIfDifferent}
\index{switches!-wd, --overwriteIfDifferent definition and details}
@@ -1270,14 +1318,14 @@ latexindent.pl --outputfile=output.tex myfile.tex
latexindent.pl --outputfile output.tex myfile.tex
\end{commandshell}
- This will indent \texttt{myfile.tex} and output it to \texttt{output.tex}, overwriting it
- (\texttt{output.tex}) if it already exists\footnote{Users of version 2.* should note the
- subtle change in syntax}.
+ This will indent \texttt{myfile.tex} and output it to \texttt{output.tex}, overwriting
+ it (\texttt{output.tex}) if it already exists\footnote{Users of version 2.* should note
+ the subtle change in syntax}.
Note that if \texttt{latexindent.pl} is called with both the \texttt{-w} and \texttt{-o}
- switches, then \texttt{-w} will be ignored and \texttt{-o} will take priority (this seems
- safer than the other way round). The same is true for the \texttt{-wd} switch, and the
- \texttt{-o} switch takes priority over it.
+ switches, then \texttt{-w} will be ignored and \texttt{-o} will take priority (this
+ seems safer than the other way round). The same is true for the \texttt{-wd} switch, and
+ the \texttt{-o} switch takes priority over it.
Note that using \texttt{-o} as above is equivalent to using
@@ -1295,9 +1343,9 @@ latexindent.pl myfile.tex -o=output
latexindent.pl myfile.tex -o=output.tex
\end{commandshell}
- You can call the \texttt{-o} switch using a \texttt{+} symbol at the beginning; this will
- \announce{2017-06-25}{+ sign in o switch} concatenate the name of the input file and the
- text given to the \texttt{-o} switch. For example, the following two calls to
+ You can call the \texttt{-o} switch using a \texttt{+} symbol at the beginning; this
+ will \announce{2017-06-25}{+ sign in o switch} concatenate the name of the input file
+ and the text given to the \texttt{-o} switch. For example, the following two calls to
\texttt{latexindent.pl} are equivalent:%
\begin{commandshell}
@@ -1337,7 +1385,8 @@ latexindent.pl myfile.tex -o=+out++
then try \texttt{myfileout1.tex}, and so on.
There is no need to specify a file extension when using the \texttt{++} feature, but if
- you wish to, then you should include it \emph{after} the \texttt{++} symbols, for example
+ you wish to, then you should include it \emph{after} the \texttt{++} symbols, for
+ example
\begin{commandshell}
latexindent.pl myfile.tex -o=+out++.tex
@@ -1407,8 +1456,8 @@ latexindent.pl myfile.tex -l=first.yaml,second.yaml,third.yaml
The \texttt{-l} flag can take an \emph{optional} parameter which details the name (or
names separated by commas) of a YAML file(s) that resides in the same directory as
- \texttt{myfile.tex}; you can use this option if you would like to load a settings file in
- the current working directory that is \emph{not} called \texttt{localSettings.yaml}.
+ \texttt{myfile.tex}; you can use this option if you would like to load a settings file
+ in the current working directory that is \emph{not} called \texttt{localSettings.yaml}.
\announce{2017-08-21}*{-l switch absolute paths} In fact, you can specify both
\emph{relative} and \emph{absolute paths} for your YAML files; for example%
@@ -1418,8 +1467,8 @@ latexindent.pl -l=/home/cmhughes/Desktop/myyaml.yaml myfile.tex
latexindent.pl -l=C:\Users\cmhughes\Desktop\myyaml.yaml myfile.tex
\end{commandshell}
- You will find a lot of other explicit demonstrations of how to use the \texttt{-l} switch
- throughout this documentation,
+ You will find a lot of other explicit demonstrations of how to use the \texttt{-l}
+ switch throughout this documentation,
You can call the \texttt{-l} switch with a `+' symbol either before or after
\announce{2017-06-25}{+ sign with -l switch} another YAML file; for example:
@@ -1454,8 +1503,8 @@ latexindent.pl -l + myyaml.yaml myfile.tex
ignored. If you wish to use spaces between any of the YAML settings, then you must wrap
the entire list of YAML files in quotes, as demonstrated above.
- You may also choose to omit the \texttt{yaml} extension, such as \announce{2017-06-25}{no
- extension for -l switch}%
+ You may also choose to omit the \texttt{yaml} extension, such as
+ \announce{2017-06-25}{no extension for -l switch}%
\begin{commandshell}
latexindent.pl -l=localSettings,myyaml myfile.tex
@@ -1493,8 +1542,8 @@ latexindent.pl -d myfile.tex
using this switch. By default, \texttt{latexindent.pl} will always search for
\texttt{indentconfig.yaml} or \texttt{.indentconfig.yaml} in your home directory. If you
would prefer it not to do so then (instead of deleting or renaming
- \texttt{indentconfig.yaml} or \texttt{.indentconfig.yaml}) you can simply call the script
- with the \texttt{-d} switch; note that this will also tell the script to ignore
+ \texttt{indentconfig.yaml} or \texttt{.indentconfig.yaml}) you can simply call the
+ script with the \texttt{-d} switch; note that this will also tell the script to ignore
\texttt{localSettings.yaml} even if it has been called with the \texttt{-l} switch;
\texttt{latexindent.pl} \announce{2017-08-21}*{updated -d switch} will also ignore any
settings specified from the \texttt{-y} switch.%
@@ -1576,8 +1625,9 @@ cat myfile.tex | latexindent.pl -
have content in \texttt{myfile.tex}, then the above command will output the results of
operating upon \texttt{myfile.tex}.
- If you wish to use this feature with your own local settings, via the \texttt{-l} switch,
- then you should finish your call to \texttt{latexindent.pl} with a \texttt{-} sign:
+ If you wish to use this feature with your own local settings, via the \texttt{-l}
+ switch, then you should finish your call to \texttt{latexindent.pl} with a \texttt{-}
+ sign:
\begin{commandshell}
cat myfile.tex | latexindent.pl -l=mysettings.yaml -
@@ -1606,9 +1656,9 @@ latexindent.pl -replacement myfile.tex
\end{commandshell}
You can \announce{2019-07-13}{replacement mode switch} call \texttt{latexindent.pl} with
- the \texttt{-r} switch to instruct it to perform replacements/substitutions on your file;
- full details and examples are given in \vref{sec:replacements}. \index{verbatim!rv,
- replacementrespectverb switch}%
+ the \texttt{-r} switch to instruct it to perform replacements/substitutions on your
+ file; full details and examples are given in \vref{sec:replacements}.
+ \index{verbatim!rv, replacementrespectverb switch}%
\flagbox{-rv, --replacementrespectverb}
\index{switches!-rv, --replacementrespectverb definition and details}
@@ -1620,8 +1670,8 @@ latexindent.pl -replacementrespectverb myfile.tex
You can \announce{2019-07-13}{replacement mode switch, respecting verbatim} instruct
\texttt{latexindent.pl} to perform replacements/substitutions by using the \texttt{-rv}
- switch, but will \emph{respect verbatim code blocks}; full details and examples are given
- in \vref{sec:replacements}.%
+ switch, but will \emph{respect verbatim code blocks}; full details and examples are
+ given in \vref{sec:replacements}.%
\flagbox{-rr, --onlyreplacement}
\index{switches!-rr, --onlyreplacement definition and details}
@@ -1644,16 +1694,16 @@ latexindent.pl -k myfile.tex
latexindent.pl -check myfile.tex
\end{commandshell}
- You can \announce{2021-09-16}{-k,-check switch} instruct \texttt{latexindent.pl} to check
- if the text after indentation matches that given in the original file.%
+ You can \announce{2021-09-16}{-k,-check switch} instruct \texttt{latexindent.pl} to
+ check if the text after indentation matches that given in the original file.%
The \texttt{exit} code \index{exit code} of \texttt{latexindent.pl} is 0 by default. If
you use the \texttt{-k} switch then
\begin{itemize}
- \item if the text after indentation matches that given in the original file, then the exit code
- is 0;
- \item if the text after indentation does \emph{not} match that given in the original file, then
- the exit code is 1.
+ \item if the text after indentation matches that given in the original file, then the
+ exit code is 0;
+ \item if the text after indentation does \emph{not} match that given in the original
+ file, then the exit code is 1.
\end{itemize}
The value of the exit code may be important to those wishing to, for example, check the
@@ -1713,7 +1763,8 @@ latexindent.pl --GCString myfile.tex
latexindent.pl myfile.tex
\end{commandshell}
- then \texttt{latexindent.pl} can exit with the exit codes given in \cref{tab:exit-codes}.
+ then \texttt{latexindent.pl} can exit with the exit codes given in
+ \cref{tab:exit-codes}.
\begin{table}[!htb]
\caption{Exit codes for \texttt{latexindent.pl}}
@@ -1736,10 +1787,14 @@ latexindent.pl myfile.tex
\end{table}
% arara: pdflatex: { files: [latexindent]}
\section{indentconfig.yaml, local settings and the -y switch }\label{sec:indentconfig}
- The behaviour of \texttt{latexindent.pl} is controlled from the settings specified in any
- of the YAML files that you tell it to load. By default, \texttt{latexindent.pl} will only
- load \texttt{defaultSettings.yaml}, but there are a few ways that you can tell it to load
- your own settings files.
+ The behaviour of \texttt{latexindent.pl} is controlled from the settings specified in
+ any of the YAML files that you tell it to load. By default, \texttt{latexindent.pl} will
+ only load \texttt{defaultSettings.yaml}, but there are a few ways that you can tell it
+ to load your own settings files.
+
+ We focus our discussion on \texttt{indentconfig.yaml}, but there are other options which
+ are detailed in \cref{app:indentconfig:options}. \announce*{2023-01-01}{indentconfig
+ location options}
\subsection{indentconfig.yaml and .indentconfig.yaml}
\texttt{latexindent.pl} will always check your home directory for
@@ -1754,26 +1809,13 @@ latexindent.pl myfile.tex
\texttt{.indentconfig.yaml}. If you have both files in existence then
\texttt{indentconfig.yaml} takes priority.
- For Mac and Linux users, their home directory is \texttt{~/username} while Windows (Vista
- onwards) is \lstinline!C:\Users\username!\footnote{If you're not sure where to put
- \texttt{indentconfig.yaml}, don't worry \texttt{latexindent.pl} will tell you in the log
- file exactly where to put it assuming it doesn't exist already.} \Cref{lst:indentconfig}
- shows a sample \texttt{indentconfig.yaml} file.
-
- \begin{yaml}{\texttt{indentconfig.yaml} (sample)}{lst:indentconfig}
-# Paths to user settings for latexindent.pl
-#
-# Note that the settings will be read in the order you
-# specify here- each successive settings file will overwrite
-# the variables that you specify
-
-paths:
-- /home/cmhughes/Documents/yamlfiles/mysettings.yaml
-- /home/cmhughes/folder/othersettings.yaml
-- /some/other/folder/anynameyouwant.yaml
-- C:\Users\chughes\Documents\mysettings.yaml
-- C:\Users\chughes\Desktop\test spaces\more spaces.yaml
-\end{yaml}
+ For Mac and Linux users, their home directory is \texttt{~/username} while Windows
+ (Vista onwards) is \lstinline!C:\Users\username!\footnote{If you're not sure where to
+ put \texttt{indentconfig.yaml}, don't worry \texttt{latexindent.pl} will tell you in the
+ log file exactly where to put it assuming it doesn't exist already.}
+ \Cref{lst:indentconfig} shows a sample \texttt{indentconfig.yaml} file.
+
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/indent-config.yaml}[yaml-TCB]{\texttt{indentconfig.yaml} (sample)}{lst:indentconfig}
Note that the \texttt{.yaml} files you specify in \texttt{indentconfig.yaml} will be
loaded in the order in which you write them. Each file doesn't have to have every switch
@@ -1783,28 +1825,21 @@ paths:
To get started with your own settings file, you might like to save a copy of
\texttt{defaultSettings.yaml} in another directory and call it, for example,
\texttt{mysettings.yaml}. Once you have added the path to \texttt{indentconfig.yaml} you
- can change the switches and add more code-block names to it as you see fit -- have a look
- at \cref{lst:mysettings} for an example that uses four tabs for the default indent, adds
- the \texttt{tabbing} environment/command to the list of environments that contains
+ can change the switches and add more code-block names to it as you see fit -- have a
+ look at \cref{lst:mysettings} for an example that uses four tabs for the default indent,
+ adds the \texttt{tabbing} environment/command to the list of environments that contains
alignment delimiters; you might also like to refer to the many YAML files detailed
throughout the rest of this documentation. \index{indentation!defaultIndent using YAML
file}
- \begin{yaml}{\texttt{mysettings.yaml} (example)}{lst:mysettings}
-# Default value of indentation
-defaultIndent: "\t\t\t\t"
-
-# environments that have tab delimiters, add more
-# as needed
-lookForAlignDelims:
- tabbing: 1
-\end{yaml}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/tabbing.yaml}[yaml-TCB]{\texttt{mysettings.yaml} (example)}{lst:mysettings}
You can make sure that your settings are loaded by checking \texttt{indent.log} for
details -- if you have specified a path that \texttt{latexindent.pl} doesn't recognise
- then you'll get a warning, otherwise you'll get confirmation that \texttt{latexindent.pl}
- has read your settings file \footnote{Windows users may find that they have to end
- \texttt{.yaml} files with a blank line}. \index{warning!editing YAML files}
+ then you'll get a warning, otherwise you'll get confirmation that
+ \texttt{latexindent.pl} has read your settings file \footnote{Windows users may find
+ that they have to end \texttt{.yaml} files with a blank line}. \index{warning!editing
+ YAML files}
\begin{warning}
When editing \texttt{.yaml} files it is \emph{extremely} important to remember how
@@ -1817,12 +1852,12 @@ lookForAlignDelims:
\end{warning}
If you find that \announce{2021-06-19}{encoding option for indentconfig.yaml}
- \texttt{latexindent.pl} does not read your YAML file, then it might be as a result of the
- default commandline encoding not being UTF-8; normally this will only occcur for Windows
- users. In this case, you might like to explore the \texttt{encoding} option for
+ \texttt{latexindent.pl} does not read your YAML file, then it might be as a result of
+ the default commandline encoding not being UTF-8; normally this will only occcur for
+ Windows users. In this case, you might like to explore the \texttt{encoding} option for
\texttt{indentconfig.yaml} as demonstrated in \cref{lst:indentconfig-encoding}.%
- \cmhlistingsfromfile{demonstrations/encoding.yaml}[yaml-TCB]{The \texttt{encoding} option for \texttt{indentconfig.yaml}}{lst:indentconfig-encoding}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/encoding.yaml}[yaml-TCB]{The \texttt{encoding} option for \texttt{indentconfig.yaml}}{lst:indentconfig-encoding}
Thank you to \cite{qiancy98} for this contribution; please see \vref{app:encoding} and
details within \cite{encoding} for further information.
@@ -1877,9 +1912,10 @@ verbatimEnvironments:
myenv: 1
\end{yaml}
- You can make sure that your settings file has been loaded by checking \texttt{indent.log}
- for details; if it can not be read then you receive a warning, otherwise you'll get
- confirmation that \texttt{latexindent.pl} has read your settings file.
+ You can make sure that your settings file has been loaded by checking
+ \texttt{indent.log} for details; if it can not be read then you receive a warning,
+ otherwise you'll get confirmation that \texttt{latexindent.pl} has read your settings
+ file.
\subsection{The -y|yaml switch}\label{sec:yamlswitch}
You%
@@ -1893,9 +1929,9 @@ verbatimEnvironments:
latexindent.pl -y="verbatimEnvironments:cmhenvironment:0;myenv:1" myfile.tex
\end{commandshell}
- Note the use of \texttt{;} to specify another field within \texttt{verbatimEnvironments}.
- This is shorthand, and equivalent, to using the following command: \index{switches!-y
- demonstration}
+ Note the use of \texttt{;} to specify another field within
+ \texttt{verbatimEnvironments}. This is shorthand, and equivalent, to using the following
+ command: \index{switches!-y demonstration}
\begin{commandshell}
latexindent.pl -y="verbatimEnvironments:cmhenvironment:0,verbatimEnvironments:myenv:1" myfile.tex
@@ -1913,11 +1949,11 @@ latexindent.pl -l=mysettings.yaml -y="verbatimEnvironments:cmhenvironment:0;myen
specified using \texttt{indentconfig.yaml} and the \texttt{-l} switch.
If you wish to specify any regex-based settings using the \texttt{-y} switch,
- \index{regular expressions!using -y switch} it is important not to use quotes surrounding
- the regex; for example, with reference to the `one sentence per line' feature
- (\vref{sec:onesentenceperline}) and the listings within \vref{lst:sentencesEndWith}, the
- following settings give the option to have sentences end with a semicolon
- \index{switches!-y demonstration}
+ \index{regular expressions!using -y switch} it is important not to use quotes
+ surrounding the regex; for example, with reference to the `one sentence per line'
+ feature (\vref{sec:onesentenceperline}) and the listings within
+ \vref{lst:sentencesEndWith}, the following settings give the option to have sentences
+ end with a semicolon \index{switches!-y demonstration}
\begin{commandshell}
latexindent.pl -m --yaml='modifyLineBreaks:oneSentencePerLine:sentencesEndWith:other:\;'
@@ -1937,8 +1973,8 @@ latexindent.pl -m --yaml='modifyLineBreaks:oneSentencePerLine:sentencesEndWith:o
specify both relative and absolute%
\announce{2017-08-21}*{-l absolute paths} paths to other YAML files using the \texttt{-l}
switch, separating multiple files using commas;
- \item any settings \announce{2017-08-21}{-y switch load order} specified in the \texttt{-y}
- switch.%
+ \item any settings \announce{2017-08-21}{-y switch load order} specified in the
+ \texttt{-y} switch.%
\end{enumerate}
A visual representation of this is given in \cref{fig:loadorder}.
@@ -1966,10 +2002,11 @@ latexindent.pl -m --yaml='modifyLineBreaks:oneSentencePerLine:sentencesEndWith:o
value is given in each case; whenever you see \emph{integer} in \emph{this} section,
assume that it must be greater than or equal to \texttt{0} unless otherwise stated.
- For most of the settings in \texttt{defaultSettings.yaml} that are specified as integers,
- then we understand \texttt{0} to represent `off' and \texttt{1} to represent `on'. For
- fields that allow values other than \texttt{0} or \texttt{1}, it is hoped that the
- specific context and associated commentary should make it clear which values are allowed.
+ For most of the settings in \texttt{defaultSettings.yaml} that are specified as
+ integers, then we understand \texttt{0} to represent `off' and \texttt{1} to represent
+ `on'. For fields that allow values other than \texttt{0} or \texttt{1}, it is hoped that
+ the specific context and associated commentary should make it clear which values are
+ allowed.
\yamltitle{fileExtensionPreference}*{fields}
\texttt{latexindent.pl} can be called to
@@ -1980,8 +2017,9 @@ latexindent.pl myfile
\end{commandshell}
in which case the script will look for \texttt{myfile} with the extensions specified in
- \texttt{fileExtensionPreference} in their numeric order. If no match is found, the script
- will exit. As with all of the fields, you should change and/or add to this as necessary.
+ \texttt{fileExtensionPreference} in their numeric order. If no match is found, the
+ script will exit. As with all of the fields, you should change and/or add to this as
+ necessary.
\cmhlistingsfromfile[style=fileExtensionPreference]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{fileExtensionPreference}}{lst:fileExtensionPreference}
@@ -2001,8 +2039,8 @@ latexindent.pl myfile
default extension is \texttt{.bak}, so, for example, \texttt{myfile.bak0} would be
created when calling \texttt{latexindent.pl myfile.tex} for the first time.
- By default, every time you subsequently call \texttt{latexindent.pl} with the \texttt{-w}
- to act upon \texttt{myfile.tex}, it will create successive back up files:
+ By default, every time you subsequently call \texttt{latexindent.pl} with the
+ \texttt{-w} to act upon \texttt{myfile.tex}, it will create successive back up files:
\texttt{myfile.bak1}, \texttt{myfile.bak2}, etc.
\yamltitle{onlyOneBackUp}*{integer}
@@ -2017,10 +2055,10 @@ latexindent.pl myfile
\index{backup files!number of backup files}
\yamltitle{maxNumberOfBackUps}*{integer}
- Some users may only want a finite number of backup files, say at most $3$, in which case,
- they can change this switch. The smallest value of \texttt{maxNumberOfBackUps} is $0$
- which will \emph{not} prevent backup files being made; in this case, the behaviour will
- be dictated entirely by \texttt{onlyOneBackUp}. The default value of
+ Some users may only want a finite number of backup files, say at most $3$, in which
+ case, they can change this switch. The smallest value of \texttt{maxNumberOfBackUps} is
+ $0$ which will \emph{not} prevent backup files being made; in this case, the behaviour
+ will be dictated entirely by \texttt{onlyOneBackUp}. The default value of
\texttt{maxNumberOfBackUps} is \texttt{0}.
\yamltitle{cycleThroughBackUps}*{integer}
@@ -2051,11 +2089,11 @@ copy myfile.bak4 to myfile.bak3
\cmhlistingsfromfile[style=logFilePreferences,]{../defaultSettings.yaml}[width=.9\linewidth,before=\centering,yaml-TCB]{\texttt{logFilePreferences}}{lst:logFilePreferences}
- When \announce{2018-01-13}{showDecorationStartCodeBlockTrace feature for log file} either
- of the \texttt{trace} modes (see \cpageref{page:traceswitch}) are active, you will
- receive detailed information in \texttt{indent.log}. You can specify character strings to
- appear before and after the notification of a found code block using, respectively,
- \texttt{showDecorationStartCodeBlockTrace} and
+ When \announce{2018-01-13}{showDecorationStartCodeBlockTrace feature for log file}
+ either of the \texttt{trace} modes (see \cpageref{page:traceswitch}) are active, you
+ will receive detailed information in \texttt{indent.log}. You can specify character
+ strings to appear before and after the notification of a found code block using,
+ respectively, \texttt{showDecorationStartCodeBlockTrace} and
\texttt{showDecorationFinishCodeBlockTrace}. A demonstration is given in
\vref{app:logfile-demo}.%
@@ -2070,14 +2108,15 @@ copy myfile.bak4 to myfile.bak3
options} for Perl's \texttt{Dumper} module can be specified in
\cref{lst:logFilePreferences}; see \cite{dumper} and \cite{dumperdemo} for more
information. These options will mostly be helpful for those calling
- \texttt{latexindent.pl} with the \texttt{-tt} option described in \cref{sec:commandline}.%
+ \texttt{latexindent.pl} with the \texttt{-tt} option described in
+ \cref{sec:commandline}.%
\subsection{Verbatim code blocks}
\yamltitle{verbatimEnvironments}*{fields}
- A field that contains a list of environments that you would like left completely alone --
- no indentation will be performed on environments that you have specified in this field,
- see \cref{lst:verbatimEnvironments}. \index{verbatim!environments}
+ A field that contains a list of environments that you would like left completely alone
+ -- no indentation will be performed on environments that you have specified in this
+ field, see \cref{lst:verbatimEnvironments}. \index{verbatim!environments}
\index{verbatim!commands}
\begin{cmhtcbraster}[raster column skip=.1\linewidth]
@@ -2085,13 +2124,13 @@ copy myfile.bak4 to myfile.bak3
\cmhlistingsfromfile[style=verbatimCommands]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{verbatimCommands}}{lst:verbatimCommands}
\end{cmhtcbraster}
- Note that if you put an environment in \texttt{verbatimEnvironments} and in other fields
+ Note that if you put an environment in \texttt{verbatimEnvironments} and in other fields
such as \texttt{lookForAlignDelims} or \texttt{noAdditionalIndent} then
\texttt{latexindent.pl} will \emph{always} prioritize \texttt{verbatimEnvironments}.
You can, optionally, specify \announce{2021-10-30}{verbatim name feature} the
- \texttt{verbatim} field using the \texttt{name} field which takes a regular expression as
- its argument; thank you to \cite{XuehaiPan} for contributing this feature.
+ \texttt{verbatim} field using the \texttt{name} field which takes a regular expression
+ as its argument; thank you to \cite{XuehaiPan} for contributing this feature.
\begin{example}
For demonstration, then assuming that your file contains the environments
@@ -2099,18 +2138,18 @@ copy myfile.bak4 to myfile.bak3
then the listings given in \cref{lst:nameAsRegex1,lst:nameAsRegex2} are equivalent.
\begin{cmhtcbraster}[raster column skip=.1\linewidth]
- \cmhlistingsfromfile{demonstrations/nameAsRegex1.yaml}[yaml-TCB]{\texttt{nameAsRegex1.yaml}}{lst:nameAsRegex1}
- \cmhlistingsfromfile{demonstrations/nameAsRegex2.yaml}[yaml-TCB]{\texttt{nameAsRegex2.yaml}}{lst:nameAsRegex2}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/nameAsRegex1.yaml}[yaml-TCB]{\texttt{nameAsRegex1.yaml}}{lst:nameAsRegex1}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/nameAsRegex2.yaml}[yaml-TCB]{\texttt{nameAsRegex2.yaml}}{lst:nameAsRegex2}
\end{cmhtcbraster}
With reference to \cref{lst:nameAsRegex2}:
\begin{itemize}
- \item the \texttt{name} field as specified here means \emph{any word followed by the word code,
- optionally followed by *};
- \item we have used \texttt{nameAsRegex} to identify this field, but you can use any description
- you like;
- \item the \texttt{lookForThis} field is optional, and can take the values 0 (off) or 1 (on); by
- default, it is assumed to be 1 (on).
+ \item the \texttt{name} field as specified here means \emph{any word followed by the
+ word code, optionally followed by *};
+ \item we have used \texttt{nameAsRegex} to identify this field, but you can use any
+ description you like;
+ \item the \texttt{lookForThis} field is optional, and can take the values 0 (off) or 1
+ (on); by default, it is assumed to be 1 (on).
\end{itemize}
\end{example}
@@ -2135,26 +2174,26 @@ copy myfile.bak4 to myfile.bak3
\cref{lst:nameAsRegex3,lst:nameAsRegex4} are equivalent.
\begin{cmhtcbraster}[raster column skip=.1\linewidth]
- \cmhlistingsfromfile{demonstrations/nameAsRegex3.yaml}[yaml-TCB]{\texttt{nameAsRegex3.yaml}}{lst:nameAsRegex3}
- \cmhlistingsfromfile{demonstrations/nameAsRegex4.yaml}[yaml-TCB]{\texttt{nameAsRegex4.yaml}}{lst:nameAsRegex4}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/nameAsRegex3.yaml}[yaml-TCB]{\texttt{nameAsRegex3.yaml}}{lst:nameAsRegex3}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/nameAsRegex4.yaml}[yaml-TCB]{\texttt{nameAsRegex4.yaml}}{lst:nameAsRegex4}
\end{cmhtcbraster}
With reference to \cref{lst:nameAsRegex4}:
\begin{itemize}
- \item the \texttt{name} field as specified here means \emph{any word followed by the word
- inline};
- \item we have used \texttt{nameAsRegex} to identify this field, but you can use any description
- you like;
- \item the \texttt{lookForThis} field is optional, and can take the values 0 (off) or 1 (on); by
- default, it is assumed to be 1 (on).
+ \item the \texttt{name} field as specified here means \emph{any word followed by the
+ word inline};
+ \item we have used \texttt{nameAsRegex} to identify this field, but you can use any
+ description you like;
+ \item the \texttt{lookForThis} field is optional, and can take the values 0 (off) or 1
+ (on); by default, it is assumed to be 1 (on).
\end{itemize}
\end{example}
\yamltitle{noIndentBlock}*{fields}
- If you have a block of code that you don't want \texttt{latexindent.pl} to touch (even if
- \index{verbatim!noIndentBlock} it is \emph{not} a verbatim-like environment) then you can
- wrap it in an environment from \texttt{noIndentBlock}; you can use any name you like for
- this, provided you populate it as demonstrate in \cref{lst:noIndentBlock}.
+ If you have a block of code that you don't want \texttt{latexindent.pl} to touch (even
+ if \index{verbatim!noIndentBlock} it is \emph{not} a verbatim-like environment) then you
+ can wrap it in an environment from \texttt{noIndentBlock}; you can use any name you like
+ for this, provided you populate it as demonstrate in \cref{lst:noIndentBlock}.
\cmhlistingsfromfile[style=noIndentBlock]{../defaultSettings.yaml}[width=.4\linewidth,before=\centering,yaml-TCB]{\texttt{noIndentBlock}}{lst:noIndentBlock}
@@ -2180,9 +2219,9 @@ copy myfile.bak4 to myfile.bak3
raster left skip=-3.5cm,
raster right skip=-2cm,
raster column skip=.03\linewidth]
- \cmhlistingsfromfile{demonstrations/noindent1.yaml}[yaml-TCB]{\texttt{noindent1.yaml}}{lst:noindent1}
- \cmhlistingsfromfile{demonstrations/noindent2.yaml}[yaml-TCB]{\texttt{noindent2.yaml}}{lst:noindent2}
- \cmhlistingsfromfile{demonstrations/noindent3.yaml}[yaml-TCB]{\texttt{noindent3.yaml}}{lst:noindent3}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/noindent1.yaml}[yaml-TCB]{\texttt{noindent1.yaml}}{lst:noindent1}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/noindent2.yaml}[yaml-TCB]{\texttt{noindent2.yaml}}{lst:noindent2}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/noindent3.yaml}[yaml-TCB]{\texttt{noindent3.yaml}}{lst:noindent3}
\end{cmhtcbraster}
Upon running the commands
@@ -2201,11 +2240,11 @@ latexindent.pl -l noindent2.yaml noindent1
The \texttt{begin}, \texttt{body} and \texttt{end} fields for \texttt{noIndentBlock} are
all \emph{regular expressions}. If the \texttt{body} field is not specified, then it
takes a default value of \lstinline!.*?! which is written explicitly in
- \cref{lst:noindent1}. In this context, we interpret \lstinline!.*?! in words as \emph{the
- fewest number of characters (possibly none) until the `end' field is reached}.
+ \cref{lst:noindent1}. In this context, we interpret \lstinline!.*?! in words as
+ \emph{the fewest number of characters (possibly none) until the `end' field is reached}.
- The \texttt{lookForThis} field is optional, and can take the values 0 (off) or 1 (on); by
- default, it is assumed to be 1 (on).
+ The \texttt{lookForThis} field is optional, and can take the values 0 (off) or 1 (on);
+ by default, it is assumed to be 1 (on).
\begin{example}
Using \cref{lst:noindent3} demonstrates setting \texttt{lookForThis} to 0 (off); running
@@ -2234,40 +2273,40 @@ latexindent.pl -l noindent3.yaml noindent1
\begin{widepage}
\begin{cmhtcbraster}[raster column skip=.1\linewidth]
- \cmhlistingsfromfile{demonstrations/nameAsRegex5.yaml}[yaml-TCB]{\texttt{nameAsRegex5.yaml}}{lst:nameAsRegex5}
- \cmhlistingsfromfile{demonstrations/nameAsRegex6.yaml}[yaml-TCB]{\texttt{nameAsRegex6.yaml}}{lst:nameAsRegex6}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/nameAsRegex5.yaml}[yaml-TCB]{\texttt{nameAsRegex5.yaml}}{lst:nameAsRegex5}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/nameAsRegex6.yaml}[yaml-TCB]{\texttt{nameAsRegex6.yaml}}{lst:nameAsRegex6}
\end{cmhtcbraster}
\end{widepage}
With reference to \cref{lst:nameAsRegex6}:
\begin{itemize}
- \item the \texttt{name} field as specified here means \emph{any word followed by the word
- noindent, optionally followed by *};
- \item we have used \texttt{nameAsRegex} to identify this field, but you can use any description
- you like;
- \item the \texttt{lookForThis} field is optional, and can take the values 0 (off) or 1 (on); by
- default, it is assumed to be 1 (on).
+ \item the \texttt{name} field as specified here means \emph{any word followed by the
+ word noindent, optionally followed by *};
+ \item we have used \texttt{nameAsRegex} to identify this field, but you can use any
+ description you like;
+ \item the \texttt{lookForThis} field is optional, and can take the values 0 (off) or 1
+ (on); by default, it is assumed to be 1 (on).
\end{itemize}
\end{example}
-\subsection{filecontents and preamble}
+\subsection{filecontents and preamble}\label{subsec:filecontents:preamble}
\yamltitle{fileContentsEnvironments}*{field}
Before \texttt{latexindent.pl} determines the difference between preamble (if any) and
the main document, it first searches for any of the environments specified in
- \texttt{fileContentsEnvironments}, see \cref{lst:fileContentsEnvironments}. The behaviour
- of \texttt{latexindent.pl} on these environments is determined by their location
- (preamble or not), and the value \texttt{indentPreamble}, discussed next.
+ \texttt{fileContentsEnvironments}, see \cref{lst:fileContentsEnvironments}. The
+ behaviour of \texttt{latexindent.pl} on these environments is determined by their
+ location (preamble or not), and the value \texttt{indentPreamble}, discussed next.
\cmhlistingsfromfile[style=fileContentsEnvironments]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{fileContentsEnvironments}}{lst:fileContentsEnvironments}
\yamltitle{indentPreamble}{0|1}
The preamble of a document can sometimes contain some trickier code for
- \texttt{latexindent.pl} to operate upon. By default, \texttt{latexindent.pl} won't try to
- operate on the preamble (as \texttt{indentPreamble} is set to \texttt{0}, by default),
- but if you'd like \texttt{latexindent.pl} to try then change \texttt{indentPreamble} to
- \texttt{1}.
+ \texttt{latexindent.pl} to operate upon. By default, \texttt{latexindent.pl} won't try
+ to operate on the preamble (as \texttt{indentPreamble} is set to \texttt{0}, by
+ default), but if you'd like \texttt{latexindent.pl} to try then change
+ \texttt{indentPreamble} to \texttt{1}.
\yamltitle{lookForPreamble}*{fields}
@@ -2282,8 +2321,8 @@ latexindent.pl -l noindent3.yaml noindent1
Assuming that \texttt{latexindent.pl} is asked to operate upon the preamble of a
document, when this switch is set to \texttt{0} then environment code blocks will be
sought first, and then command code blocks. When this switch is set to \texttt{1},
- commands will be sought first. The example that first motivated this switch contained the
- code given in \cref{lst:motivatepreambleCommandsBeforeEnvironments}.
+ commands will be sought first. The example that first motivated this switch contained
+ the code given in \cref{lst:motivatepreambleCommandsBeforeEnvironments}.
\begin{cmhlistings}{Motivating \texttt{preambleCommandsBeforeEnvironments}}{lst:motivatepreambleCommandsBeforeEnvironments}
...
@@ -2294,11 +2333,12 @@ postfoothook=\end{mdframed},
\index{indentation!defaultIndent description}
-\subsection{Indentation and horizontal space}
+\subsection{Indentation and horizontal space}\label{subsec:indentation:and:horizontal:space}
\yamltitle{defaultIndent}*{horizontal space}
This is the default indentation used in the absence of other details for the code block
- with which we are working. The default value is \lstinline!\t! which means a tab; we will
- explore customisation beyond \texttt{defaultIndent} in \vref{sec:noadd-indent-rules}.
+ with which we are working. The default value is \lstinline!\t! which means a tab; we
+ will explore customisation beyond \texttt{defaultIndent} in
+ \vref{sec:noadd-indent-rules}.
If you're interested in experimenting with \texttt{latexindent.pl} then you can
\emph{remove} all indentation by setting \texttt{defaultIndent: ""}.
@@ -2306,8 +2346,8 @@ postfoothook=\end{mdframed},
\yamltitle{removeTrailingWhitespace}*{fields}\label{yaml:removeTrailingWhitespace}
Trailing white space can be removed both \emph{before} and \emph{after} processing the
- document, as detailed in \cref{lst:removeTrailingWhitespace}; each of the fields can take
- the values \texttt{0} or \texttt{1}. See
+ document, as detailed in \cref{lst:removeTrailingWhitespace}; each of the fields can
+ take the values \texttt{0} or \texttt{1}. See
\vref{lst:removeTWS-before,lst:env-mlb5-modAll,lst:env-mlb5-modAll-remove-WS} for before
and after results. Thanks to \cite{vosskuhle} for providing this feature.
@@ -2328,8 +2368,8 @@ postfoothook=\end{mdframed},
\texttt{latexindent.pl} (see \cref{lst:aligndelims:basic}). In fact, the fields in
\texttt{lookForAlignDelims} can actually take two different forms: the \emph{basic}
version is shown in \cref{lst:aligndelims:basic} and the \emph{advanced} version in
- \cref{lst:aligndelims:advanced}; we will discuss each in turn. \index{delimiters!advanced
- settings of lookForAlignDelims}
+ \cref{lst:aligndelims:advanced}; we will discuss each in turn.
+ \index{delimiters!advanced settings of lookForAlignDelims}
\begin{yaml}[numbers=none]{\texttt{lookForAlignDelims} (basic)}[width=.8\linewidth,before=\centering]{lst:aligndelims:basic}
lookForAlignDelims:
@@ -2342,9 +2382,15 @@ lookForAlignDelims:
\end{yaml}
Specifying code blocks in this field instructs \texttt{latexindent.pl} to try and align
- each column by its alignment delimiters. It does have some limitations (discussed further
- in \cref{sec:knownlimitations}), but in many cases it will produce results such as those
- in \cref{lst:tabularbefore:basic,lst:tabularafter:basic}.
+ each column by its alignment delimiters. It does have some limitations (discussed
+ further in \cref{sec:knownlimitations}), but in many cases it will produce results such
+ as those in \cref{lst:tabularbefore:basic,lst:tabularafter:basic}; running the command
+
+ \begin{commandshell}
+latexindent.pl tabular1.tex
+ \end{commandshell}
+
+ gives the output given in \cref{lst:tabularafter:basic}.
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/tabular1.tex}{\texttt{tabular1.tex}}{lst:tabularbefore:basic}
@@ -2383,37 +2429,38 @@ lookForAlignDelims:
\announce{2018-01-13}*{update to spacesBeforeDoubleBackSlash in ampersand alignment}
specifies the number (integer $\geq$ 0) of spaces to be inserted before
\lstinline!\\! (default: 1); %\footnote{Previously this only activated if \texttt{alignDoubleBackSlash} was set to \texttt{0}.}
- \item \announce{2017-06-19}{multiColumnGrouping} \texttt{multiColumnGrouping}: binary switch (0
- or 1) that details if \texttt{latexindent.pl} should group columns above and below a
- \lstinline!\multicolumn! command (default: 0);
- \item \announce{2017-06-19}{alignRowsWithoutMaxDelims} \texttt{alignRowsWithoutMaxDelims}:
- binary switch (0 or 1) that details if rows that do not contain the maximum number of
- delimeters should be formatted so as to have the ampersands aligned (default: 1);
+ \item \announce{2017-06-19}{multiColumnGrouping} \texttt{multiColumnGrouping}: binary
+ switch (0 or 1) that details if \texttt{latexindent.pl} should group columns
+ above and below a \lstinline!\multicolumn! command (default: 0);
+ \item \announce{2017-06-19}{alignRowsWithoutMaxDelims}
+ \texttt{alignRowsWithoutMaxDelims}: binary switch (0 or 1) that details if rows
+ that do not contain the maximum number of delimeters should be formatted so as to
+ have the ampersands aligned (default: 1);
\item \announce{2018-01-13}{spacesBeforeAmpersand in ampersand
- alignment}\texttt{spacesBeforeAmpersand}: optionally specifies the number (integer $\geq$
- 0) of spaces to be placed \emph{before} ampersands (default: 1);
+ alignment}\texttt{spacesBeforeAmpersand}: optionally specifies the number
+ (integer $\geq$ 0) of spaces to be placed \emph{before} ampersands (default: 1);
\item \announce{2018-01-13}{spacesAfterAmpersand in ampersand
- alignment}\texttt{spacesAfterAmpersand}: optionally specifies the number (integer $\geq$
- 0) of spaces to be placed \emph{After} ampersands (default: 1);
+ alignment}\texttt{spacesAfterAmpersand}: optionally specifies the number (integer
+ $\geq$ 0) of spaces to be placed \emph{After} ampersands (default: 1);
\item \announce{2018-01-13}{justification of cells in ampersand
- alignment}\texttt{justification}: optionally specifies the justification of each cell as
- either \emph{left} or \emph{right} (default: left);
- \item \announce{2020-03-21}{align final double back slash}{alignFinalDoubleBackSlash}
- optionally specifies if the \emph{final} double back slash should be used for alignment
- (default: 0);
+ alignment}\texttt{justification}: optionally specifies the justification of each
+ cell as either \emph{left} or \emph{right} (default: left);
+ \item \announce{2020-03-21}{align final double backslash}{alignFinalDoubleBackSlash}
+ optionally specifies if the \emph{final} double backslash should be used for
+ alignment (default: 0);
\item \announce{2020-03-21}{don't measure feature}{dontMeasure} optionally specifies if
- user-specified cells, rows or the largest entries should \emph{not} be measured (default:
- 0);
- \item \announce{2020-03-21}{delimiter RegEx feature}{delimiterRegEx} optionally specifies the
- pattern matching to be used for the alignment delimeter (default:
+ user-specified cells, rows or the largest entries should \emph{not} be measured
+ (default: 0);
+ \item \announce{2020-03-21}{delimiter RegEx feature}{delimiterRegEx} optionally
+ specifies the pattern matching to be used for the alignment delimeter (default:
\lstinline* '(?<!\\)(&)'*);
\item \announce{2020-03-21}{delimiter justification}{delimiterJustification} optionally
- specifies the justification for the alignment delimeters (default: left); note that this
- feature is only useful if you have delimiters of different lengths in the same column,
- discussed in \cref{sec:delimiter-reg-ex};
- \item \announce{2021-12-13}{lookForChildCodeBlocks feature}{lookForChildCodeBlocks} optionally
- instructs \texttt{latexindent.pl} to search for child code blocks or not (default: 1),
- discussed in \cref{sec:lookForChildCodeBlocks}.
+ specifies the justification for the alignment delimeters (default: left); note
+ that this feature is only useful if you have delimiters of different lengths in
+ the same column, discussed in \cref{sec:delimiter-reg-ex};
+ \item \announce{2021-12-13}{lookForChildCodeBlocks feature}{lookForChildCodeBlocks}
+ optionally instructs \texttt{latexindent.pl} to search for child code blocks or
+ not (default: 1), discussed in \cref{sec:lookForChildCodeBlocks}.
\end{itemize}
\begin{example}
@@ -2483,33 +2530,37 @@ latexindent.pl tabular2.tex -l tabular2.yaml,tabular8.yaml
Notice in particular:
\begin{itemize}
- \item in both \cref{lst:tabular2-default,lst:tabular2-mod2} all rows have been aligned at the
- ampersand, even those that do not contain the maximum number of ampersands (3 ampersands,
- in this case);
+ \item in both \cref{lst:tabular2-default,lst:tabular2-mod2} all rows have been aligned
+ at the ampersand, even those that do not contain the maximum number of ampersands
+ (3 ampersands, in this case);
\item in \cref{lst:tabular2-default} the columns have been aligned at the ampersand;
- \item in \cref{lst:tabular2-mod2} the \lstinline!\multicolumn! command has grouped the $2$
- columns beneath \emph{and} above it, because \texttt{multiColumnGrouping} is set to $1$
- in \cref{lst:tabular2YAML};
- \item in \cref{lst:tabular2-mod3} rows~3 and~6 have \emph{not} been aligned at the ampersand,
- because \texttt{alignRowsWithoutMaxDelims} has been to set to $0$ in
- \cref{lst:tabular3YAML}; however, the \lstinline!\\! \emph{have} still been aligned;
- \item in \cref{lst:tabular2-mod4} the columns beneath and above the \lstinline!\multicolumn!
- commands have been grouped (because \texttt{multiColumnGrouping} is set to $1$), and
- there are at least $4$ spaces \emph{before} each aligned ampersand because
- \texttt{spacesBeforeAmpersand} is set to $4$;
- \item in \cref{lst:tabular2-mod5} the columns beneath and above the \lstinline!\multicolumn!
- commands have been grouped (because \texttt{multiColumnGrouping} is set to $1$), and
- there are at least $4$ spaces \emph{after} each aligned ampersand because
- \texttt{spacesAfterAmpersand} is set to $4$;
- \item in \cref{lst:tabular2-mod6} the \lstinline!\\! have \emph{not} been aligned, because
- \texttt{alignDoubleBackSlash} is set to \texttt{0}, otherwise the output is the same as
+ \item in \cref{lst:tabular2-mod2} the \lstinline!\multicolumn! command has grouped the
+ $2$ columns beneath \emph{and} above it, because \texttt{multiColumnGrouping} is
+ set to $1$ in \cref{lst:tabular2YAML};
+ \item in \cref{lst:tabular2-mod3} rows~3 and~6 have \emph{not} been aligned at the
+ ampersand, because \texttt{alignRowsWithoutMaxDelims} has been to set to $0$ in
+ \cref{lst:tabular3YAML}; however, the \lstinline!\\! \emph{have} still been
+ aligned;
+ \item in \cref{lst:tabular2-mod4} the columns beneath and above the
+ \lstinline!\multicolumn! commands have been grouped (because
+ \texttt{multiColumnGrouping} is set to $1$), and there are at least $4$ spaces
+ \emph{before} each aligned ampersand because \texttt{spacesBeforeAmpersand} is
+ set to $4$;
+ \item in \cref{lst:tabular2-mod5} the columns beneath and above the
+ \lstinline!\multicolumn! commands have been grouped (because
+ \texttt{multiColumnGrouping} is set to $1$), and there are at least $4$ spaces
+ \emph{after} each aligned ampersand because \texttt{spacesAfterAmpersand} is set
+ to $4$;
+ \item in \cref{lst:tabular2-mod6} the \lstinline!\\! have \emph{not} been aligned,
+ because \texttt{alignDoubleBackSlash} is set to \texttt{0}, otherwise the output
+ is the same as \cref{lst:tabular2-mod2};
+ \item in \cref{lst:tabular2-mod7} the \lstinline!\\! \emph{have} been aligned, and
+ because \texttt{spacesBeforeDoubleBackSlash} is set to \texttt{0}, there are no
+ spaces ahead of them; the output is otherwise the same as
\cref{lst:tabular2-mod2};
- \item in \cref{lst:tabular2-mod7} the \lstinline!\\! \emph{have} been aligned, and because
- \texttt{spacesBeforeDoubleBackSlash} is set to \texttt{0}, there are no spaces ahead of
- them; the output is otherwise the same as \cref{lst:tabular2-mod2};
- \item in \cref{lst:tabular2-mod8} the cells have been \emph{right}-justified; note that cells
- above and below the \lstinline!\multicol! statements have still been group correctly,
- because of the settings in \cref{lst:tabular2YAML}.
+ \item in \cref{lst:tabular2-mod8} the cells have been \emph{right}-justified; note that
+ cells above and below the \lstinline!\multicol! statements have still been group
+ correctly, because of the settings in \cref{lst:tabular2YAML}.
\end{itemize}
\end{example}
@@ -2540,10 +2591,10 @@ latexindent.pl aligned1.tex -o=+-default
not-yet discussed \texttt{noAdditionalIndent} field (see \vref{sec:noadd-indent-rules})
which will assist in the demonstration in what follows.
\begin{cmhtcbraster}[raster columns=2, ]
- \cmhlistingsfromfile{demonstrations/sba1.yaml}[yaml-TCB]{\texttt{sba1.yaml}}{lst:sba1}
- \cmhlistingsfromfile{demonstrations/sba2.yaml}[yaml-TCB]{\texttt{sba2.yaml}}{lst:sba2}
- \cmhlistingsfromfile{demonstrations/sba3.yaml}[yaml-TCB]{\texttt{sba3.yaml}}{lst:sba3}
- \cmhlistingsfromfile{demonstrations/sba4.yaml}[yaml-TCB]{\texttt{sba4.yaml}}{lst:sba4}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/sba1.yaml}[yaml-TCB]{\texttt{sba1.yaml}}{lst:sba1}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/sba2.yaml}[yaml-TCB]{\texttt{sba2.yaml}}{lst:sba2}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/sba3.yaml}[yaml-TCB]{\texttt{sba3.yaml}}{lst:sba3}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/sba4.yaml}[yaml-TCB]{\texttt{sba4.yaml}}{lst:sba4}
\end{cmhtcbraster}
Upon running the following commands
@@ -2574,8 +2625,8 @@ latexindent.pl aligned1.tex -l sba4.yaml
for us to set the \texttt{default} value that sets the number of spaces before ampersands
which are \emph{not} in leading blank columns. The default value is \texttt{1}.
- We note that \texttt{leadingBlankColumn} has not been specified in \cref{lst:sba3}, and
- it will inherit the value from \texttt{default};
+ We note that \texttt{leadingBlankColumn} has not been specified in
+ \cref{lst:sba3}, and it will inherit the value from \texttt{default};
\item \cref{lst:sba4} demonstrates spaces to be used before amperands for
\emph{leading blank columns}.
We note that \emph{default} has not been specified, and it will be set to \texttt{1} by
@@ -2589,8 +2640,8 @@ latexindent.pl aligned1.tex -l sba4.yaml
equivalent.
\begin{cmhtcbraster}
- \cmhlistingsfromfile{demonstrations/sba5.yaml}[yaml-TCB]{\texttt{sba5.yaml}}{lst:sba5}
- \cmhlistingsfromfile{demonstrations/sba6.yaml}[yaml-TCB]{\texttt{sba6.yaml}}{lst:sba6}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/sba5.yaml}[yaml-TCB]{\texttt{sba5.yaml}}{lst:sba5}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/sba6.yaml}[yaml-TCB]{\texttt{sba6.yaml}}{lst:sba6}
\end{cmhtcbraster}
Upon running
@@ -2604,15 +2655,15 @@ latexindent.pl aligned1.tex -l sba6.yaml
space before the ampersand in the \emph{leading blank column} has been set to \texttt{0}
by \cref{lst:sba6}.
- We can demonstrated this feature further using the settings in \cref{lst:sba7} which give
- the output in \cref{lst:aligned1-mod7}.
+ We can demonstrated this feature further using the settings in \cref{lst:sba7} which
+ give the output in \cref{lst:aligned1-mod7}.
\begin{cmhtcbraster}[raster columns=3,
raster left skip=-3.75cm,
raster right skip=-2cm,]
\cmhlistingsfromfile{demonstrations/aligned1-mod5.tex}{\texttt{aligned1-mod5.tex}}{lst:aligned1-mod5}
\cmhlistingsfromfile{demonstrations/aligned1-mod7.tex}{\texttt{aligned1.tex} using \cref{lst:sba7}}{lst:aligned1-mod7}
- \cmhlistingsfromfile{demonstrations/sba7.yaml}[yaml-TCB]{\texttt{sba7.yaml}}{lst:sba7}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/sba7.yaml}[yaml-TCB]{\texttt{sba7.yaml}}{lst:sba7}
\end{cmhtcbraster}
\end{example}
@@ -2647,13 +2698,13 @@ latexindent.pl tabular4.tex -o=+-FDBS -y="lookForAlignDelims:tabular:alignFinalD
\item \cref{lst:tabular4-default}, by default, the \emph{first} set of double back
slashes in the first row of the \texttt{tabular} environment have been used for
alignment;
- \item \cref{lst:tabular4-FDBS}, the \emph{final} set of double back slashes in the
+ \item \cref{lst:tabular4-FDBS}, the \emph{final} set of double backslashes in the
first row have been used, because we specified \texttt{alignFinalDoubleBackSlash} as 1.
\end{itemize}
\end{example}
- As of Version 3.0, the alignment routine works on mandatory and optional arguments within
- commands, and also within `special' code blocks (see \texttt{specialBeginEnd} on
+ As of Version 3.0, the alignment routine works on mandatory and optional arguments
+ within commands, and also within `special' code blocks (see \texttt{specialBeginEnd} on
\cpageref{yaml:specialBeginEnd}).
\begin{example}
@@ -2674,12 +2725,13 @@ latexindent.pl matrix1.tex
\end{cmhtcbraster}
\end{example}
- If you have blocks of code that you wish to align at the \& character that are \emph{not}
- wrapped in, for example, \lstinline!\begin{tabular}! \ldots \lstinline!\end{tabular}!,
- then you can use the mark up illustrated in \cref{lst:alignmentmarkup}; the default
- output is shown in \cref{lst:alignmentmarkup-default}. Note that the \lstinline!%*! must
- be next to each other, but that there can be any number of spaces (possibly none) between
- the \lstinline!*! and \lstinline!\begin{tabular}!; note also that you may use any
+ If you have blocks of code that you wish to align at the \& character that are
+ \emph{not} wrapped in, for example, \lstinline!\begin{tabular}! \ldots
+ \lstinline!\end{tabular}!, then you can use the mark up illustrated in
+ \cref{lst:alignmentmarkup}; the default output is shown in
+ \cref{lst:alignmentmarkup-default}. Note that the \lstinline!%*! must be next to each
+ other, but that there can be any number of spaces (possibly none) between the
+ \lstinline!*! and \lstinline!\begin{tabular}!; note also that you may use any
environment name that you have specified in \texttt{lookForAlignDelims}.
\begin{cmhtcbraster}[raster left skip=-1.5cm,]
@@ -2688,8 +2740,9 @@ latexindent.pl matrix1.tex
\end{cmhtcbraster}
With reference to \vref{tab:code-blocks} and the, yet undiscussed, fields of
- \texttt{noAdditionalIndent} and \texttt{indentRules} (see \vref{sec:noadd-indent-rules}),
- these comment-marked blocks are considered \texttt{environments}.
+ \texttt{noAdditionalIndent} and \texttt{indentRules} (see
+ \vref{sec:noadd-indent-rules}), these comment-marked blocks are considered
+ \texttt{environments}.
\subsubsection{lookForAlignDelims: the dontMeasure feature}\label{sec:dontMeasure}
The \announce{2020-03-21}{don't measure feature} \texttt{lookForAlignDelims} field can,
@@ -2718,7 +2771,7 @@ latexindent.pl tabular-DM.tex -l=dontMeasure1.yaml
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/tabular-DM-mod1.tex}{\texttt{tabular-DM.tex} using \cref{lst:dontMeasure1}}{lst:tabular-DM-mod1}
- \cmhlistingsfromfile{demonstrations/dontMeasure1.yaml}[yaml-TCB]{\texttt{dontMeasure1.yaml}}{lst:dontMeasure1}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/dontMeasure1.yaml}[yaml-TCB]{\texttt{dontMeasure1.yaml}}{lst:dontMeasure1}
\end{cmhtcbraster}
We note that the \emph{largest} column entries have not contributed to the measuring
@@ -2739,11 +2792,11 @@ latexindent.pl tabular-DM.tex -l=dontMeasure2.yaml
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/tabular-DM-mod2.tex}{\texttt{tabular-DM.tex} using \cref{lst:dontMeasure2} or \cref{lst:dontMeasure3}}{lst:tabular-DM-mod2}
- \cmhlistingsfromfile{demonstrations/dontMeasure2.yaml}[yaml-TCB]{\texttt{dontMeasure2.yaml}}{lst:dontMeasure2}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/dontMeasure2.yaml}[yaml-TCB]{\texttt{dontMeasure2.yaml}}{lst:dontMeasure2}
\end{cmhtcbraster}
- We note that in \cref{lst:dontMeasure2} we have specified entries not to be measured, one
- entry per line.
+ We note that in \cref{lst:dontMeasure2} we have specified entries not to be measured,
+ one entry per line.
\end{example}
\begin{example}
@@ -2763,8 +2816,8 @@ latexindent.pl tabular-DM.tex -l=dontMeasure4.yaml
raster right skip=-2cm,
raster column skip=.03\linewidth]
\cmhlistingsfromfile{demonstrations/tabular-DM-mod3.tex}{\texttt{tabular-DM.tex} using \cref{lst:dontMeasure3} or \cref{lst:dontMeasure3}}{lst:tabular-DM-mod3}
- \cmhlistingsfromfile{demonstrations/dontMeasure3.yaml}[yaml-TCB]{\texttt{dontMeasure3.yaml}}{lst:dontMeasure3}
- \cmhlistingsfromfile{demonstrations/dontMeasure4.yaml}[yaml-TCB]{\texttt{dontMeasure4.yaml}}{lst:dontMeasure4}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/dontMeasure3.yaml}[yaml-TCB]{\texttt{dontMeasure3.yaml}}{lst:dontMeasure3}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/dontMeasure4.yaml}[yaml-TCB]{\texttt{dontMeasure4.yaml}}{lst:dontMeasure4}
\end{cmhtcbraster}
We note that in:
\begin{itemize}
@@ -2792,7 +2845,7 @@ latexindent.pl tabular-DM.tex -l=dontMeasure5.yaml
we receive the output in \cref{lst:tabular-DM-mod5}.
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/tabular-DM-mod5.tex}{\texttt{tabular-DM.tex} using \cref{lst:dontMeasure5}}{lst:tabular-DM-mod5}
- \cmhlistingsfromfile{demonstrations/dontMeasure5.yaml}[yaml-TCB]{\texttt{dontMeasure5.yaml}}{lst:dontMeasure5}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/dontMeasure5.yaml}[yaml-TCB]{\texttt{dontMeasure5.yaml}}{lst:dontMeasure5}
\end{cmhtcbraster}
\end{example}
@@ -2810,7 +2863,7 @@ latexindent.pl tabular-DM.tex -l=dontMeasure6.yaml
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/tabular-DM-mod6.tex}{\texttt{tabular-DM.tex} using \cref{lst:dontMeasure6}}{lst:tabular-DM-mod6}
- \cmhlistingsfromfile{demonstrations/dontMeasure6.yaml}[yaml-TCB]{\texttt{dontMeasure6.yaml}}{lst:dontMeasure6}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/dontMeasure6.yaml}[yaml-TCB]{\texttt{dontMeasure6.yaml}}{lst:dontMeasure6}
\end{cmhtcbraster}
\end{example}
@@ -2853,15 +2906,15 @@ latexindent.pl tabbing.tex -l=delimiterRegEx1.yaml
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/tabbing-mod1.tex}{\texttt{tabbing.tex} using \cref{lst:delimiterRegEx1}}{lst:tabbing-mod1}
- \cmhlistingsfromfile{demonstrations/delimiterRegEx1.yaml}[yaml-TCB]{\texttt{delimiterRegEx1.yaml}}{lst:delimiterRegEx1}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/delimiterRegEx1.yaml}[yaml-TCB]{\texttt{delimiterRegEx1.yaml}}{lst:delimiterRegEx1}
\end{cmhtcbraster}
We note that:
\begin{itemize}
\item in \cref{lst:tabbing-mod1} the code has been aligned, as intended, at both the
\lstinline!\=! and \lstinline!\>!;
- \item in \cref{lst:delimiterRegEx1} we have heeded the warning and captured the expression
- using grouping parenthesis, specified a backslash using \lstinline!\\! and said that it
- must be followed by either \lstinline!=! or \lstinline!>!.
+ \item in \cref{lst:delimiterRegEx1} we have heeded the warning and captured the
+ expression using grouping parenthesis, specified a backslash using \lstinline!\\!
+ and said that it must be followed by either \lstinline!=! or \lstinline!>!.
\end{itemize}
\end{example}
@@ -2878,7 +2931,7 @@ latexindent.pl tabbing.tex -l=delimiterRegEx2.yaml
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/tabbing-mod2.tex}{\texttt{tabbing.tex} using \cref{lst:delimiterRegEx2}}{lst:tabbing-mod2}
- \cmhlistingsfromfile{demonstrations/delimiterRegEx2.yaml}[yaml-TCB]{\texttt{delimiterRegEx2.yaml}}{lst:delimiterRegEx2}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/delimiterRegEx2.yaml}[yaml-TCB]{\texttt{delimiterRegEx2.yaml}}{lst:delimiterRegEx2}
\end{cmhtcbraster}
We note that only the \lstinline!\>! have been aligned.
\end{example}
@@ -2887,8 +2940,8 @@ latexindent.pl tabbing.tex -l=delimiterRegEx2.yaml
Of course, the other lookForAlignDelims options can be used alongside the
\texttt{delimiterRegEx}; regardless of the type of delimiter being used (ampersand or
anything else), the fields from \vref{lst:aligndelims:advanced} remain the same; for
- example, using the settings in \cref{lst:delimiterRegEx3}, and running \index{switches!-l
- demonstration}
+ example, using the settings in \cref{lst:delimiterRegEx3}, and running
+ \index{switches!-l demonstration}
\begin{commandshell}
latexindent.pl tabbing.tex -l=delimiterRegEx3.yaml
@@ -2898,17 +2951,17 @@ latexindent.pl tabbing.tex -l=delimiterRegEx3.yaml
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/tabbing-mod3.tex}{\texttt{tabbing.tex} using \cref{lst:delimiterRegEx3}}{lst:tabbing-mod3}
- \cmhlistingsfromfile{demonstrations/delimiterRegEx3.yaml}[yaml-TCB]{\texttt{delimiterRegEx3.yaml}}{lst:delimiterRegEx3}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/delimiterRegEx3.yaml}[yaml-TCB]{\texttt{delimiterRegEx3.yaml}}{lst:delimiterRegEx3}
\end{cmhtcbraster}
\end{example}
\begin{example}
It is possible that delimiters specified within \texttt{delimiterRegEx} can be of
different lengths. Consider the file in \cref{lst:tabbing1}, and associated YAML in
- \cref{lst:delimiterRegEx4}. Note that the \cref{lst:delimiterRegEx4} specifies the option
- for the delimiter to be either \lstinline!#! or \lstinline!\>!, \emph{which are different
- lengths}. Upon running the command \index{switches!-l demonstration} \index{switches!-o
- demonstration}
+ \cref{lst:delimiterRegEx4}. Note that the \cref{lst:delimiterRegEx4} specifies the
+ option for the delimiter to be either \lstinline!#! or \lstinline!\>!, \emph{which are
+ different lengths}. Upon running the command \index{switches!-l demonstration}
+ \index{switches!-o demonstration}
\begin{commandshell}
latexindent.pl tabbing1.tex -l=delimiterRegEx4.yaml -o=+-mod4
@@ -2923,7 +2976,7 @@ latexindent.pl tabbing1.tex -l=delimiterRegEx4.yaml -o=+-mod4
raster column skip=.03\linewidth]
\cmhlistingsfromfile{demonstrations/tabbing1.tex}{\texttt{tabbing1.tex}}{lst:tabbing1}
\cmhlistingsfromfile{demonstrations/tabbing1-mod4.tex}{\texttt{tabbing1-mod4.tex}}{lst:tabbing1-mod4}
- \cmhlistingsfromfile{demonstrations/delimiterRegEx4.yaml}[yaml-TCB]{\texttt{delimiterRegEx4.yaml}}{lst:delimiterRegEx4}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/delimiterRegEx4.yaml}[yaml-TCB]{\texttt{delimiterRegEx4.yaml}}{lst:delimiterRegEx4}
\end{cmhtcbraster}
\end{example}
@@ -2942,7 +2995,7 @@ latexindent.pl tabbing1.tex -l=delimiterRegEx5.yaml -o=+-mod5
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/tabbing1-mod5.tex}{\texttt{tabbing1-mod5.tex}}{lst:tabbing1-mod5}
- \cmhlistingsfromfile{demonstrations/delimiterRegEx5.yaml}[yaml-TCB]{\texttt{delimiterRegEx5.yaml}}{lst:delimiterRegEx5}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/delimiterRegEx5.yaml}[yaml-TCB]{\texttt{delimiterRegEx5.yaml}}{lst:delimiterRegEx5}
\end{cmhtcbraster}
Note that in \cref{lst:tabbing1-mod5} the second set of delimiters have been \emph{right
@@ -2951,9 +3004,9 @@ latexindent.pl tabbing1.tex -l=delimiterRegEx5.yaml -o=+-mod5
\subsubsection{lookForAlignDelims: lookForChildCodeBlocks}\label{sec:lookForChildCodeBlocks}
There \announce{2021-12-13}{lookForChildCodeBlocks demonstration} may be scenarios in
- which you would prefer to instruct \texttt{latexindent.pl} \emph{not} to search for child
- blocks; in which case setting \texttt{lookForChildCodeBlocks} to 0 may be a good way to
- proceed.
+ which you would prefer to instruct \texttt{latexindent.pl} \emph{not} to search for
+ child blocks; in which case setting \texttt{lookForChildCodeBlocks} to 0 may be a good
+ way to proceed.
\begin{example}
Using the settings from \vref{lst:dontMeasure1} on the file in \cref{lst:tabular-DM-1}
@@ -2980,16 +3033,16 @@ latexindent.pl tabular-DM-1.tex -l=dontMeasure1a.yaml -o=+-mod1a
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/tabular-DM-1-mod1a.tex}{\texttt{tabular-DM-1-mod1a.tex}}{lst:tabular-DM-1-mod1a}
- \cmhlistingsfromfile{demonstrations/dontMeasure1a.yaml}[yaml-TCB]{\texttt{dontMeasure1a.yaml}}{lst:dontMeasure1a}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/dontMeasure1a.yaml}[yaml-TCB]{\texttt{dontMeasure1a.yaml}}{lst:dontMeasure1a}
\end{cmhtcbraster}
\end{example}
\subsection{Indent after items, specials and headings}
\yamltitle{indentAfterItems}*{fields}
- The environment names specified in \texttt{indentAfterItems} tell \texttt{latexindent.pl}
- to look for \lstinline!\item! commands; if these switches are set to \texttt{1} then
- indentation will be performed so as indent the code after each \texttt{item}. A
- demonstration is given in \cref{lst:itemsbefore,lst:itemsafter}
+ The environment names specified in \texttt{indentAfterItems} tell
+ \texttt{latexindent.pl} to look for \lstinline!\item! commands; if these switches are
+ set to \texttt{1} then indentation will be performed so as indent the code after each
+ \texttt{item}. A demonstration is given in \cref{lst:itemsbefore,lst:itemsafter}
\begin{cmhtcbraster}[raster columns=3,
raster left skip=-3.5cm,
@@ -3012,10 +3065,10 @@ latexindent.pl tabular-DM-1.tex -l=dontMeasure1a.yaml -o=+-mod1a
\yamltitle{specialBeginEnd}*{fields}\label{yaml:specialBeginEnd}
The fields specified \index{specialBeginEnd!introduction}
- \announce{2017-08-21}*{specialBeginEnd} in \texttt{specialBeginEnd} are, in their default
- state, focused on math mode begin and end statements, but there is no requirement for
- this to be the case; \cref{lst:specialBeginEnd} shows the default settings of
- \texttt{specialBeginEnd}. \index{specialBeginEnd!default settings}%
+ \announce{2017-08-21}*{specialBeginEnd} in \texttt{specialBeginEnd} are, in their
+ default state, focused on math mode begin and end statements, but there is no
+ requirement for this to be the case; \cref{lst:specialBeginEnd} shows the default
+ settings of \texttt{specialBeginEnd}. \index{specialBeginEnd!default settings}%
\cmhlistingsfromfile[style=specialBeginEnd]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{specialBeginEnd}}{lst:specialBeginEnd}
@@ -3026,7 +3079,13 @@ latexindent.pl tabular-DM-1.tex -l=dontMeasure1a.yaml -o=+-mod1a
\begin{example}
A demonstration of the before-and-after results are shown in
- \cref{lst:specialbefore,lst:specialafter}.
+ \cref{lst:specialbefore,lst:specialafter}; explicitly, running the command
+
+ \begin{commandshell}
+latexindent.pl special1.tex -o=+-default
+ \end{commandshell}
+
+ gives the output given in \cref{lst:specialafter}.
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/special1.tex}{\texttt{special1.tex} before}{lst:specialbefore}
@@ -3107,24 +3166,25 @@ latexindent.pl special2.tex -l=middle1
then we obtain the output given in \cref{lst:special2-mod1,lst:special2-mod2}.
\begin{cmhtcbraster}
- \cmhlistingsfromfile{demonstrations/middle.yaml}[yaml-TCB]{\texttt{middle.yaml}}{lst:middle-yaml}
\cmhlistingsfromfile{demonstrations/special2-mod1.tex}{\texttt{special2.tex} using \cref{lst:middle-yaml}}{lst:special2-mod1}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/middle.yaml}[yaml-TCB]{\texttt{middle.yaml}}{lst:middle-yaml}
\end{cmhtcbraster}
\begin{cmhtcbraster}
- \cmhlistingsfromfile{demonstrations/middle1.yaml}[yaml-TCB]{\texttt{middle1.yaml}}{lst:middle1-yaml}
\cmhlistingsfromfile{demonstrations/special2-mod2.tex}{\texttt{special2.tex} using \cref{lst:middle1-yaml}}{lst:special2-mod2}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/middle1.yaml}[yaml-TCB]{\texttt{middle1.yaml}}{lst:middle1-yaml}
\end{cmhtcbraster}
We note that:
\begin{itemize}
- \item in \cref{lst:special2-mod1} the bodies of each of the \texttt{Elsif} statements have been
- indented appropriately;
+ \item in \cref{lst:special2-mod1} the bodies of each of the \texttt{Elsif} statements
+ have been indented appropriately;
\item the \texttt{Else} statement has \emph{not} been indented appropriately in
\cref{lst:special2-mod1} -- read on!
- \item we have specified multiple settings for the \texttt{middle} field using the syntax
- demonstrated in \cref{lst:middle1-yaml} so that the body of the \texttt{Else} statement
- has been indented appropriately in \cref{lst:special2-mod2}.
+ \item we have specified multiple settings for the \texttt{middle} field using the
+ syntax demonstrated in \cref{lst:middle1-yaml} so that the body of the
+ \texttt{Else} statement has been indented appropriately in
+ \cref{lst:special2-mod2}.
\end{itemize}
\end{example}
@@ -3144,12 +3204,13 @@ latexindent.pl special3.tex -l=special-verb1
\index{specialBeginEnd!specifying as verbatim}
\begin{cmhtcbraster}
- \cmhlistingsfromfile{demonstrations/special-verb1.yaml}[yaml-TCB]{\texttt{special-verb1.yaml}}{lst:special-verb1-yaml}
\cmhlistingsfromfile{demonstrations/special3-mod1.tex}{\texttt{special3.tex} and output using \cref{lst:special-verb1-yaml}}{lst:special3-mod1}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/special-verb1.yaml}[yaml-TCB]{\texttt{special-verb1.yaml}}{lst:special-verb1-yaml}
\end{cmhtcbraster}
\end{example}
- We can combine the \texttt{specialBeginEnd} with the \texttt{lookForAlignDelims} feature.
+ We can combine the \texttt{specialBeginEnd} with the \texttt{lookForAlignDelims}
+ feature.
\begin{example}
We begin with the code in \cref{lst:special-align}.
@@ -3167,30 +3228,31 @@ latexindent.pl special-align.tex -l edge-node1.yaml -o=+-mod1
to receive the output in \cref{lst:special-align-mod1}. \index{specialBeginEnd!combined
with lookForAlignDelims} \index{specialBeginEnd!delimiterRegEx}
\index{specialBeginEnd!alignment at delimiter} \index{specialBeginEnd!tikz example}
- \index{regular expressions!delimiter alignment for edge or node} \index{delimiters!within
- specialBeginEnd blocks} \index{regular expressions!numeric 0-9}
+ \index{regular expressions!delimiter alignment for edge or node}
+ \index{delimiters!within specialBeginEnd blocks} \index{regular expressions!numeric 0-9}
\begin{cmhtcbraster}[ raster left skip=-3.5cm,]
- \cmhlistingsfromfile{demonstrations/edge-node1.yaml}[yaml-TCB]{\texttt{edge-node1.yaml}}{lst:edge-node1}
\cmhlistingsfromfile{demonstrations/special-align-mod1.tex}{\texttt{special-align.tex} using \cref{lst:edge-node1}}{lst:special-align-mod1}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/edge-node1.yaml}[yaml-TCB]{\texttt{edge-node1.yaml}}{lst:edge-node1}
\end{cmhtcbraster}
- The output in \cref{lst:special-align-mod1} is not quite ideal. We can tweak the settings
- within \cref{lst:edge-node1} in order to improve the output; in particular, we employ the
- code in \cref{lst:edge-node2} and run the command \index{switches!-l demonstration}
- \index{switches!-o demonstration} \index{regular expressions!uppercase alph A-Z}
+ The output in \cref{lst:special-align-mod1} is not quite ideal. We can tweak the
+ settings within \cref{lst:edge-node1} in order to improve the output; in particular, we
+ employ the code in \cref{lst:edge-node2} and run the command \index{switches!-l
+ demonstration} \index{switches!-o demonstration} \index{regular expressions!uppercase
+ alph A-Z}
\begin{commandshell}
latexindent.pl special-align.tex -l edge-node2.yaml -o=+-mod2
\end{commandshell}
to receive the output in \cref{lst:special-align-mod2}.
- \index{specialBeginEnd!delimiterRegEx tweaked} \index{regular expressions!at least one +}
- \index{regular expressions!horizontal space \textbackslash{h}}
+ \index{specialBeginEnd!delimiterRegEx tweaked} \index{regular expressions!at least one
+ +} \index{regular expressions!horizontal space \textbackslash{h}}
\begin{cmhtcbraster}[ raster left skip=-3.5cm,]
- \cmhlistingsfromfile{demonstrations/edge-node2.yaml}[yaml-TCB]{\texttt{edge-node2.yaml}}{lst:edge-node2}
\cmhlistingsfromfile{demonstrations/special-align-mod2.tex}{\texttt{special-align.tex} using \cref{lst:edge-node2}}{lst:special-align-mod2}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/edge-node2.yaml}[yaml-TCB]{\texttt{edge-node2.yaml}}{lst:edge-node2}
\end{cmhtcbraster}
\end{example}
@@ -3209,10 +3271,10 @@ latexindent.pl special-align.tex -l edge-node2.yaml -o=+-mod2
The default settings do \emph{not} place indentation after a heading, but you can easily
switch them on by changing \texttt{indentAfterThisHeading} from 0 to 1. The
- \texttt{level} field tells \texttt{latexindent.pl} the hierarchy of the heading structure
- in your document. You might, for example, like to have both \texttt{section} and
- \texttt{subsection} set with \texttt{level: 3} because you do not want the indentation to
- go too deep.
+ \texttt{level} field tells \texttt{latexindent.pl} the hierarchy of the heading
+ structure in your document. You might, for example, like to have both \texttt{section}
+ and \texttt{subsection} set with \texttt{level: 3} because you do not want the
+ indentation to go too deep.
You can add any of your own custom heading commands to this field, specifying the
\texttt{level} as appropriate. You can also specify your own indentation in
@@ -3227,8 +3289,8 @@ latexindent.pl special-align.tex -l edge-node2.yaml -o=+-mod2
\texttt{headings1.tex}.
\begin{cmhtcbraster}
- \cmhlistingsfromfile[style=yaml-LST]{demonstrations/headings1.yaml}[yaml-TCB]{\texttt{headings1.yaml}}{lst:headings1yaml}
\cmhlistingsfromfile{demonstrations/headings1.tex}{\texttt{headings1.tex}}{lst:headings1}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/headings1.yaml}[yaml-TCB]{\texttt{headings1.yaml}}{lst:headings1yaml}
\end{cmhtcbraster}
If you run the command \index{switches!-l demonstration}
@@ -3289,13 +3351,13 @@ latexindent.pl mult-nested.tex -l=max-indentation1
You should receive the output shown in \cref{lst:mult-nested-max-ind1}.
\begin{cmhtcbraster}
- \cmhlistingsfromfile[style=yaml-LST]{demonstrations/max-indentation1.yaml}[yaml-TCB]{\texttt{max-indentation1.yaml}}{lst:max-indentation1yaml}
\cmhlistingsfromfile[showspaces=true]{demonstrations/mult-nested-max-ind1.tex}{\texttt{mult-nested.tex} using \cref{lst:max-indentation1yaml}}{lst:mult-nested-max-ind1}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/max-indentation1.yaml}[yaml-TCB]{\texttt{max-indentation1.yaml}}{lst:max-indentation1yaml}
\end{cmhtcbraster}
\end{example}
- Comparing the output in \cref{lst:mult-nested-default,lst:mult-nested-max-ind1} we notice
- that the (default) tabs of indentation have been replaced by a single space.
+ Comparing the output in \cref{lst:mult-nested-default,lst:mult-nested-max-ind1} we
+ notice that the (default) tabs of indentation have been replaced by a single space.
In general, when using the \texttt{maximumIndentation} feature, any leading tabs will be
replaced by equivalent spaces except, of course, those found in
@@ -3304,10 +3366,10 @@ latexindent.pl mult-nested.tex -l=max-indentation1
\subsection{The code blocks known latexindent.pl}\label{subsubsec:code-blocks}
- As of Version 3.0, \texttt{latexindent.pl} processes documents using code blocks; each of
- these are shown in \cref{tab:code-blocks}. \index{regular expressions!uppercase alph A-Z}
- \index{regular expressions!lowercase alph a-z} \index{regular expressions!numeric 0-9}
- \index{regular expressions!horizontal space \textbackslash{h}}
+ As of Version 3.0, \texttt{latexindent.pl} processes documents using code blocks; each
+ of these are shown in \cref{tab:code-blocks}. \index{regular expressions!uppercase alph
+ A-Z} \index{regular expressions!lowercase alph a-z} \index{regular expressions!numeric
+ 0-9} \index{regular expressions!horizontal space \textbackslash{h}}
\begin{table}[!htp]
\begin{widepage}
@@ -3485,8 +3547,8 @@ latexindent.pl -l=myenv-noAdd1.yaml myenv-args.tex
\end{commandshell}
we obtain the output shown in \cref{lst:myenv-args-noAdd1}; note that the optional
- argument, mandatory argument and body \emph{all} have received no additional indent. This
- is because, when \texttt{noAdditionalIndent} is specified in `scalar' form (as in
+ argument, mandatory argument and body \emph{all} have received no additional indent.
+ This is because, when \texttt{noAdditionalIndent} is specified in `scalar' form (as in
\cref{lst:myenv-noAdd1}), then \emph{all} parts of the environment (body, optional and
mandatory arguments) are assumed to want no additional indent.
\cmhlistingsfromfile{demonstrations/myenvironment-args-noAdd-body1.tex}{\texttt{myenv-args.tex} using \cref{lst:myenv-noAdd1}}{lst:myenv-args-noAdd1}
@@ -3512,9 +3574,9 @@ latexindent.pl myenv.tex -l myenv-noAdd6.yaml
we obtain the respective outputs given in
\cref{lst:myenv-args-noAdd5,lst:myenv-args-noAdd6}. Note that in
\cref{lst:myenv-args-noAdd5} the text for the \emph{optional} argument has not received
- any additional indentation, and that in \cref{lst:myenv-args-noAdd6} the \emph{mandatory}
- argument has not received any additional indentation; in both cases, the \emph{body} has
- not received any additional indentation.
+ any additional indentation, and that in \cref{lst:myenv-args-noAdd6} the
+ \emph{mandatory} argument has not received any additional indentation; in both cases,
+ the \emph{body} has not received any additional indentation.
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/myenvironment-args-noAdd5.tex}{\texttt{myenv-args.tex} using \cref{lst:myenv-noAdd5}}{lst:myenv-args-noAdd5}
@@ -3607,10 +3669,11 @@ latexindent.pl myenv-args.tex -l myenv-rules4.yaml
\yamltitle{noAdditionalIndentGlobal}*{fields}
Assuming that your environment name is not found within neither
\texttt{noAdditionalIndent} nor \texttt{indentRules}, the next place that
- \texttt{latexindent.pl} will look is \texttt{noAdditionalIndentGlobal}, and in particular
- \emph{for the environments} key (see \cref{lst:noAdditionalIndentGlobal:environments}).
+ \texttt{latexindent.pl} will look is \texttt{noAdditionalIndentGlobal}, and in
+ particular \emph{for the environments} key (see
+ \cref{lst:noAdditionalIndentGlobal:environments}).
- \cmhlistingsfromfile[style=noAdditionalIndentGlobalEnv]{../defaultSettings.yaml}[width=.5\linewidth,before=\centering,yaml-TCB]{\texttt{noAdditionalIndentGlobal}}{lst:noAdditionalIndentGlobal:environments}
+ \cmhlistingsfromfile[style=noAdditionalIndentGlobalEnv]{../defaultSettings.yaml}[width=.7\linewidth,before=\centering,yaml-TCB]{\texttt{noAdditionalIndentGlobal}}{lst:noAdditionalIndentGlobal:environments}
\begin{example}
Let's say that you change the value of \texttt{environments} to \texttt{1} in
@@ -3674,11 +3737,12 @@ latexindent.pl myenv-args.tex -local mand-args-no-add-glob.yaml
The final check that \texttt{latexindent.pl} will make is to look for
\texttt{indentRulesGlobal} as detailed in \cref{lst:indentRulesGlobal:environments}.
- \cmhlistingsfromfile[style=indentRulesGlobalEnv]{../defaultSettings.yaml}[width=.5\linewidth,before=\centering,yaml-TCB]{\texttt{indentRulesGlobal}}{lst:indentRulesGlobal:environments}
+ \cmhlistingsfromfile[style=indentRulesGlobalEnv]{../defaultSettings.yaml}[width=.7\linewidth,before=\centering,yaml-TCB]{\texttt{indentRulesGlobal}}{lst:indentRulesGlobal:environments}
\begin{example}
- If you change the \texttt{environments} field to anything involving horizontal space, say
- \lstinline!" "!, and then run the following commands \index{switches!-l demonstration}
+ If you change the \texttt{environments} field to anything involving horizontal space,
+ say \lstinline!" "!, and then run the following commands \index{switches!-l
+ demonstration}
\begin{commandshell}
latexindent.pl myenv-args.tex -l env-indentRules.yaml
@@ -3686,13 +3750,13 @@ latexindent.pl myenv-args.tex -l myenv-rules1.yaml,env-indentRules.yaml
\end{commandshell}
then the respective output is shown in
- \cref{lst:myenv-args-indent-rules-global1,lst:myenv-args-indent-rules-global2}. Note that
- in \cref{lst:myenv-args-indent-rules-global1}, both the environment blocks have received
- a single-space indentation, whereas in \cref{lst:myenv-args-indent-rules-global2} the
- \texttt{outer} environment has received single-space indentation (specified by
- \texttt{indentRulesGlobal}), but \texttt{myenv} has received \lstinline!" "!, as
- specified by the particular \texttt{indentRules} for \texttt{myenv}
- \vref{lst:myenv-rules1}.
+ \cref{lst:myenv-args-indent-rules-global1,lst:myenv-args-indent-rules-global2}. Note
+ that in \cref{lst:myenv-args-indent-rules-global1}, both the environment blocks have
+ received a single-space indentation, whereas in
+ \cref{lst:myenv-args-indent-rules-global2} the \texttt{outer} environment has received
+ single-space indentation (specified by \texttt{indentRulesGlobal}), but \texttt{myenv}
+ has received \lstinline!" "!, as specified by the particular \texttt{indentRules} for
+ \texttt{myenv} \vref{lst:myenv-rules1}.
\begin{cmhtcbraster}
\cmhlistingsfromfile[showspaces=true]{demonstrations/myenvironment-args-global-rules1.tex}{\texttt{myenv-args.tex} using \cref{lst:indentRulesGlobal:environments}}{lst:myenv-args-indent-rules-global1}
@@ -3717,10 +3781,10 @@ latexindent.pl myenv-args.tex -local mand-args-indent-rules-glob.yaml
\end{commandshell}
we obtain the respective outputs in
- \cref{lst:myenv-args-indent-rules-global3,lst:myenv-args-indent-rules-global4}. Note that
- the \emph{optional} argument in \cref{lst:myenv-args-indent-rules-global3} has received
- two tabs worth of indentation, while the \emph{mandatory} argument has done so in
- \cref{lst:myenv-args-indent-rules-global4}.
+ \cref{lst:myenv-args-indent-rules-global3,lst:myenv-args-indent-rules-global4}. Note
+ that the \emph{optional} argument in \cref{lst:myenv-args-indent-rules-global3} has
+ received two tabs worth of indentation, while the \emph{mandatory} argument has done so
+ in \cref{lst:myenv-args-indent-rules-global4}.
\begin{widepage}
\begin{minipage}{.55\textwidth}
@@ -3759,9 +3823,9 @@ latexindent.pl items1.tex -local item-noAdd1.yaml
latexindent.pl items1.tex -local item-rules1.yaml
\end{commandshell}
- the respective outputs are given in \cref{lst:items1-noAdd1,lst:items1-rules1}; note that
- in \cref{lst:items1-noAdd1} that the text after each \texttt{item} has not received any
- additional indentation, and in \cref{lst:items1-rules1}, the text after each
+ the respective outputs are given in \cref{lst:items1-noAdd1,lst:items1-rules1}; note
+ that in \cref{lst:items1-noAdd1} that the text after each \texttt{item} has not received
+ any additional indentation, and in \cref{lst:items1-rules1}, the text after each
\texttt{item} has received a single space of indentation, specified by
\cref{lst:item-rules1}.
@@ -3799,10 +3863,10 @@ latexindent.pl items1.tex -local items-indentRulesGlobal.yaml
% arara: pdflatex: { files: [latexindent]}
\subsubsection{Commands with arguments}\label{subsubsec:commands-arguments}
\begin{example}
- Let's begin with the simple example in \cref{lst:mycommand}; when \texttt{latexindent.pl}
- operates on this file, the default output is shown in \cref{lst:mycommand-default}.
- \footnote{The command code blocks have quite a few subtleties, described in
- \vref{subsec:commands-string-between}.}
+ Let's begin with the simple example in \cref{lst:mycommand}; when
+ \texttt{latexindent.pl} operates on this file, the default output is shown in
+ \cref{lst:mycommand-default}. \footnote{The command code blocks have quite a few
+ subtleties, described in \vref{subsec:commands-string-between}.}
\begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/mycommand.tex}{\texttt{mycommand.tex}}{lst:mycommand}
@@ -3810,8 +3874,8 @@ latexindent.pl items1.tex -local items-indentRulesGlobal.yaml
\end{cmhtcbraster}
As in the environment-based case (see \vref{lst:myenv-noAdd1,lst:myenv-noAdd2}) we may
- specify \texttt{noAdditionalIndent} either in `scalar' form, or in `field' form, as shown
- in \cref{lst:mycommand-noAdd1,lst:mycommand-noAdd2}
+ specify \texttt{noAdditionalIndent} either in `scalar' form, or in `field' form, as
+ shown in \cref{lst:mycommand-noAdd1,lst:mycommand-noAdd2}
\begin{cmhtcbraster}
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/mycommand-noAdd1.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{mycommand-noAdd1.yaml}}{lst:mycommand-noAdd1}
@@ -3868,8 +3932,8 @@ latexindent.pl mycommand.tex -l mycommand-noAdd4.yaml
\begin{example}
Attentive readers will note that the body of \texttt{mycommand} in both
- \cref{lst:mycommand-output-noAdd3,lst:mycommand-output-noAdd4} has received no additional
- indent, even though \texttt{body} is explicitly set to \texttt{0} in both
+ \cref{lst:mycommand-output-noAdd3,lst:mycommand-output-noAdd4} has received no
+ additional indent, even though \texttt{body} is explicitly set to \texttt{0} in both
\cref{lst:mycommand-noAdd3,lst:mycommand-noAdd4}. This is because, by default,
\texttt{noAdditionalIndentGlobal} for \texttt{commands} is set to \texttt{1} by default;
this can be easily fixed as in
@@ -3896,8 +3960,8 @@ latexindent.pl mycommand.tex -l mycommand-noAdd6.yaml
\end{cmhtcbraster}
\end{example}
- Both \texttt{indentRules} and \texttt{indentRulesGlobal} can be adjusted as they were for
- \emph{environment} code blocks, as in \vref{lst:myenv-rules3,lst:myenv-rules4} and
+ Both \texttt{indentRules} and \texttt{indentRulesGlobal} can be adjusted as they were
+ for \emph{environment} code blocks, as in \vref{lst:myenv-rules3,lst:myenv-rules4} and
\vref{lst:indentRulesGlobal:environments,lst:opt-args-indent-rules-glob,lst:mand-args-indent-rules-glob}.
% arara: pdflatex: { files: [latexindent]}
\subsubsection{ifelsefi code blocks}
@@ -4035,9 +4099,10 @@ latexindent.pl special1.tex -l special-indent-rules-global.yaml
we receive the outputs in
\cref{lst:special1-output-noAdd-glob,lst:special1-output-indent-rules-global}; notice
- that in \cref{lst:special1-output-noAdd-glob} neither of the \texttt{special} code blocks
- have received indentation, while in \cref{lst:special1-output-indent-rules-global} both
- code blocks have received a single space of indentation.
+ that in \cref{lst:special1-output-noAdd-glob} neither of the \texttt{special} code
+ blocks have received indentation, while in
+ \cref{lst:special1-output-indent-rules-global} both code blocks have received a single
+ space of indentation.
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/special1-noAdd-glob.tex}{\texttt{special1.tex} using \cref{lst:special-noAdd-glob}}{lst:special1-output-noAdd-glob}
@@ -4090,8 +4155,8 @@ latexindent.pl headings2.tex -l headings4.yaml
\begin{example}
Similarly, if we specify \texttt{indentRules} as in \cref{lst:headings5yaml} and run
analogous commands to those above, we receive the output in \cref{lst:headings2-mod5};
- note that the \emph{body}, \emph{mandatory argument} and content \emph{after the heading}
- of \texttt{paragraph} have \emph{all} received three tabs worth of indentation.
+ note that the \emph{body}, \emph{mandatory argument} and content \emph{after the
+ heading} of \texttt{paragraph} have \emph{all} received three tabs worth of indentation.
\begin{cmhtcbraster}[raster force size=false,
raster column 1/.style={add to width=1cm},
@@ -4114,9 +4179,9 @@ latexindent.pl headings2.tex -l headings4.yaml
\begin{example}
Analogously, we may specify \texttt{indentRules} as in \cref{lst:headings7yaml} which
- gives the output in \cref{lst:headings2-mod7}; note that mandatory argument text has only
- received a single space of indentation, while the body after the heading has received
- three tabs worth of indentation.
+ gives the output in \cref{lst:headings2-mod7}; note that mandatory argument text has
+ only received a single space of indentation, while the body after the heading has
+ received three tabs worth of indentation.
\begin{cmhtcbraster}
\cmhlistingsfromfile[showtabs=true]{demonstrations/headings2-mod7.tex}{\texttt{headings2.tex} using \cref{lst:headings7yaml}}{lst:headings2-mod7}
@@ -4148,19 +4213,19 @@ latexindent.pl headings2.tex -l headings4.yaml
% arara: pdflatex: { files: [latexindent]}
\subsubsection{The remaining code blocks}
Referencing the different types of code blocks in \vref{tab:code-blocks}, we have a few
- code blocks yet to cover; these are very similar to the \texttt{commands} code block type
- covered comprehensively in \vref{subsubsec:commands-arguments}, but a small discussion
- defining these remaining code blocks is necessary.
+ code blocks yet to cover; these are very similar to the \texttt{commands} code block
+ type covered comprehensively in \vref{subsubsec:commands-arguments}, but a small
+ discussion defining these remaining code blocks is necessary.
\paragraph{keyEqualsValuesBracesBrackets}
\texttt{latexindent.pl} defines this type of code block by the following criteria:
\begin{itemize}
- \item it must immediately follow either \lstinline!{! OR \lstinline![! OR \lstinline!,! with
- comments and blank lines allowed.
+ \item it must immediately follow either \lstinline!{! OR \lstinline![! OR
+ \lstinline!,! with comments and blank lines allowed.
\item then it has a name made up of the characters detailed in \vref{tab:code-blocks};
\item then an $=$ symbol;
- \item then at least one set of curly braces or square brackets (comments and line breaks
- allowed throughout).
+ \item then at least one set of curly braces or square brackets (comments and line
+ breaks allowed throughout).
\end{itemize}
See the \texttt{keyEqualsValuesBracesBrackets: follow} and
\texttt{keyEqualsValuesBracesBrackets: name} fields of the fine tuning section in
@@ -4180,22 +4245,22 @@ latexindent.pl headings2.tex -l headings4.yaml
\begin{itemize}
\item the \lstinline!\pgfkeys! command's mandatory argument;
\item the \lstinline!start coordinate/.initial! key's mandatory argument;
- \item the \lstinline!start coordinate/.initial! key's body, which is defined as any lines
- following the name of the key that include its arguments. This is the part controlled by
- the \emph{body} field for \texttt{noAdditionalIndent} and friends from
- \cpageref{sec:noadd-indent-rules}.
+ \item the \lstinline!start coordinate/.initial! key's body, which is defined as any
+ lines following the name of the key that include its arguments. This is the part
+ controlled by the \emph{body} field for \texttt{noAdditionalIndent} and friends
+ from \cpageref{sec:noadd-indent-rules}.
\end{itemize}
\end{example}
\paragraph{namedGroupingBracesBrackets} This type of code block is mostly motivated by
- tikz-based code; we define this code block as follows:
+ tikz-based code; we define this code block as follows:
\begin{itemize}
- \item it must immediately follow either \emph{horizontal space} OR \emph{one or more line
- breaks} OR \lstinline!{! OR \lstinline![! OR \lstinline!$! OR \lstinline!)! OR
- \lstinline!(!
+ \item it must immediately follow either \emph{horizontal space} OR \emph{one or more
+ line breaks} OR \lstinline!{! OR \lstinline![! OR \lstinline!$! OR \lstinline!)!
+ OR \lstinline!(!
\item the name may contain the characters detailed in \vref{tab:code-blocks};
- \item then at least one set of curly braces or square brackets (comments and line breaks
- allowed throughout).
+ \item then at least one set of curly braces or square brackets (comments and line
+ breaks allowed throughout).
\end{itemize}
See the \texttt{NamedGroupingBracesBrackets: follow} and
\texttt{NamedGroupingBracesBrackets: name} fields of the fine tuning section in
@@ -4213,27 +4278,29 @@ latexindent.pl headings2.tex -l headings4.yaml
In particular, \texttt{latexindent.pl} considers \texttt{child}, \texttt{parent} and
\texttt{node} all to be \texttt{namedGroupingBracesBrackets}\footnote{ You may like to
verify this by using the \texttt{-tt} option and checking \texttt{indent.log}! }.
- Referencing \cref{lst:child1:default}, note that the maximum indentation is two tabs, and
- these come from:
+ Referencing \cref{lst:child1:default}, note that the maximum indentation is two tabs,
+ and these come from:
\begin{itemize}
\item the \lstinline!child!'s mandatory argument;
- \item the \lstinline!child!'s body, which is defined as any lines following the name of the
- \texttt{namedGroupingBracesBrackets} that include its arguments. This is the part
- controlled by the \emph{body} field for \texttt{noAdditionalIndent} and friends from
- \cpageref{sec:noadd-indent-rules}.
+ \item the \lstinline!child!'s body, which is defined as any lines following the name
+ of the \texttt{namedGroupingBracesBrackets} that include its arguments. This is
+ the part controlled by the \emph{body} field for \texttt{noAdditionalIndent} and
+ friends from \cpageref{sec:noadd-indent-rules}.
\end{itemize}
\end{example}
- \paragraph{UnNamedGroupingBracesBrackets} occur in a variety of situations; specifically, we
- define this type of code block as satisfying the following criteria:
+ \paragraph{UnNamedGroupingBracesBrackets} occur in a variety of situations; specifically,
+ we define this type of code block as satisfying the following criteria:
\begin{itemize}
- \item it must immediately follow either \lstinline!{! OR \lstinline![! OR \lstinline!,! OR
- \lstinline!&! OR \lstinline!)! OR \lstinline!(! OR \lstinline!$!;
- \item then at least one set of curly braces or square brackets (comments and line breaks
- allowed throughout).
+ \item it must immediately follow either \lstinline!{! OR \lstinline![! OR
+ \lstinline!,! OR \lstinline!&! OR \lstinline!)! OR \lstinline!(! OR
+ \lstinline!$!;
+ \item then at least one set of curly braces or square brackets (comments and line
+ breaks allowed throughout).
\end{itemize}
See the \texttt{UnNamedGroupingBracesBrackets: follow} field of the fine tuning section
- in \vref{lst:fineTuning} \announce{2019-07-13}{fine tuning: namedGroupingBracesBrackets}%
+ in \vref{lst:fineTuning} \announce{2019-07-13}{fine tuning:
+ namedGroupingBracesBrackets}%
\begin{example}
An example is shown in \cref{lst:psforeach1} with default output give in
@@ -4244,23 +4311,25 @@ latexindent.pl headings2.tex -l headings4.yaml
\cmhlistingsfromfile[showtabs=true]{demonstrations/psforeach1-default.tex}{\texttt{psforeach1.tex} default output}{lst:psforeach:default}
\end{cmhtcbraster}
- Referencing \cref{lst:psforeach:default}, there are \emph{three} sets of unnamed braces.
- Note also that the maximum value of indentation is three tabs, and these come from:
+ Referencing \cref{lst:psforeach:default}, there are \emph{three} sets of unnamed
+ braces. Note also that the maximum value of indentation is three tabs, and these come
+ from:
\begin{itemize}
\item the \lstinline!\psforeach! command's mandatory argument;
\item the \emph{first} un-named braces mandatory argument;
- \item the \emph{first} un-named braces \emph{body}, which we define as any lines following the
- first opening \lstinline!{! or \lstinline![! that defined the code block. This is the
- part controlled by the \emph{body} field for \texttt{noAdditionalIndent} and friends from
- \cpageref{sec:noadd-indent-rules}.
+ \item the \emph{first} un-named braces \emph{body}, which we define as any lines
+ following the first opening \lstinline!{! or \lstinline![! that defined the code
+ block. This is the part controlled by the \emph{body} field for
+ \texttt{noAdditionalIndent} and friends from \cpageref{sec:noadd-indent-rules}.
\end{itemize}
\end{example}
Users wishing to customise the mandatory and/or optional arguments on a \emph{per-name}
- basis for the \texttt{UnNamedGroupingBracesBrackets} should use \texttt{always-un-named}.
+ basis for the \texttt{UnNamedGroupingBracesBrackets} should use
+ \texttt{always-un-named}.
\paragraph{filecontents} code blocks behave just as \texttt{environments}, except that
- neither arguments nor items are sought.
+ neither arguments nor items are sought.
\subsubsection{Summary}
\index{indentation!summary}
@@ -4286,8 +4355,8 @@ latexindent.pl headings2.tex -l headings4.yaml
\yamltitle{commandCodeBlocks}*{fields}
- The \texttt{commandCodeBlocks} field \announce{2018-04-27}*{commandCodeBlocks} contains a
- few switches detailed in \cref{lst:commandCodeBlocks}.%
+ The \texttt{commandCodeBlocks} field \announce{2018-04-27}*{commandCodeBlocks} contains
+ a few switches detailed in \cref{lst:commandCodeBlocks}.%
\cmhlistingsfromfile[style=commandCodeBlocks]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{commandCodeBlocks}}{lst:commandCodeBlocks}
@@ -4295,8 +4364,8 @@ latexindent.pl headings2.tex -l headings4.yaml
\begin{example}
The need for this field was mostly motivated by commands found in code used to generate
- images in \texttt{PSTricks} and \texttt{tikz}; for example, let's consider the code given
- in \cref{lst:pstricks1}.
+ images in \texttt{PSTricks} and \texttt{tikz}; for example, let's consider the code
+ given in \cref{lst:pstricks1}.
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/pstricks1.tex}{\texttt{pstricks1.tex}}{lst:pstricks1}
@@ -4333,9 +4402,9 @@ latexindent.pl pstricks1.tex -l noRoundParentheses.yaml
Notice the difference between \cref{lst:pstricks1-default} and \cref{lst:pstricks1-nrp};
in particular, in \cref{lst:pstricks1-nrp}, because round parentheses are \emph{not}
- allowed, \texttt{latexindent.pl} finds that the \lstinline!\defFunction! command finishes
- at the first opening round parenthesis. As such, the remaining braced, mandatory,
- arguments are found to be \texttt{UnNamedGroupingBracesBrackets} (see
+ allowed, \texttt{latexindent.pl} finds that the \lstinline!\defFunction! command
+ finishes at the first opening round parenthesis. As such, the remaining braced,
+ mandatory, arguments are found to be \texttt{UnNamedGroupingBracesBrackets} (see
\vref{tab:code-blocks}) which, by default, assume indentation for their body, and hence
the tabbed indentation in \cref{lst:pstricks1-nrp}.
\end{example}
@@ -4381,14 +4450,15 @@ latexindent.pl pstricks1.tex -l defFunction.yaml
processes \cref{lst:tikz-node1}, it consumes:
\begin{itemize}
\item the optional argument \lstinline![thin]!
- \item the round-bracketed argument \lstinline!(c)! because \texttt{roundParenthesesAllowed} is
- $1$ by default
+ \item the round-bracketed argument \lstinline!(c)! because
+ \texttt{roundParenthesesAllowed} is $1$ by default
\item the string \lstinline!to! (specified in \texttt{stringsAllowedBetweenArguments})
\item the optional argument \lstinline![in=110,out=-90]!
\item the string \lstinline!++! (specified in \texttt{stringsAllowedBetweenArguments})
\item the round-bracketed argument \lstinline!(0,-0.5cm)! because
\texttt{roundParenthesesAllowed} is $1$ by default
- \item the string \lstinline!node! (specified in \texttt{stringsAllowedBetweenArguments})
+ \item the string \lstinline!node! (specified in
+ \texttt{stringsAllowedBetweenArguments})
\item the optional argument \lstinline![below,align=left,scale=0.5]!
\end{itemize}
\end{example}
@@ -4409,11 +4479,11 @@ latexindent.pl tikz-node1.tex -l draw.yaml
\end{cmhtcbraster}
Notice that each line after the \lstinline!\draw! command (its `body') in
- \cref{lst:tikz-node1-draw} has been given the appropriate two-spaces worth of indentation
- specified in \cref{lst:draw}.
+ \cref{lst:tikz-node1-draw} has been given the appropriate two-spaces worth of
+ indentation specified in \cref{lst:draw}.
- Let's compare this with the output from using the YAML settings in \cref{lst:no-strings},
- and running the command \index{switches!-l demonstration}
+ Let's compare this with the output from using the YAML settings in
+ \cref{lst:no-strings}, and running the command \index{switches!-l demonstration}
\begin{commandshell}
latexindent.pl tikz-node1.tex -l no-strings.yaml
@@ -4429,12 +4499,12 @@ latexindent.pl tikz-node1.tex -l no-strings.yaml
In this case, \texttt{latexindent.pl} sees that:
\begin{itemize}
\item the \lstinline!\draw! command finishes after the \lstinline!(c)!, as
- \texttt{stringsAllowedBetweenArguments} has been set to $0$ so there are no strings
- allowed between arguments;
+ \texttt{stringsAllowedBetweenArguments} has been set to $0$ so there are no
+ strings allowed between arguments;
\item it finds a \texttt{namedGroupingBracesBrackets} called \texttt{to} (see
\vref{tab:code-blocks}) \emph{with} argument \lstinline![in=110,out=-90]!
- \item it finds another \texttt{namedGroupingBracesBrackets} but this time called \texttt{node}
- with argument \lstinline![below,align=left,scale=0.5]!
+ \item it finds another \texttt{namedGroupingBracesBrackets} but this time called
+ \texttt{node} with argument \lstinline![below,align=left,scale=0.5]!
\end{itemize}
\end{example}
@@ -4456,14 +4526,14 @@ latexindent.pl tikz-node1.tex -l no-strings.yaml
\end{cmhtcbraster}
We specify \texttt{amalgamate} to be set to \texttt{0} and in which case any settings
- loaded prior to those specified, including the default, will be overwritten. For example,
- using the settings in \cref{lst:amalgamate-demo3} means that only the strings specified
- in that field will be used.
+ loaded prior to those specified, including the default, will be overwritten. For
+ example, using the settings in \cref{lst:amalgamate-demo3} means that only the strings
+ specified in that field will be used.
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/amalgamate-demo3.yaml}[yaml-TCB]{\texttt{amalgamate-demo3.yaml}}{lst:amalgamate-demo3}
- It is important to note that the \texttt{amalgamate} field, if used, must be in the first
- field, and specified using the syntax given in
+ It is important to note that the \texttt{amalgamate} field, if used, must be in the
+ first field, and specified using the syntax given in
\cref{lst:amalgamate-demo1,lst:amalgamate-demo2,lst:amalgamate-demo3}.
\begin{example}
@@ -4500,10 +4570,10 @@ latexindent.pl for-each.tex -l foreach.yaml
\yamltitle{commandNameSpecial}*{fields}
There are some special command names \announce{2018-04-27}*{commandNameSpecial} that do
- not fit within the names recognised by \texttt{latexindent.pl}, the first one of which is
- \lstinline!\@ifnextchar[!. From the perspective of \texttt{latexindent.pl}, the whole of
- the text \lstinline!\@ifnextchar[! is a command, because it is immediately followed by
- sets of mandatory arguments. However, without the \texttt{commandNameSpecial} field,
+ not fit within the names recognised by \texttt{latexindent.pl}, the first one of which
+ is \lstinline!\@ifnextchar[!. From the perspective of \texttt{latexindent.pl}, the whole
+ of the text \lstinline!\@ifnextchar[! is a command, because it is immediately followed
+ by sets of mandatory arguments. However, without the \texttt{commandNameSpecial} field,
\texttt{latexindent.pl} would not be able to label it as such, because the \lstinline![!
is, necessarily, not matched by a closing \lstinline!]!.%
@@ -4516,8 +4586,8 @@ latexindent.pl for-each.tex -l foreach.yaml
\cmhlistingsfromfile{demonstrations/ifnextchar-default.tex}{\texttt{ifnextchar.tex} default output}{lst:ifnextchar-default}
\end{cmhtcbraster}
- Notice that in \cref{lst:ifnextchar-default} the \texttt{parbox} command has been able to
- indent its body, because \texttt{latexindent.pl} has successfully found the command
+ Notice that in \cref{lst:ifnextchar-default} the \texttt{parbox} command has been able
+ to indent its body, because \texttt{latexindent.pl} has successfully found the command
\lstinline!\@ifnextchar! first; the pattern-matching of \texttt{latexindent.pl} starts
from \emph{the inner most <thing> and works outwards}, discussed in more detail on
\cpageref{page:phases}.
@@ -4591,8 +4661,8 @@ latexindent.pl for-each.tex -l foreach.yaml
\yamltitle{condenseMultipleBlankLinesInto}*{positive integer}
Assuming that this switch takes an integer value greater than \texttt{0},
- \texttt{latexindent.pl} will condense multiple blank lines into the number of blank lines
- illustrated by this switch.
+ \texttt{latexindent.pl} will condense multiple blank lines into the number of blank
+ lines illustrated by this switch.
\begin{example}
As an example, \cref{lst:mlb-bl} shows a sample file with blank lines; upon running
@@ -4629,31 +4699,40 @@ latexindent.pl myfile.tex -m -o=+-mod1
\item it happens \emph{after} verbatim blocks have been found;
\item it happens \emph{after} the oneSentencePerLine routine (see
\cref{sec:onesentenceperline});
- \item it happens \emph{before} all of the other code blocks are found and does \emph{not}
- operate on a per-code-block basis; this means that, including indentation, you may
- receive a column width wider than that which you specify in \texttt{columns}
+ \item it can happen \emph{before} or \emph{after} \announce*{2023-01-01}{text wrap:
+ before/after} all of the other code blocks are found and does \emph{not} operate
+ on a per-code-block basis; when using \texttt{before} this means that, including
+ indentation, you may receive a column width wider than that which you specify in
+ \texttt{columns}, and in which case you probably wish to explore \texttt{after}
+ in \cref{subsubsec:tw:before:after};
\item code blocks to be text wrapped will:
\begin{enumerate}
\item \emph{follow} the fields specified in \texttt{blocksFollow}
\item \emph{begin} with the fields specified in \texttt{blocksBeginWith}
\item \emph{end} before the fields specified in \texttt{blocksEndBefore}
\end{enumerate}
- \item setting \texttt{columns} to a value $>0$ will text wrap blocks by first removing line
- breaks, and then wrapping according to the specified value of \texttt{columns};
- \item setting \texttt{columns} to $-1$ will \emph{only} remove line breaks within the text wrap
- block;
- \item by default, the text wrapping routine will remove line breaks within text blocks because
- \texttt{removeBlockLineBreaks} is set to 1; switch it to 0 if you wish to change this;
+ \item setting \texttt{columns} to a value $>0$ will text wrap blocks by first removing
+ line breaks, and then wrapping according to the specified value of
+ \texttt{columns};
+ \item setting \texttt{columns} to $-1$ will \emph{only} remove line breaks within the
+ text wrap block;
+ \item by default, the text wrapping routine will remove line breaks within text blocks
+ because \texttt{removeBlockLineBreaks} is set to 1; switch it to 0 if you wish to
+ change this;
\item about trailing comments within text wrap blocks:
\begin{enumerate}
- \item trailing comments that do \emph{not} have leading space instruct the text wrap routine to
- connect the lines \emph{without} space (see \cref{lst:tw-tc2});
- \item multiple trailing comments will be connected at the end of the text wrap block (see
- \cref{lst:tw-tc4});
- \item the number of spaces between the end of the text wrap block and the (possibly combined)
- trailing comments is determined by the spaces (if any) at the end of the text wrap block
- (see \cref{lst:tw-tc5}).
+ \item trailing comments that do \emph{not} have leading space instruct the text
+ wrap routine to connect the lines \emph{without} space (see
+ \cref{lst:tw-tc2});
+ \item multiple trailing comments will be connected at the end of the text wrap
+ block (see \cref{lst:tw-tc4});
+ \item the number of spaces between the end of the text wrap block and the
+ (possibly combined) trailing comments is determined by the spaces (if any)
+ at the end of the text wrap block (see \cref{lst:tw-tc5});
\end{enumerate}
+ \item trailing comments can receive text wrapping \announce*{2023-01-01}{text wrap
+ trailing comments}; examples are shown in \cref{subsubsec:tw:comments} and
+ \cref{subsubsec:ospl:tw:comments}.
\end{enumerate}
We demonstrate this feature using a series of examples.
@@ -4676,19 +4755,19 @@ latexindent.pl -m -l textwrap1.yaml textwrap1.tex
\begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/textwrap1-mod1.tex}{\texttt{textwrap1-mod1.tex}}{lst:textwrap1-mod1}
- \cmhlistingsfromfile{demonstrations/textwrap1.yaml}[MLB-TCB]{\texttt{textwrap1.yaml}}{lst:textwrap1-yaml}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/textwrap1.yaml}[MLB-TCB]{\texttt{textwrap1.yaml}}{lst:textwrap1-yaml}
\end{cmhtcbraster}
\end{example}
\begin{example}
- If we set \texttt{columns} to $-1$ then \texttt{latexindent.pl} remove line breaks within
- the text wrap block, and will \emph{not} perform text wrapping. We can use this to undo
- text wrapping. \index{text wrap!setting columns to -1}
+ If we set \texttt{columns} to $-1$ then \texttt{latexindent.pl} remove line breaks
+ within the text wrap block, and will \emph{not} perform text wrapping. We can use this
+ to undo text wrapping. \index{text wrap!setting columns to -1}
Starting from the file in \cref{lst:textwrap1-mod1} and using the settings in
\cref{lst:textwrap1A-yaml}
- \cmhlistingsfromfile{demonstrations/textwrap1A.yaml}[MLB-TCB]{\texttt{textwrap1A.yaml}}{lst:textwrap1A-yaml}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/textwrap1A.yaml}[MLB-TCB]{\texttt{textwrap1A.yaml}}{lst:textwrap1A-yaml}
and running
@@ -4714,8 +4793,8 @@ latexindent.pl -m -l textwrap1B.yaml textwrap1-mod1.tex
gives the output in \cref{lst:textwrap1-mod1B}.
\begin{cmhtcbraster}[raster column skip=.1\linewidth]
- \cmhlistingsfromfile{demonstrations/textwrap1B.yaml}[MLB-TCB]{\texttt{textwrap1B.yaml}}{lst:textwrap1B-yaml}
\cmhlistingsfromfile[showspaces=true]{demonstrations/textwrap1-mod1B.tex}{\texttt{textwrap1-mod1B.tex}}{lst:textwrap1-mod1B}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/textwrap1B.yaml}[MLB-TCB]{\texttt{textwrap1B.yaml}}{lst:textwrap1B-yaml}
\end{cmhtcbraster}
We note that in \cref{lst:textwrap1-mod1B} the multiple spaces have \emph{not} been
condensed into single spaces.
@@ -4744,14 +4823,15 @@ latexindent.pl -m -l textwrap1.yaml tw-headings1.tex
We reference \vref{lst:textWrapOptionsAll} and also \vref{lst:indentAfterHeadings}:
\begin{itemize}
- \item in \cref{lst:textWrapOptionsAll} the \texttt{headings} field is set to \texttt{1}, which
- instructs \texttt{latexindent.pl} to read the fields from \vref{lst:indentAfterHeadings},
- \emph{regardless of the value of indentAfterThisHeading or level};
- \item the default is to assume that the heading command can, optionally, be followed by a
- \texttt{label} command.
+ \item in \cref{lst:textWrapOptionsAll} the \texttt{headings} field is set to
+ \texttt{1}, which instructs \texttt{latexindent.pl} to read the fields from
+ \vref{lst:indentAfterHeadings}, \emph{regardless of the value of
+ indentAfterThisHeading or level};
+ \item the default is to assume that the heading command can, optionally, be followed by
+ a \texttt{label} command.
\end{itemize}
- If you find scenarios in which the default value of \texttt{headings} does not work, then
- you can explore the \texttt{other} field.
+ If you find scenarios in which the default value of \texttt{headings} does not work,
+ then you can explore the \texttt{other} field.
We can turn off \texttt{headings} as in \cref{lst:bf-no-headings-yaml} and then run
@@ -4762,8 +4842,8 @@ latexindent.pl -m -l textwrap1.yaml,bf-no-headings.yaml tw-headings1.tex
gives the output in \cref{lst:tw-headings1-mod2}, in which text wrapping has been
instructed \emph{not to happen} following headings.
\begin{cmhtcbraster}
- \cmhlistingsfromfile{demonstrations/bf-no-headings.yaml}[MLB-TCB]{\texttt{bf-no-headings.yaml}}{lst:bf-no-headings-yaml}
\cmhlistingsfromfile{demonstrations/tw-headings1-mod2.tex}{\texttt{tw-headings1-mod2.tex}}{lst:tw-headings1-mod2}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/bf-no-headings.yaml}[MLB-TCB]{\texttt{bf-no-headings.yaml}}{lst:bf-no-headings-yaml}
\end{cmhtcbraster}
\end{example}
@@ -4773,7 +4853,8 @@ latexindent.pl -m -l textwrap1.yaml,bf-no-headings.yaml tw-headings1.tex
\cmhlistingsfromfile{demonstrations/tw-comments1.tex}{\texttt{tw-comments1.tex}}{lst:tw-comments1}
- We note that \cref{lst:tw-comments1} contains trailing comments. Upon running the command
+ We note that \cref{lst:tw-comments1} contains trailing comments. Upon running the
+ command
\begin{commandshell}
latexindent.pl -m -l textwrap1.yaml tw-comments1.tex
@@ -4799,8 +4880,8 @@ latexindent.pl -m -l textwrap1.yaml,bf-no-comments.yaml tw-comments1.tex
raster left skip=-3.5cm,
raster right skip=-2cm,
]
- \cmhlistingsfromfile{demonstrations/bf-no-comments.yaml}[MLB-TCB]{\texttt{bf-no-comments.yaml}}{lst:bf-no-comments-yaml}
\cmhlistingsfromfile{demonstrations/tw-comments1-mod2.tex}{\texttt{tw-comments1-mod2.tex}}{lst:tw-comments1-mod2}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/bf-no-comments.yaml}[MLB-TCB]{\texttt{bf-no-comments.yaml}}{lst:bf-no-comments-yaml}
\end{cmhtcbraster}
\end{example}
@@ -4810,8 +4891,8 @@ latexindent.pl -m -l textwrap1.yaml,bf-no-comments.yaml tw-comments1.tex
The \texttt{other} field of the \texttt{blocksFollow} can either be \texttt{0} (turned
off) or set as a regular expression. The default value is set to
- \lstinline!\\\]|\\item(?:\h|\[)! which can be translated to \emph{backslash followed by a
- square bracket} or \emph{backslash item followed by horizontal space or a square
+ \lstinline!\\\]|\\item(?:\h|\[)! which can be translated to \emph{backslash followed by
+ a square bracket} or \emph{backslash item followed by horizontal space or a square
bracket}, or in other words, \emph{end of display math} or an item command.
\begin{example}
@@ -4845,8 +4926,8 @@ latexindent.pl -m -l textwrap1.yaml,bf-no-disp-math.yaml tw-disp-math1.tex
gives the output in \cref{lst:tw-disp-math1-mod2}, in which text wrapping has been
instructed \emph{not to happen} following display math.
\begin{cmhtcbraster}[raster column skip=.1\linewidth]
- \cmhlistingsfromfile{demonstrations/bf-no-disp-math.yaml}[MLB-TCB]{\texttt{bf-no-disp-math.yaml}}{lst:bf-no-disp-math-yaml}
\cmhlistingsfromfile{demonstrations/tw-disp-math1-mod2.tex}{\texttt{tw-disp-math1-mod2.tex}}{lst:tw-disp-math1-mod2}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/bf-no-disp-math.yaml}[MLB-TCB]{\texttt{bf-no-disp-math.yaml}}{lst:bf-no-disp-math-yaml}
\end{cmhtcbraster}
Naturally, you should feel encouraged to customise this as you see fit.
@@ -4883,12 +4964,14 @@ latexindent.pl -m -l textwrap1.yaml,tw-bf-myenv.yaml tw-bf-myenv1.tex
which gives the output in \cref{lst:tw-bf-myenv1-mod2}, in which text wrapping has been
implemented across the file.
- \begin{cmhtcbraster}[raster column skip=.1\linewidth,
- raster left skip=-3.5cm,
- raster right skip=-2cm,
+ \begin{cmhtcbraster}[raster column skip=.01\linewidth,
+ raster left skip=-1.5cm,
+ raster force size=false,
+ raster column 1/.style={add to width=-.1\textwidth},
+ raster column 2/.style={add to width=.1\textwidth},
]
- \cmhlistingsfromfile{demonstrations/tw-bf-myenv.yaml}[MLB-TCB]{\texttt{tw-bf-myenv.yaml}}{lst:tw-bf-myenv-yaml}
\cmhlistingsfromfile{demonstrations/tw-bf-myenv1-mod2.tex}{\texttt{tw-bf-myenv1-mod2.tex}}{lst:tw-bf-myenv1-mod2}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/tw-bf-myenv.yaml}[MLB-TCB,width=0.6\linewidth]{\texttt{tw-bf-myenv.yaml}}{lst:tw-bf-myenv-yaml}
\end{cmhtcbraster}
\end{example}
@@ -4898,7 +4981,8 @@ latexindent.pl -m -l textwrap1.yaml,tw-bf-myenv.yaml tw-bf-myenv1.tex
series of examples. \index{text wrap!blocksBeginWith}
\begin{example}
- By default, text wrap blocks can begin with the characters \texttt{a-z} and \texttt{A-Z}.
+ By default, text wrap blocks can begin with the characters \texttt{a-z} and
+ \texttt{A-Z}.
If we start with the file given in \cref{lst:tw-0-9}
\cmhlistingsfromfile{demonstrations/tw-0-9.tex}{\texttt{tw-0-9.tex}}{lst:tw-0-9}
@@ -4921,8 +5005,8 @@ latexindent.pl -m -l textwrap1.yaml,bb-0-9-yaml tw-0-9.tex
gives the output in \cref{lst:tw-0-9-mod2}, in which text wrapping \emph{has} happened.
\begin{cmhtcbraster}[raster column skip=.1\linewidth,]
- \cmhlistingsfromfile{demonstrations/bb-0-9.yaml}[MLB-TCB]{\texttt{bb-0-9.yaml.yaml}}{lst:bb-0-9-yaml}
\cmhlistingsfromfile{demonstrations/tw-0-9-mod2.tex}{\texttt{tw-0-9-mod2.tex}}{lst:tw-0-9-mod2}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/bb-0-9.yaml}[MLB-TCB]{\texttt{bb-0-9.yaml.yaml}}{lst:bb-0-9-yaml}
\end{cmhtcbraster}
\end{example}
@@ -4952,8 +5036,8 @@ latexindent.pl -m -l textwrap1.yaml,tw-bb-announce.yaml tw-bb-announce1.tex
gives the output in \cref{lst:tw-bb-announce1-mod2}, in which text wrapping \emph{has}
happened.
\begin{cmhtcbraster}[raster column skip=.1\linewidth,]
- \cmhlistingsfromfile{demonstrations/tw-bb-announce.yaml}[MLB-TCB]{\texttt{tw-bb-announce.yaml}}{lst:tw-bb-announce-yaml}
\cmhlistingsfromfile{demonstrations/tw-bb-announce1-mod2.tex}{\texttt{tw-bb-announce1-mod2.tex}}{lst:tw-bb-announce1-mod2}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/tw-bb-announce.yaml}[MLB-TCB]{\texttt{tw-bb-announce.yaml}}{lst:tw-bb-announce-yaml}
\end{cmhtcbraster}
\end{example}
@@ -4994,7 +5078,7 @@ latexindent.pl -m -l textwrap1A.yaml,tw-be-equation.yaml tw-be-equation.tex
gives the output in \cref{lst:tw-be-equation-mod2}, in which text wrapping has been
instructed \emph{not} to stop at these statements.
- \cmhlistingsfromfile{demonstrations/tw-be-equation.yaml}[MLB-TCB]{\texttt{tw-be-equation.yaml}}{lst:tw-be-equation-yaml}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/tw-be-equation.yaml}[MLB-TCB]{\texttt{tw-be-equation.yaml}}{lst:tw-be-equation-yaml}
\begin{widepage}
\cmhlistingsfromfile{demonstrations/tw-be-equation-mod2.tex}{\texttt{tw-be-equation-mod2.tex}}{lst:tw-be-equation-mod2}
@@ -5110,6 +5194,150 @@ latexindent.pl -m tw-tc6.tex -l textwrap1A.yaml -o=+-mod1
The space at the end of the text block has been preserved.
\end{example}
+\subsubsection{Text wrap: when before/after}\label{subsubsec:tw:before:after}
+ The text wrapping routine operates, by default, \texttt{before} the
+ \announce*{2023-01-01}{text wrap: before/after details} code blocks have been found, but
+ this can be changed to \texttt{after}:
+ \begin{itemize}
+ \item \texttt{before} means it is likely that the columns of wrapped text may \emph{exceed} the
+ value specified in \texttt{columns};
+ \item \texttt{after} means it columns of wrapped text should \emph{not} exceed the value
+ specified in \texttt{columns}.
+ \end{itemize}
+ We demonstrate this in the following examples. See also
+ \cref{subsubsec:ospl:before:after}.
+
+ \begin{example}
+ Let's begin with the file in \cref{lst:textwrap8}.
+
+ \cmhlistingsfromfile*{demonstrations/textwrap8.tex}{\texttt{textwrap8.tex}}{lst:textwrap8}
+
+ Using the settings given in \cref{lst:tw-before1} and running the command
+
+ \begin{commandshell}
+latexindent.pl textwrap8.tex -o=+-mod1.tex -l=tw-before1.yaml -m
+ \end{commandshell}
+
+ gives the output given in \cref{lst:textwrap8-mod1}.
+
+ \begin{cmhtcbraster}[raster columns=2,
+ raster left skip=-1.5cm,
+ raster right skip=-0cm,
+ raster column skip=.06\linewidth]
+ \cmhlistingsfromfile*{demonstrations/textwrap8-mod1.tex}{\texttt{textwrap8-mod1.tex}}{lst:textwrap8-mod1}
+ \cmhlistingsfromfile*[style=yaml-LST]{demonstrations/tw-before1.yaml}[MLB-TCB,width=0.4\linewidth]{\texttt{tw-before1.yaml}}{lst:tw-before1}
+ \end{cmhtcbraster}
+
+ We note that, in \cref{lst:textwrap8-mod1}, that the wrapped text has \emph{exceeded}
+ the specified value of \texttt{columns} (35) given in \cref{lst:tw-before1}. We can
+ affect this by changing \texttt{when}; we explore this next.
+ \end{example}
+
+ \begin{example}
+ We continue working with \cref{lst:textwrap8}.
+
+ Using the settings given in \cref{lst:tw-after1} and running the command
+
+ \begin{commandshell}
+latexindent.pl textwrap8.tex -o=+-mod2.tex -l=tw-after1.yaml -m
+ \end{commandshell}
+
+ gives the output given in \cref{lst:textwrap8-mod2}.
+
+ \begin{cmhtcbraster}[raster columns=2,
+ raster left skip=-1.5cm,
+ raster right skip=-0cm,
+ raster column skip=.06\linewidth]
+ \cmhlistingsfromfile*{demonstrations/textwrap8-mod2.tex}{\texttt{textwrap8-mod2.tex}}{lst:textwrap8-mod2}
+ \cmhlistingsfromfile*[style=yaml-LST]{demonstrations/tw-after1.yaml}[MLB-TCB,width=0.4\linewidth]{\texttt{tw-after1.yaml}}{lst:tw-after1}
+ \end{cmhtcbraster}
+
+ We note that, in \cref{lst:textwrap8-mod2}, that the wrapped text has \emph{obeyed} the
+ specified value of \texttt{columns} (35) given in \cref{lst:tw-after1}.
+ \end{example}
+
+\subsubsection{Text wrap: wrapping comments}\label{subsubsec:tw:comments}
+ You can instruct \texttt{latexindent.pl} to apply text wrapping to comments
+ \announce*{2023-01-01}{text wrap trailing comments}; we demonstrate this with examples,
+ see also \cref{subsubsec:ospl:tw:comments}. \index{comments!text wrap} \index{text
+ wrap!comments}
+
+ \begin{example}
+ We use the file in \cref{lst:textwrap9} which contains a trailing comment block.
+
+ \cmhlistingsfromfile*{demonstrations/textwrap9.tex}{\texttt{textwrap9.tex}}{lst:textwrap9}
+
+ Using the settings given in \cref{lst:wrap-comments1} and running the command
+
+ \begin{commandshell}
+latexindent.pl textwrap9.tex -o=+-mod1.tex -l=wrap-comments1.yaml -m
+ \end{commandshell}
+
+ gives the output given in \cref{lst:textwrap9-mod1}.
+
+ \begin{cmhtcbraster}[raster columns=2,
+ raster left skip=-1.5cm,
+ raster right skip=-0cm,
+ raster column skip=.06\linewidth]
+ \cmhlistingsfromfile*{demonstrations/textwrap9-mod1.tex}{\texttt{textwrap9-mod1.tex}}{lst:textwrap9-mod1}
+ \cmhlistingsfromfile*[style=yaml-LST]{demonstrations/wrap-comments1.yaml}[MLB-TCB,width=0.4\linewidth]{\texttt{wrap-comments1.yaml}}{lst:wrap-comments1}
+ \end{cmhtcbraster}
+
+ We note that, in \cref{lst:textwrap9-mod1}, that the comments have been \emph{combined
+ and wrapped} because of the annotated line specified in \cref{lst:wrap-comments1}.
+ \end{example}
+
+ \begin{example}
+ We use the file in \cref{lst:textwrap10} which contains a trailing comment block.
+
+ \cmhlistingsfromfile*{demonstrations/textwrap10.tex}{\texttt{textwrap10.tex}}{lst:textwrap10}
+
+ Using the settings given in \cref{lst:wrap-comments1:repeat} and running the command
+
+ \begin{commandshell}
+latexindent.pl textwrap10.tex -o=+-mod1.tex -l=wrap-comments1.yaml -m
+ \end{commandshell}
+
+ gives the output given in \cref{lst:textwrap10-mod1}.
+
+ \begin{cmhtcbraster}[raster columns=2,
+ raster left skip=-1.5cm,
+ raster right skip=-0cm,
+ raster column skip=.06\linewidth]
+ \cmhlistingsfromfile*{demonstrations/textwrap10-mod1.tex}{\texttt{textwrap10-mod1.tex}}{lst:textwrap10-mod1}
+ \cmhlistingsfromfile*[style=yaml-LST]{demonstrations/wrap-comments1.yaml}[MLB-TCB,width=0.4\linewidth]{\texttt{wrap-comments1.yaml}}{lst:wrap-comments1:repeat}
+ \end{cmhtcbraster}
+
+ We note that, in \cref{lst:textwrap10-mod1}, that the comments have been \emph{combined
+ and wrapped} because of the annotated line specified in
+ \cref{lst:wrap-comments1:repeat}, and that the space from the leading comment has not
+ been inherited; we will explore this further in the next example.
+ \end{example}
+
+ \begin{example}
+ We continue to use the file in \cref{lst:textwrap10}.
+
+ Using the settings given in \cref{lst:wrap-comments2} and running the command
+
+ \begin{commandshell}
+latexindent.pl textwrap10.tex -o=+-mod2.tex -l=wrap-comments2.yaml -m
+ \end{commandshell}
+
+ gives the output given in \cref{lst:textwrap10-mod2}.
+
+ \begin{cmhtcbraster}[raster columns=2,
+ raster left skip=-1.5cm,
+ raster right skip=-0cm,
+ raster column skip=.06\linewidth]
+ \cmhlistingsfromfile*{demonstrations/textwrap10-mod2.tex}{\texttt{textwrap10-mod2.tex}}{lst:textwrap10-mod2}
+ \cmhlistingsfromfile*[style=yaml-LST]{demonstrations/wrap-comments2.yaml}[MLB-TCB,width=0.4\linewidth]{\texttt{wrap-comments2.yaml}}{lst:wrap-comments2}
+ \end{cmhtcbraster}
+
+ We note that, in \cref{lst:textwrap10-mod2}, that the comments have been \emph{combined
+ and wrapped} and that the leading space has been inherited because of the annotated
+ lines specified in \cref{lst:wrap-comments2}.
+ \end{example}
+
\subsubsection{Text wrap: huge, tabstop and separator}
The \announce{2021-07-23}*{huge:overflow is now default} default value of \texttt{huge}
is \texttt{overflow}, which means that words will \emph{not} be broken by the text
@@ -5123,8 +5351,8 @@ latexindent.pl -m tw-tc6.tex -l textwrap1A.yaml -o=+-mod1
down \texttt{latexindent.pl} significantly when the \texttt{-m} switch is active.
Furthermore, changing \texttt{huge} means that you may have some words \emph{or
- commands}(!) split across lines in your .tex file, which may affect your output. I do not
- recommend changing this field.
+ commands}(!) split across lines in your .tex file, which may affect your output. I do
+ not recommend changing this field.
\end{warning}
\begin{example}
@@ -5141,10 +5369,10 @@ latexindent.pl -m tw-tc6.tex -l textwrap1A.yaml -o=+-mod1
\begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/textwrap4-mod2A.tex}{\texttt{textwrap4-mod2A.tex}}{lst:textwrap4-mod2A}
- \cmhlistingsfromfile{demonstrations/textwrap2A.yaml}[MLB-TCB]{\texttt{textwrap2A.yaml}}{lst:textwrap2A-yaml}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/textwrap2A.yaml}[MLB-TCB]{\texttt{textwrap2A.yaml}}{lst:textwrap2A-yaml}
\cmhlistingsfromfile{demonstrations/textwrap4-mod2B.tex}{\texttt{textwrap4-mod2B.tex}}{lst:textwrap4-mod2B}
- \cmhlistingsfromfile{demonstrations/textwrap2B.yaml}[MLB-TCB]{\texttt{textwrap2B.yaml}}{lst:textwrap2B-yaml}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/textwrap2B.yaml}[MLB-TCB]{\texttt{textwrap2B.yaml}}{lst:textwrap2B-yaml}
\end{cmhtcbraster}
\end{example}
@@ -5153,9 +5381,9 @@ latexindent.pl -m tw-tc6.tex -l textwrap1A.yaml -o=+-mod1
\cite{textwrap} for details.
\begin{example}
- Starting with the code in \cref{lst:textwrap-ts} with settings in \cref{lst:tabstop}, and
- running the command \index{switches!-l demonstration} \index{switches!-m demonstration}
- \index{switches!-o demonstration}%
+ Starting with the code in \cref{lst:textwrap-ts} with settings in \cref{lst:tabstop},
+ and running the command \index{switches!-l demonstration} \index{switches!-m
+ demonstration} \index{switches!-o demonstration}%
\begin{commandshell}
latexindent.pl -m textwrap-ts.tex -o=+-mod1 -l tabstop.yaml
@@ -5167,7 +5395,7 @@ latexindent.pl -m tw-tc6.tex -l textwrap1A.yaml -o=+-mod1
raster right skip=-2cm,
raster column skip=.03\linewidth]
\cmhlistingsfromfile[showtabs=true]{demonstrations/textwrap-ts.tex}{\texttt{textwrap-ts.tex}}{lst:textwrap-ts}
- \cmhlistingsfromfile{demonstrations/tabstop.yaml}[MLB-TCB]{\texttt{tabstop.yaml}}{lst:tabstop}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/tabstop.yaml}[MLB-TCB]{\texttt{tabstop.yaml}}{lst:tabstop}
\cmhlistingsfromfile[showtabs=true]{demonstrations/textwrap-ts-mod1.tex}{\texttt{textwrap-ts-mod1.tex}}{lst:textwrap-ts-mod1}
\end{cmhtcbraster}
\end{example}
@@ -5180,8 +5408,8 @@ latexindent.pl -m tw-tc6.tex -l textwrap1A.yaml -o=+-mod1
% arara: pdflatex: { files: [latexindent]}
\subsection{oneSentencePerLine: modifying line breaks for sentences}\label{sec:onesentenceperline}
- You can instruct \texttt{latexindent.pl} to format \announce{2018-01-13}{one sentence per
- line} your file so that it puts one sentence per line. Thank you to \cite{mlep} for
+ You can instruct \texttt{latexindent.pl} to format \announce{2018-01-13}{one sentence
+ per line} your file so that it puts one sentence per line. Thank you to \cite{mlep} for
helping to shape and test this feature. The behaviour of this part of the script is
controlled by the switches detailed in \cref{lst:oneSentencePerLine}, all of which we
discuss next. \index{modifying linebreaks! by using one sentence per line}
@@ -5191,6 +5419,37 @@ latexindent.pl -m tw-tc6.tex -l textwrap1A.yaml -o=+-mod1
\cmhlistingsfromfile[style=oneSentencePerLine]{../defaultSettings.yaml}[MLB-TCB,width=.85\linewidth,before=\centering]{\texttt{oneSentencePerLine}}{lst:oneSentencePerLine}
+\subsubsection{oneSentencePerLine: overview}
+ An overview of how the oneSentencePerLine routine feature works:
+ \begin{enumerate}
+ \item the default value of \texttt{manipulateSentences} is 0, which means that
+ oneSentencePerLine will \emph{not} happen by default;
+ \item it happens \emph{after} verbatim blocks have been found;
+ \item it happens \emph{before} the text wrapping routine (see
+ \cref{subsec:textwrapping});
+ \item it happens \emph{before} the main code blocks have been found;
+ \item sentences to be found:
+ \begin{enumerate}
+ \item \emph{follow} the fields specified in \texttt{sentencesFollow}
+ \item \emph{begin} with the fields specified in \texttt{sentencesBeginWith}
+ \item \emph{end} with the fields specified in \texttt{sentencesEndWith}
+ \end{enumerate}
+ \item by default, the oneSentencePerLine routine will remove line breaks within
+ sentences because \texttt{removeBlockLineBreaks} is set to 1; switch it to 0 if
+ you wish to change this;
+ \item sentences can be text wrapped according to \texttt{textWrapSentences}, and will
+ be done either \texttt{before} or \texttt{after} the main indentation routine
+ (see \cref{subsubsec:ospl:before:after});
+ \item about trailing comments within text wrap blocks:
+ \begin{enumerate}
+ \item multiple trailing comments will be connected at the end of the sentence;
+ \item the number of spaces between the end of the sentence and the (possibly
+ combined) trailing comments is determined by the spaces (if any) at the
+ end of the sentence.
+ \end{enumerate}
+ \end{enumerate}
+
+ We demonstrate this feature using a series of examples.
\yamltitle{manipulateSentences}{0|1}
This is a binary switch that details if \texttt{latexindent.pl} should perform the
sentence manipulation routine; it is \emph{off} (set to \texttt{0}) by default, and you
@@ -5263,16 +5522,17 @@ latexindent.pl multiple-sentences -m -l=keep-sen-line-breaks.yaml
expressions. \index{regular expressions!lowercase alph a-z} \index{regular
expressions!uppercase alph A-Z}
- \begin{cmhtcbraster}[raster columns=3,
+ \begin{cmhtcbraster}[raster columns=2,
raster left skip=-3.5cm,
raster right skip=-2cm,
raster column skip=.06\linewidth]
\cmhlistingsfromfile[style=sentencesFollow]{../defaultSettings.yaml}[MLB-TCB,width=.9\linewidth,before=\centering]{\texttt{sentencesFollow}}{lst:sentencesFollow}
\cmhlistingsfromfile[style=sentencesBeginWith]{../defaultSettings.yaml}[MLB-TCB,width=.9\linewidth,before=\centering]{\texttt{sentencesBeginWith}}{lst:sentencesBeginWith}
- \cmhlistingsfromfile[style=sentencesEndWith]{../defaultSettings.yaml}[MLB-TCB,width=.9\linewidth,before=\centering]{\texttt{sentencesEndWith}}{lst:sentencesEndWith}
\end{cmhtcbraster}
-\subsubsection{sentencesFollow}
+ \cmhlistingsfromfile[style=sentencesEndWith]{../defaultSettings.yaml}[MLB-TCB,width=.9\linewidth,before=\centering]{\texttt{sentencesEndWith}}{lst:sentencesEndWith}
+
+\subsubsection{oneSentencePerLine: sentencesFollow}
Let's explore a few of the switches in \texttt{sentencesFollow}.
\begin{example}
@@ -5331,11 +5591,12 @@ latexindent.pl multiple-sentences1 -m -l=manipulate-sentences.yaml,sentences-fol
accounted for correctly.
\end{example}
-\subsubsection{sentencesBeginWith}
+\subsubsection{oneSentencePerLine: sentencesBeginWith}
By default, \texttt{latexindent.pl} will only assume that sentences begin with the upper
case letters \texttt{A-Z}; you can instruct the script to define sentences to begin with
- lower case letters (see \cref{lst:sentencesBeginWith}), and we can use the \texttt{other}
- field to define sentences to begin with other characters. \index{sentences!begin with}
+ lower case letters (see \cref{lst:sentencesBeginWith}), and we can use the
+ \texttt{other} field to define sentences to begin with other characters.
+ \index{sentences!begin with}
\begin{example}
We use the file in \cref{lst:multiple-sentences2}.
@@ -5364,14 +5625,15 @@ latexindent.pl multiple-sentences2 -m -l=manipulate-sentences.yaml,sentences-beg
\cmhlistingsfromfile{demonstrations/multiple-sentences2-mod2.tex}{\texttt{multiple-sentences2.tex} using \cref{lst:sentences-begin1-yaml}}{lst:multiple-sentences2-mod2}
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/sentences-begin1.yaml}[MLB-TCB,width=.45\textwidth]{\texttt{sentences-begin1.yaml}}{lst:sentences-begin1-yaml}
\end{cmhtcbraster}
- Notice that in \cref{lst:multiple-sentences2-mod1}, the first sentence has been accounted
- for but that the subsequent sentences have not. In \cref{lst:multiple-sentences2-mod2},
- all of the sentences have been accounted for, because the \texttt{other} field in
- \cref{lst:sentences-begin1-yaml} has defined sentences to begin with either \lstinline!$!
- or any numeric digit, \texttt{0} to \texttt{9}.
+ Notice that in \cref{lst:multiple-sentences2-mod1}, the first sentence has been
+ accounted for but that the subsequent sentences have not. In
+ \cref{lst:multiple-sentences2-mod2}, all of the sentences have been accounted for,
+ because the \texttt{other} field in \cref{lst:sentences-begin1-yaml} has defined
+ sentences to begin with either \lstinline!$! or any numeric digit, \texttt{0} to
+ \texttt{9}.
\end{example}
-\subsubsection{sentencesEndWith}
+\subsubsection{oneSentencePerLine: sentencesEndWith}
\begin{example}
Let's return to \vref{lst:multiple-sentences}; we have already seen the default way in
which \texttt{latexindent.pl} will operate on the sentences in this file in
@@ -5427,9 +5689,9 @@ latexindent.pl url -m -l=manipulate-sentences.yaml
\cmhlistingsfromfile{demonstrations/url-mod1.tex}{\texttt{url.tex} using \vref{lst:manipulate-sentences-yaml}}{lst:url-mod1}
- Notice that the full stop within the url has been interpreted correctly. This is because,
- within the \texttt{betterFullStop}, full stops at the end of sentences have the following
- properties:
+ Notice that the full stop within the url has been interpreted correctly. This is
+ because, within the \texttt{betterFullStop}, full stops at the end of sentences have the
+ following properties:
\begin{itemize}
\item they are ignored within \texttt{e.g.} and \texttt{i.e.};
\item they can not be immediately followed by a lower case or upper case letter;
@@ -5510,8 +5772,9 @@ latexindent.pl multiple-sentences4 -m -l=keep-sen-line-breaks.yaml
\begin{example}
Once you've read \cref{sec:poly-switches}, you will know that you can accommodate the
- removal of internal sentence line breaks by using the YAML in \cref{lst:item-rules2-yaml}
- and the command \index{switches!-l demonstration} \index{switches!-m demonstration}
+ removal of internal sentence line breaks by using the YAML in
+ \cref{lst:item-rules2-yaml} and the command \index{switches!-l demonstration}
+ \index{switches!-m demonstration}
\begin{commandshell}
latexindent.pl multiple-sentences4 -m -l=item-rules2.yaml
@@ -5525,7 +5788,7 @@ latexindent.pl multiple-sentences4 -m -l=item-rules2.yaml
\end{cmhtcbraster}
\end{example}
-\subsubsection{Text wrapping and indenting sentences}
+\subsubsection{oneSentencePerLine: text wrapping and indenting sentences}
The \texttt{oneSentencePerLine} \announce{2018-08-13}{oneSentencePerline text wrap and
indent} can be instructed to perform text wrapping and indentation upon sentences.
\index{sentences!text wrapping} \index{sentences!indenting}%
@@ -5590,13 +5853,13 @@ latexindent.pl multiple-sentences6 -m -l=sentence-wrap1.yaml -y="modifyLineBreak
\begin{example}
We can tweak the settings in \vref{lst:sentencesEndWith} to ensure that full stops are
not followed by \texttt{item} commands, and that the end of sentences contains
- \lstinline!\end{itemize}! as in \cref{lst:itemize-yaml} (if you intend to use this,
- ensure that you remove the line breaks from the \texttt{other} field). \index{regular
- expressions!lowercase alph a-z} \index{regular expressions!uppercase alph A-Z}
- \index{regular expressions!numeric 0-9} \index{regular expressions!horizontal space
- \textbackslash{h}}
+ \lstinline!\end{itemize}! as in \cref{lst:itemize-yaml}. This setting is actually an
+ appended version of the \texttt{betterFullStop} from the \texttt{fineTuning}, detailed
+ in \vref{lst:fineTuning}. \index{regular expressions!lowercase alph a-z} \index{regular
+ expressions!uppercase alph A-Z} \index{regular expressions!numeric 0-9} \index{regular
+ expressions!horizontal space \textbackslash{h}}
- \cmhlistingsfromfile[style=yaml-LST]{demonstrations/itemized.yaml}[MLB-TCB]{\texttt{itemize.yaml}}{lst:itemize-yaml}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/itemize.yaml}[enhanced jigsaw,breakable,MLB-TCB]{\texttt{itemize.yaml}}{lst:itemize-yaml}
Upon running \index{switches!-l demonstration} \index{switches!-m demonstration}
@@ -5615,6 +5878,101 @@ latexindent.pl multiple-sentences6 -m -l=sentence-wrap1.yaml,itemize.yaml
Text \announce{2022-04-04}*{oneSentencePerLine text wrapping update} wrapping when using
the \texttt{oneSentencePerLine} routine determines if it will remove line breaks while
text wrapping, from the value of \texttt{removeSentenceLineBreaks}.
+
+\subsubsection{oneSentencePerLine: text wrapping and indenting sentences, when before/after}\label{subsubsec:ospl:before:after}
+ The text wrapping routine operates, by default, \texttt{before} the
+ \announce*{2023-01-01}{text wrap: before/after details} code blocks have been found, but
+ this can be changed to \texttt{after}:
+ \begin{itemize}
+ \item \texttt{before} means it is likely that the columns of wrapped text may \emph{exceed} the
+ value specified in \texttt{columns};
+ \item \texttt{after} means it columns of wrapped text should \emph{not} exceed the value
+ specified in \texttt{columns}.
+ \end{itemize}
+ We demonstrate this in the following examples. See also
+ \cref{subsubsec:tw:before:after}.
+
+ \begin{example}
+ Let's begin with the file in \cref{lst:multiple-sentences8}.
+
+ \cmhlistingsfromfile*{demonstrations/multiple-sentences8.tex}{\texttt{multiple-sentences8.tex}}{lst:multiple-sentences8}
+
+ Using the settings given in \cref{lst:sentence-wrap2} and running the command
+
+ \begin{commandshell}
+latexindent.pl multiple-sentences8 -o=+-mod1.tex -l=sentence-wrap2 -m
+ \end{commandshell}
+
+ gives the output given in \cref{lst:multiple-sentences8-mod1}.
+
+ \begin{cmhtcbraster}[raster columns=2,
+ raster left skip=-1.5cm,
+ raster right skip=-0cm,
+ raster column skip=.06\linewidth]
+ \cmhlistingsfromfile*{demonstrations/multiple-sentences8-mod1.tex}{\texttt{multiple-sentences8-mod1.tex}}{lst:multiple-sentences8-mod1}
+ \cmhlistingsfromfile*[style=yaml-LST]{demonstrations/sentence-wrap2.yaml}[MLB-TCB,width=0.4\linewidth]{\texttt{sentence-wrap2.yaml}}{lst:sentence-wrap2}
+ \end{cmhtcbraster}
+
+ We note that, in \cref{lst:multiple-sentences8-mod1}, that the wrapped text has
+ \emph{exceeded} the specified value of \texttt{columns} (35) given in
+ \cref{lst:sentence-wrap2}. We can affect this by changing \texttt{when}; we explore this
+ next.
+ \end{example}
+
+ \begin{example}
+ We continue working with \cref{lst:multiple-sentences8}.
+
+ Using the settings given in \cref{lst:sentence-wrap3} and running the command
+
+ \begin{commandshell}
+latexindent.pl multiple-sentences8.tex -o=+-mod2.tex -l=sentence-wrap3 -m
+ \end{commandshell}
+
+ gives the output given in \cref{lst:multiple-sentences8-mod2}.
+
+ \begin{cmhtcbraster}[raster columns=2,
+ raster left skip=-1.5cm,
+ raster right skip=-0cm,
+ raster column skip=.06\linewidth]
+ \cmhlistingsfromfile*{demonstrations/multiple-sentences8-mod2.tex}{\texttt{multiple-sentences8-mod2.tex}}{lst:multiple-sentences8-mod2}
+ \cmhlistingsfromfile*[style=yaml-LST]{demonstrations/sentence-wrap3.yaml}[MLB-TCB,width=0.4\linewidth]{\texttt{sentence-wrap3.yaml}}{lst:sentence-wrap3}
+ \end{cmhtcbraster}
+
+ We note that, in \cref{lst:multiple-sentences8-mod2}, that the wrapped text has
+ \emph{obeyed} the specified value of \texttt{columns} (35) given in
+ \cref{lst:sentence-wrap3}.
+ \end{example}
+
+\subsubsection{oneSentencePerLine: text wrapping sentences and comments}\label{subsubsec:ospl:tw:comments}
+ We demonstrate the one sentence per line routine with respect to text wrapping
+ \emph{comments}. See also \cref{subsubsec:tw:comments}. \index{comments!text wrap}
+ \index{text wrap!comments} \index{sentences!comments} \index{sentences!text wrap}
+
+ \begin{example}
+ Let's begin with the file in \cref{lst:multiple-sentences9}.
+
+ \cmhlistingsfromfile*{demonstrations/multiple-sentences9.tex}{\texttt{multiple-sentences9.tex}}{lst:multiple-sentences9}
+
+ Using the settings given in \cref{lst:sentence-wrap4} and running the command
+
+ \begin{commandshell}
+latexindent.pl multiple-sentences9 -o=+-mod1.tex -l=sentence-wrap4 -m
+ \end{commandshell}
+
+ gives the output given in \cref{lst:multiple-sentences9-mod1}.
+
+ \begin{cmhtcbraster}[raster columns=2,
+ raster left skip=-1.5cm,
+ raster right skip=-0cm,
+ raster column skip=.06\linewidth]
+ \cmhlistingsfromfile*{demonstrations/multiple-sentences9-mod1.tex}{\texttt{multiple-sentences9-mod1.tex}}{lst:multiple-sentences9-mod1}
+ \cmhlistingsfromfile*[style=yaml-LST]{demonstrations/sentence-wrap4.yaml}[MLB-TCB,width=0.4\linewidth]{\texttt{sentence-wrap4.yaml}}{lst:sentence-wrap4}
+ \end{cmhtcbraster}
+
+ We note that, in \cref{lst:multiple-sentences9-mod1}, that the sentences have been
+ wrapped, and so too have the comments because of the annotated line in
+ \cref{lst:sentence-wrap4}.
+ \end{example}
% arara: pdflatex: { files: [latexindent]}
\subsection{Poly-switches}\label{sec:poly-switches}
Every other field in the \texttt{modifyLineBreaks} field uses poly-switches, and can take
@@ -5648,17 +6006,17 @@ latexindent.pl multiple-sentences6 -m -l=sentence-wrap1.yaml,itemize.yaml
In the above, \emph{<part of thing>} refers to either the \emph{begin statement},
\emph{body} or \emph{end statement} of the code blocks detailed in
\vref{tab:code-blocks}. All poly-switches are \emph{off} by default;
- \texttt{latexindent.pl} searches first of all for per-name settings, and then followed by
- global per-thing settings.
+ \texttt{latexindent.pl} searches first of all for per-name settings, and then followed
+ by global per-thing settings.
\subsubsection{Poly-switches for environments}\label{sec:modifylinebreaks-environments}
We start by viewing a snippet of \texttt{defaultSettings.yaml} in
\cref{lst:environments-mlb}; note that it contains \emph{global} settings (immediately
- after the \texttt{environments} field) and that \emph{per-name} settings are also allowed
- -- in the case of \cref{lst:environments-mlb}, settings for \texttt{equation*} have been
- specified for demonstration. Note that all poly-switches are \emph{off} (set to 0) by
- default. \index{poly-switches!default values} \index{poly-switches!environment global
- example} \index{poly-switches!environment per-code block example}
+ after the \texttt{environments} field) and that \emph{per-name} settings are also
+ allowed -- in the case of \cref{lst:environments-mlb}, settings for \texttt{equation*}
+ have been specified for demonstration. Note that all poly-switches are \emph{off} (set
+ to 0) by default. \index{poly-switches!default values} \index{poly-switches!environment
+ global example} \index{poly-switches!environment per-code block example}
\cmhlistingsfromfile[style=modifylinebreaksEnv]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,MLB-TCB]{\texttt{environments}}{lst:environments-mlb}
@@ -5676,8 +6034,8 @@ before words(*@$\BeginStartsOnOwnLine$@*) \begin{myenv}(*@$\BodyStartsOnOwnLine$
\paragraph{Adding line breaks: BeginStartsOnOwnLine and BodyStartsOnOwnLine}
\begin{example}
Let's explore \texttt{BeginStartsOnOwnLine} and \texttt{BodyStartsOnOwnLine} in
- \cref{lst:env-mlb1,lst:env-mlb2}, and in particular, let's allow each of them in turn to
- take a value of $1$. \index{modifying linebreaks! at the \emph{beginning} of a code
+ \cref{lst:env-mlb1,lst:env-mlb2}, and in particular, let's allow each of them in turn
+ to take a value of $1$. \index{modifying linebreaks! at the \emph{beginning} of a code
block} \index{poly-switches!adding line breaks: set to 1}
\begin{cmhtcbraster}
@@ -5708,27 +6066,34 @@ latexindent.pl -m env-mlb.tex -l env-mlb2.yaml
There are a couple of points to note:
\begin{itemize}
\item in \cref{lst:env-mlb-mod1} a line break has been added at the point denoted by
- $\BeginStartsOnOwnLine$ in \cref{lst:env-mlb1-tex}; no other line breaks have been
- changed;
+ $\BeginStartsOnOwnLine$ in \cref{lst:env-mlb1-tex}; no other line breaks have
+ been changed;
\item in \cref{lst:env-mlb-mod2} a line break has been added at the point denoted by
- $\BodyStartsOnOwnLine$ in \cref{lst:env-mlb1-tex}; furthermore, note that the \emph{body}
- of \texttt{myenv} has received the appropriate (default) indentation.
+ $\BodyStartsOnOwnLine$ in \cref{lst:env-mlb1-tex}; furthermore, note that the
+ \emph{body} of \texttt{myenv} has received the appropriate (default)
+ indentation.
\end{itemize}
\end{example}
\begin{example}
Let's now change each of the \texttt{1} values in \cref{lst:env-mlb1,lst:env-mlb2} so
that they are $2$ and save them into \texttt{env-mlb3.yaml} and \texttt{env-mlb4.yaml}
- respectively (see \cref{lst:env-mlb3,lst:env-mlb4}). \index{poly-switches!adding comments
- and then line breaks: set to 2}
+ respectively (see \cref{lst:env-mlb3,lst:env-mlb4}). \index{poly-switches!adding
+ comments and then line breaks: set to 2}
\begin{cmhtcbraster}
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/env-mlb3.yaml}[MLB-TCB]{\texttt{env-mlb3.yaml}}{lst:env-mlb3}
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/env-mlb4.yaml}[MLB-TCB]{\texttt{env-mlb4.yaml}}{lst:env-mlb4}
\end{cmhtcbraster}
- Upon running commands analogous to the above, we obtain
- \cref{lst:env-mlb-mod3,lst:env-mlb-mod4}.
+ Upon running the commands
+
+ \begin{commandshell}
+latexindent.pl -m env-mlb.tex -l env-mlb3.yaml
+latexindent.pl -m env-mlb.tex -l env-mlb4.yaml
+\end{commandshell}
+
+ we obtain \cref{lst:env-mlb-mod3,lst:env-mlb-mod4}.
\begin{widepage}
\begin{minipage}{.56\linewidth}
@@ -5740,9 +6105,9 @@ latexindent.pl -m env-mlb.tex -l env-mlb2.yaml
\end{minipage}
\end{widepage}
- Note that line breaks have been added as in \cref{lst:env-mlb-mod1,lst:env-mlb-mod2}, but
- this time a comment symbol has been added before adding the line break; in both cases,
- trailing horizontal space has been stripped before doing so.
+ Note that line breaks have been added as in \cref{lst:env-mlb-mod1,lst:env-mlb-mod2},
+ but this time a comment symbol has been added before adding the line break; in both
+ cases, trailing horizontal space has been stripped before doing so.
\end{example}
\begin{example}
@@ -5756,8 +6121,14 @@ latexindent.pl -m env-mlb.tex -l env-mlb2.yaml
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/env-mlb6.yaml}[MLB-TCB]{\texttt{env-mlb6.yaml}}{lst:env-mlb6}
\end{cmhtcbraster}
- Upon running commands analogous to the above, we obtain
- \cref{lst:env-mlb-mod5,lst:env-mlb-mod6}.
+ Upon running the commands
+
+ \begin{commandshell}
+latexindent.pl -m env-mlb.tex -l env-mlb5.yaml
+latexindent.pl -m env-mlb.tex -l env-mlb6.yaml
+\end{commandshell}
+
+ we obtain \cref{lst:env-mlb-mod5,lst:env-mlb-mod6}.
\begin{widepage}
\begin{minipage}{.56\linewidth}
@@ -5769,8 +6140,8 @@ latexindent.pl -m env-mlb.tex -l env-mlb2.yaml
\end{minipage}
\end{widepage}
- Note that line breaks have been added as in \cref{lst:env-mlb-mod1,lst:env-mlb-mod2}, but
- this time a \emph{blank line} has been added after adding the line break.
+ Note that line breaks have been added as in \cref{lst:env-mlb-mod1,lst:env-mlb-mod2},
+ but this time a \emph{blank line} has been added after adding the line break.
\end{example}
\begin{example}
@@ -5778,8 +6149,7 @@ latexindent.pl -m env-mlb.tex -l env-mlb2.yaml
that they are $4$ and save them into \texttt{env-beg4.yaml} and \texttt{env-body4.yaml}
respectively (see \cref{lst:env-beg4,lst:env-body4}). \index{poly-switches!adding blank
lines (again"!): set to 4} \announce{2019-07-13}{demonstration of new blank line
- poly-switch}
- %
+ poly-switch} %
\begin{cmhtcbraster}
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/env-beg4.yaml}[MLB-TCB]{\texttt{env-beg4.yaml}}{lst:env-beg4}
@@ -5807,18 +6177,19 @@ latexindent.pl -m env-mlb.1tex -l env-body4.yaml
We note in particular that, by design, for this value of the poly-switches:
\begin{enumerate}
- \item in \cref{lst:env-mlb1-beg4} a blank line has been inserted before the \lstinline!\begin!
- statement, even though the \lstinline!\begin! statement was already on its own line;
- \item in \cref{lst:env-mlb1-body4} a blank line has been inserted before the beginning of the
- \emph{body}, even though it already began on its own line.
+ \item in \cref{lst:env-mlb1-beg4} a blank line has been inserted before the
+ \lstinline!\begin! statement, even though the \lstinline!\begin! statement was
+ already on its own line;
+ \item in \cref{lst:env-mlb1-body4} a blank line has been inserted before the beginning
+ of the \emph{body}, even though it already began on its own line.
\end{enumerate}
\end{example}
\paragraph{Adding line breaks: EndStartsOnOwnLine and EndFinishesWithLineBreak}
\begin{example}
Let's explore \texttt{EndStartsOnOwnLine} and \texttt{EndFinishesWithLineBreak} in
- \cref{lst:env-mlb7,lst:env-mlb8}, and in particular, let's allow each of them in turn to
- take a value of $1$. \index{modifying linebreaks! at the \emph{end} of a code block}
+ \cref{lst:env-mlb7,lst:env-mlb8}, and in particular, let's allow each of them in turn
+ to take a value of $1$. \index{modifying linebreaks! at the \emph{end} of a code block}
\index{poly-switches!adding line breaks: set to 1}
\begin{cmhtcbraster}
@@ -5847,9 +6218,9 @@ latexindent.pl -m env-mlb.tex -l env-mlb8.yaml
There are a couple of points to note:
\begin{itemize}
\item in \cref{lst:env-mlb-mod7} a line break has been added at the point denoted by
- $\EndStartsOnOwnLine$ in \vref{lst:env-mlb1-tex}; no other line breaks have been changed
- and the \lstinline!\end{myenv}! statement has \emph{not} received indentation (as
- intended);
+ $\EndStartsOnOwnLine$ in \vref{lst:env-mlb1-tex}; no other line breaks have been
+ changed and the \lstinline!\end{myenv}! statement has \emph{not} received
+ indentation (as intended);
\item in \cref{lst:env-mlb-mod8} a line break has been added at the point denoted by
$\EndFinishesWithLineBreak$ in \vref{lst:env-mlb1-tex}.
\end{itemize}
@@ -5866,8 +6237,14 @@ latexindent.pl -m env-mlb.tex -l env-mlb8.yaml
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/env-mlb10.yaml}[MLB-TCB]{\texttt{env-mlb10.yaml}}{lst:env-mlb10}
\end{cmhtcbraster}
- Upon running commands analogous to the above, we obtain
- \cref{lst:env-mlb-mod9,lst:env-mlb-mod10}.
+ Upon running the commands
+
+ \begin{commandshell}
+latexindent.pl -m env-mlb.tex -l env-mlb9.yaml
+latexindent.pl -m env-mlb.tex -l env-mlb10.yaml
+\end{commandshell}
+
+ we obtain \cref{lst:env-mlb-mod9,lst:env-mlb-mod10}.
\begin{widepage}
\begin{minipage}{.43\linewidth}
@@ -5879,24 +6256,31 @@ latexindent.pl -m env-mlb.tex -l env-mlb8.yaml
\end{minipage}
\end{widepage}
- Note that line breaks have been added as in \cref{lst:env-mlb-mod7,lst:env-mlb-mod8}, but
- this time a comment symbol has been added before adding the line break; in both cases,
- trailing horizontal space has been stripped before doing so.
+ Note that line breaks have been added as in \cref{lst:env-mlb-mod7,lst:env-mlb-mod8},
+ but this time a comment symbol has been added before adding the line break; in both
+ cases, trailing horizontal space has been stripped before doing so.
\end{example}
\begin{example}
Let's now change each of the \texttt{1} values in \cref{lst:env-mlb7,lst:env-mlb8} so
- that they are $3$ and save them into \texttt{env-mlb11.yaml} and \texttt{env-mlb12.yaml}
- respectively (see \cref{lst:env-mlb11,lst:env-mlb12}). \index{poly-switches!adding blank
- lines: set to 3}\announce{2017-08-21}{demonstration of blank line poly-switch (3)}%
+ that they are $3$ and save them into \texttt{env-mlb11.yaml} and
+ \texttt{env-mlb12.yaml} respectively (see \cref{lst:env-mlb11,lst:env-mlb12}).
+ \index{poly-switches!adding blank lines: set to 3}\announce{2017-08-21}{demonstration
+ of blank line poly-switch (3)}%
\begin{cmhtcbraster}
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/env-mlb11.yaml}[MLB-TCB]{\texttt{env-mlb11.yaml}}{lst:env-mlb11}
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/env-mlb12.yaml}[MLB-TCB]{\texttt{env-mlb12.yaml}}{lst:env-mlb12}
\end{cmhtcbraster}
- Upon running commands analogous to the above, we obtain
- \cref{lst:env-mlb-mod11,lst:env-mlb-mod12}.
+ Upon running the commands
+
+ \begin{commandshell}
+latexindent.pl -m env-mlb.tex -l env-mlb11.yaml
+latexindent.pl -m env-mlb.tex -l env-mlb12.yaml
+\end{commandshell}
+
+ we obtain \cref{lst:env-mlb-mod11,lst:env-mlb-mod12}.
\begin{widepage}
\begin{minipage}{.42\linewidth}
@@ -5908,14 +6292,14 @@ latexindent.pl -m env-mlb.tex -l env-mlb8.yaml
\end{minipage}
\end{widepage}
- Note that line breaks have been added as in \cref{lst:env-mlb-mod7,lst:env-mlb-mod8}, and
- that a \emph{blank line} has been added after the line break.
+ Note that line breaks have been added as in \cref{lst:env-mlb-mod7,lst:env-mlb-mod8},
+ and that a \emph{blank line} has been added after the line break.
\end{example}
\begin{example}
Let's now change each of the \texttt{1} values in \cref{lst:env-mlb11,lst:env-mlb12} so
- that they are $4$ and save them into \texttt{env-end4.yaml} and \texttt{env-end-f4.yaml}
- respectively (see \cref{lst:env-end4,lst:env-end-f4}).
+ that they are $4$ and save them into \texttt{env-end4.yaml} and
+ \texttt{env-end-f4.yaml} respectively (see \cref{lst:env-end4,lst:env-end-f4}).
\announce{2019-07-13}{demonstration of new blank line poly-switch}
\index{poly-switches!adding blank lines (again"!): set to 4}%
@@ -5924,7 +6308,8 @@ latexindent.pl -m env-mlb.tex -l env-mlb8.yaml
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/env-end-f4.yaml}[MLB-TCB]{\texttt{env-end-f4.yaml}}{lst:env-end-f4}
\end{cmhtcbraster}
- We will demonstrate this poly-switch value using the code from \vref{lst:env-mlb1-text}.
+ We will demonstrate this poly-switch value using the code from
+ \vref{lst:env-mlb1-text}.
Upon running the commands \index{switches!-l demonstration} \index{switches!-m
demonstration}
@@ -5943,20 +6328,21 @@ latexindent.pl -m env-mlb.1tex -l env-end-f4.yaml
We note in particular that, by design, for this value of the poly-switches:
\begin{enumerate}
- \item in \cref{lst:env-mlb1-end4} a blank line has been inserted before the \lstinline!\end!
- statement, even though the \lstinline!\end! statement was already on its own line;
- \item in \cref{lst:env-mlb1-end-f4} a blank line has been inserted after the \lstinline!\end!
- statement, even though it already began on its own line.
+ \item in \cref{lst:env-mlb1-end4} a blank line has been inserted before the
+ \lstinline!\end! statement, even though the \lstinline!\end! statement was
+ already on its own line;
+ \item in \cref{lst:env-mlb1-end-f4} a blank line has been inserted after the
+ \lstinline!\end! statement, even though it already began on its own line.
\end{enumerate}
\end{example}
\paragraph{poly-switches 1, 2, and 3 only add line breaks when necessary}
- If you ask \texttt{latexindent.pl} to add a line break (possibly with a comment) using a
- poly-switch value of $1$ (or $2$ or $3$), it will only do so if necessary.
+ If you ask \texttt{latexindent.pl} to add a line break (possibly with a comment) using
+ a poly-switch value of $1$ (or $2$ or $3$), it will only do so if necessary.
\begin{example}
- For example, if you process the file in \vref{lst:mlb2} using poly-switch values of 1, 2,
- or 3, it will be left unchanged.
+ For example, if you process the file in \vref{lst:mlb2} using poly-switch values of 1,
+ 2, or 3, it will be left unchanged.
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/env-mlb2.tex}{\texttt{env-mlb2.tex}}{lst:mlb2}
@@ -5971,13 +6357,14 @@ latexindent.pl -m env-mlb.1tex -l env-end-f4.yaml
\begin{example}
In contrast, the output from processing the file in \cref{lst:mlb3} will vary depending
- on the poly-switches used; in \cref{lst:env-mlb3-mod2} you'll see that the comment symbol
- after the \lstinline!\begin{myenv}! has been moved to the next line, as
- \texttt{BodyStartsOnOwnLine} is set to \texttt{1}. In \cref{lst:env-mlb3-mod4} you'll see
- that the comment has been accounted for correctly because \texttt{BodyStartsOnOwnLine}
- has been set to \texttt{2}, and the comment symbol has \emph{not} been moved to its own
- line. You're encouraged to experiment with \cref{lst:mlb3} and by setting the other
- poly-switches considered so far to \texttt{2} in turn.
+ on the poly-switches used; in \cref{lst:env-mlb3-mod2} you'll see that the comment
+ symbol after the \lstinline!\begin{myenv}! has been moved to the next line, as
+ \texttt{BodyStartsOnOwnLine} is set to \texttt{1}. In \cref{lst:env-mlb3-mod4} you'll
+ see that the comment has been accounted for correctly because
+ \texttt{BodyStartsOnOwnLine} has been set to \texttt{2}, and the comment symbol has
+ \emph{not} been moved to its own line. You're encouraged to experiment with
+ \cref{lst:mlb3} and by setting the other poly-switches considered so far to \texttt{2}
+ in turn.
\begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/env-mlb3-mod2.tex}{\texttt{env-mlb3.tex} using \vref{lst:env-mlb2}}{lst:env-mlb3-mod2}
@@ -5985,15 +6372,15 @@ latexindent.pl -m env-mlb.1tex -l env-end-f4.yaml
\end{cmhtcbraster}
\end{example}
- The details of the discussion in this section have concerned \emph{global} poly-switches
- in the \texttt{environments} field; each switch can also be specified on a
- \emph{per-name} basis, which would take priority over the global values; with reference
- to \vref{lst:environments-mlb}, an example is shown for the \texttt{equation*}
- environment.
+ The details of the discussion in this section have concerned \emph{global}
+ poly-switches in the \texttt{environments} field; each switch can also be specified on
+ a \emph{per-name} basis, which would take priority over the global values; with
+ reference to \vref{lst:environments-mlb}, an example is shown for the
+ \texttt{equation*} environment.
\paragraph{Removing line breaks (poly-switches set to $-1$)}
- Setting poly-switches to $-1$ tells \texttt{latexindent.pl} to remove line breaks of the
- \emph{<part of the thing>}, if necessary.
+ Setting poly-switches to $-1$ tells \texttt{latexindent.pl} to remove line breaks of
+ the \emph{<part of the thing>}, if necessary.
\begin{example}
We will consider the example code given in \cref{lst:mlb4}, noting in particular the
@@ -6057,8 +6444,8 @@ latexindent.pl -m env-mlb4.tex -l env-mlb16.yaml
\end{itemize}
We examined each of these cases separately for clarity of explanation, but you can
combine all of the YAML settings in \crefrange{lst:env-mlb13}{lst:env-mlb16} into one
- file; alternatively, you could tell \texttt{latexindent.pl} to load them all by using the
- following command, for example \index{switches!-l demonstration} \index{switches!-m
+ file; alternatively, you could tell \texttt{latexindent.pl} to load them all by using
+ the following command, for example \index{switches!-l demonstration} \index{switches!-m
demonstration}
\begin{widepage}
@@ -6072,8 +6459,8 @@ latexindent.pl -m env-mlb4.tex -l env-mlb13.yaml,env-mlb14.yaml,env-mlb15.yaml,e
\paragraph{About trailing horizontal space}
Recall that on \cpageref{yaml:removeTrailingWhitespace} we discussed the YAML field
- \texttt{removeTrailingWhitespace}, and that it has two (binary) switches to determine if
- horizontal space should be removed \texttt{beforeProcessing} and
+ \texttt{removeTrailingWhitespace}, and that it has two (binary) switches to determine
+ if horizontal space should be removed \texttt{beforeProcessing} and
\texttt{afterProcessing}. The \texttt{beforeProcessing} is particularly relevant when
considering the \texttt{-m} switch.
@@ -6096,13 +6483,13 @@ after words
\begin{widepage}
\begin{commandshell}
-latexindent.pl -m env-mlb5.tex -l env-mlb13.yaml,env-mlb14.yaml,env-mlb15.yaml,env-mlb16.yaml
-latexindent.pl -m env-mlb5.tex -l env-mlb13.yaml,env-mlb14.yaml,env-mlb15.yaml,env-mlb16.yaml,removeTWS-before.yaml
+latexindent.pl -m env-mlb5.tex -l env-mlb13,env-mlb14,env-mlb15,env-mlb16
+latexindent.pl -m env-mlb5.tex -l env-mlb13,env-mlb14,env-mlb15,env-mlb16,removeTWS-before
\end{commandshell}
\end{widepage}
- is shown, respectively, in \cref{lst:env-mlb5-modAll,lst:env-mlb5-modAll-remove-WS}; note
- that the trailing horizontal white space has been preserved (by default) in
+ is shown, respectively, in \cref{lst:env-mlb5-modAll,lst:env-mlb5-modAll-remove-WS};
+ note that the trailing horizontal white space has been preserved (by default) in
\cref{lst:env-mlb5-modAll}, while in \cref{lst:env-mlb5-modAll-remove-WS}, it has been
removed using the switch specified in \cref{lst:removeTWS-before}.
@@ -6136,20 +6523,20 @@ after words
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/UnpreserveBlankLines.yaml}[MLB-TCB]{\texttt{UnpreserveBlankLines.yaml}}{lst:UnpreserveBlankLines}
\end{cmhtcbraster}
- Upon running the following commands \index{switches!-l demonstration} \index{switches!-m
- demonstration}
+ Upon running the following commands \index{switches!-l demonstration}
+ \index{switches!-m demonstration}
\begin{widepage}
\begin{commandshell}
-latexindent.pl -m env-mlb6.tex -l env-mlb13.yaml,env-mlb14.yaml,env-mlb15.yaml,env-mlb16.yaml
-latexindent.pl -m env-mlb6.tex -l env-mlb13.yaml,env-mlb14.yaml,env-mlb15.yaml,env-mlb16.yaml,UnpreserveBlankLines.yaml
+latexindent.pl -m env-mlb6.tex -l env-mlb13,env-mlb14,env-mlb15,env-mlb16
+latexindent.pl -m env-mlb6.tex -l env-mlb13,env-mlb14,env-mlb15,env-mlb16,UnpreserveBlankLines
\end{commandshell}
\end{widepage}
we receive the respective outputs in
\cref{lst:env-mlb6-modAll,lst:env-mlb6-modAll-un-Preserve-Blank-Lines}. In
- \cref{lst:env-mlb6-modAll} we see that the multiple blank lines have each been condensed
- into one blank line, but that blank lines have \emph{not} been removed by the
+ \cref{lst:env-mlb6-modAll} we see that the multiple blank lines have each been
+ condensed into one blank line, but that blank lines have \emph{not} been removed by the
poly-switches -- this is because, by default, \texttt{preserveBlankLines} is set to
\texttt{1}. By contrast, in \cref{lst:env-mlb6-modAll-un-Preserve-Blank-Lines}, we have
allowed the poly-switches to remove blank lines because, in
@@ -6167,17 +6554,17 @@ latexindent.pl -m env-mlb6.tex -l env-mlb13.yaml,env-mlb14.yaml,env-mlb15.yaml,e
\end{example}
\begin{example}
- We can explore this further using the blank-line poly-switch value of $3$; let's use the
- file given in \cref{lst:env-mlb7-tex}.
+ We can explore this further using the blank-line poly-switch value of $3$; let's use
+ the file given in \cref{lst:env-mlb7-tex}.
\cmhlistingsfromfile{demonstrations/env-mlb7.tex}{\texttt{env-mlb7.tex}}{lst:env-mlb7-tex}
- Upon running the following commands \index{switches!-l demonstration} \index{switches!-m
- demonstration}
+ Upon running the following commands \index{switches!-l demonstration}
+ \index{switches!-m demonstration}
\begin{commandshell}
latexindent.pl -m env-mlb7.tex -l env-mlb12.yaml,env-mlb13.yaml
-latexindent.pl -m env-mlb7.tex -l env-mlb13.yaml,env-mlb14.yaml,UnpreserveBlankLines.yaml
+latexindent.pl -m env-mlb7.tex -l env-mlb13,env-mlb14,UnpreserveBlankLines
\end{commandshell}
we receive the outputs given in \cref{lst:env-mlb7-preserve,lst:env-mlb7-no-preserve}.
@@ -6197,16 +6584,17 @@ latexindent.pl -m env-mlb7.tex -l env-mlb13.yaml,env-mlb14.yaml,UnpreserveBlankL
\end{itemize}
\end{example}
-\subsubsection{Poly-switches for double back slash}\label{subsec:dbs}
+\subsubsection{Poly-switches for double backslash}\label{subsec:dbs}
With reference to \texttt{lookForAlignDelims} (see \vref{lst:aligndelims:basic})
- \announce{2019-07-13}{poly-switch for double back slash} you can specify poly-switches to
- dictate the line-break behaviour of double back slashes in environments
+ \announce{2019-07-13}{poly-switch for double backslash} you can specify poly-switches to
+ dictate the line-break behaviour of double backslashes in environments
(\vref{lst:tabularafter:basic}), commands (\vref{lst:matrixafter}), or special code
- blocks (\vref{lst:specialafter}). Note that for these poly-switches to take effect, the
- name of the code block must necessarily be specified within \texttt{lookForAlignDelims}
- (\vref{lst:aligndelims:basic}); we will demonstrate this in what follows.
- \index{delimiters!poly-switches for double back slash} \index{modifying linebreaks!
- surrounding double back slash} \index{poly-switches!for double back slash (delimiters)}%
+ blocks (\vref{lst:specialafter}). \footnote{There is no longer any need for the code
+ block to be specified within \texttt{lookForAlignDelims} for DBS poly-switches to
+ activate. \announce*{2023-01-01}*{DBS poly-switches no need to specify
+ lookForAlignDelims}} \index{delimiters!poly-switches for double backslash}
+ \index{modifying linebreaks! surrounding double backslash} \index{poly-switches!for
+ double back slash (delimiters)}%
Consider the code given in \cref{lst:dbs-demo}.
\begin{cmhlistings}[style=tcblatex,escapeinside={(*@}{@*)}]{\texttt{tabular3.tex}}{lst:dbs-demo}
@@ -6216,21 +6604,22 @@ latexindent.pl -m env-mlb7.tex -l env-mlb13.yaml,env-mlb14.yaml,UnpreserveBlankL
\end{cmhlistings}
Referencing \cref{lst:dbs-demo}:
\begin{itemize}
- \item \texttt{DBS} stands for \emph{double back slash};
- \item line breaks ahead of the double back slash are annotated by $\ElseStartsOnOwnLine$, and
- are controlled by \texttt{DBSStartsOnOwnLine};
- \item line breaks after the double back slash are annotated by $\ElseFinishesWithLineBreak$,
- and are controlled by \texttt{DBSFinishesWithLineBreak}.
+ \item \texttt{DBS} stands for \emph{double backslash};
+ \item line breaks ahead of the double backslash are annotated by
+ $\ElseStartsOnOwnLine$, and are controlled by \texttt{DBSStartsOnOwnLine};
+ \item line breaks after the double backslash are annotated by
+ $\ElseFinishesWithLineBreak$, and are controlled by
+ \texttt{DBSFinishesWithLineBreak}.
\end{itemize}
Let's explore each of these in turn.
- \paragraph{Double back slash starts on own line}
+ \paragraph{Double backslash starts on own line}
\begin{example}
We explore \texttt{DBSStartsOnOwnLine} ($\ElseStartsOnOwnLine$ in \cref{lst:dbs-demo});
starting with the code in \cref{lst:dbs-demo}, together with the YAML files given in
- \cref{lst:DBS1} and \cref{lst:DBS2} and running the following commands \index{switches!-l
- demonstration} \index{switches!-m demonstration}
+ \cref{lst:DBS1} and \cref{lst:DBS2} and running the following commands
+ \index{switches!-l demonstration} \index{switches!-m demonstration}
\begin{commandshell}
latexindent.pl -m tabular3.tex -l DBS1.yaml
@@ -6255,22 +6644,22 @@ latexindent.pl -m tabular3.tex -l DBS2.yaml
\item \cref{lst:DBS1} specifies \texttt{DBSStartsOnOwnLine} for
\emph{every} environment (that is within \texttt{lookForAlignDelims},
\vref{lst:aligndelims:advanced});
- the double back slashes from \cref{lst:dbs-demo} have been moved to their own line in
+ the double backslashes from \cref{lst:dbs-demo} have been moved to their own line in
\cref{lst:tabular3-DBS1};
\item \cref{lst:DBS2} specifies \texttt{DBSStartsOnOwnLine} on a
\emph{per-name} basis for \texttt{tabular} (that is within \texttt{lookForAlignDelims},
\vref{lst:aligndelims:advanced});
- the double back slashes from \cref{lst:dbs-demo} have been moved to their own line in
+ the double backslashes from \cref{lst:dbs-demo} have been moved to their own line in
\cref{lst:tabular3-DBS2}, having added comment symbols before moving them.
\end{itemize}
\end{example}
- \paragraph{Double back slash finishes with line break}
+ \paragraph{Double backslash finishes with line break}
\begin{example}
Let's now explore \texttt{DBSFinishesWithLineBreak} ($\ElseFinishesWithLineBreak$ in
\cref{lst:dbs-demo}); starting with the code in \cref{lst:dbs-demo}, together with the
YAML files given in \cref{lst:DBS3} and \cref{lst:DBS4} and running the following
- commands \index{poly-switches!for double back slash (delimiters)} \index{switches!-l
+ commands \index{poly-switches!for double backslash (delimiters)} \index{switches!-l
demonstration} \index{switches!-m demonstration}
\begin{commandshell}
@@ -6296,25 +6685,25 @@ latexindent.pl -m tabular3.tex -l DBS4.yaml
\item \cref{lst:DBS3} specifies \texttt{DBSFinishesWithLineBreak} for
\emph{every} environment (that is within \texttt{lookForAlignDelims},
\vref{lst:aligndelims:advanced});
- the code following the double back slashes from \cref{lst:dbs-demo} has been moved to
+ the code following the double backslashes from \cref{lst:dbs-demo} has been moved to
their own line in \cref{lst:tabular3-DBS3};
\item \cref{lst:DBS4} specifies \texttt{DBSFinishesWithLineBreak} on a
\emph{per-name} basis for \texttt{tabular} (that is within \texttt{lookForAlignDelims},
\vref{lst:aligndelims:advanced});
- the first double back slashes from \cref{lst:dbs-demo} have moved code following them to
+ the first double backslashes from \cref{lst:dbs-demo} have moved code following them to
their own line in \cref{lst:tabular3-DBS4}, having added comment symbols before moving
- them; the final double back slashes have \emph{not} added a line break as they are at the
+ them; the final double backslashes have \emph{not} added a line break as they are at the
end of the body within the code block.
\end{itemize}
\end{example}
- \paragraph{Double back slash poly-switches for specialBeginEnd}
+ \paragraph{Double backslash poly-switches for specialBeginEnd}
\begin{example}
- Let's explore the double back slash poly-switches for code blocks within
- \texttt{specialBeginEnd} code blocks (\vref{lst:specialBeginEnd}); we begin with the code
- within \cref{lst:special4}. \index{specialBeginEnd!double backslash poly-switch
+ Let's explore the double backslash poly-switches for code blocks within
+ \texttt{specialBeginEnd} code blocks (\vref{lst:specialBeginEnd}); we begin with the
+ code within \cref{lst:special4}. \index{specialBeginEnd!double backslash poly-switch
demonstration} \index{poly-switches!double backslash} \index{poly-switches!for double
- back slash (delimiters)} \index{specialBeginEnd!lookForAlignDelims} \index{delimiters}
+ backslash (delimiters)} \index{specialBeginEnd!lookForAlignDelims} \index{delimiters}
\index{linebreaks!summary of poly-switches}
\cmhlistingsfromfile{demonstrations/special4.tex}{\texttt{special4.tex}}{lst:special4}
@@ -6339,22 +6728,23 @@ latexindent.pl -m special4.tex -l DBS5.yaml
There are a few things to note:
\begin{itemize}
- \item in \cref{lst:DBS5} we have specified \texttt{cmhMath} within \texttt{lookForAlignDelims};
- without this, the double back slash poly-switches would be ignored for this code block;
+ \item in \cref{lst:DBS5} we have specified \texttt{cmhMath} within
+ \texttt{lookForAlignDelims}; without this, the double backslash poly-switches
+ would be ignored for this code block;
\item the \texttt{DBSFinishesWithLineBreak} poly-switch has controlled the line breaks
- following the double back slashes;
- \item the \texttt{SpecialEndStartsOnOwnLine} poly-switch has controlled the addition of a
- comment symbol, followed by a line break, as it is set to a value of 2.
+ following the double backslashes;
+ \item the \texttt{SpecialEndStartsOnOwnLine} poly-switch has controlled the addition
+ of a comment symbol, followed by a line break, as it is set to a value of 2.
\end{itemize}
\end{example}
- \paragraph{Double back slash poly-switches for optional and mandatory arguments}
- For clarity, we provide a demonstration of controlling the double back slash
+ \paragraph{Double backslash poly-switches for optional and mandatory arguments}
+ For clarity, we provide a demonstration of controlling the double backslash
poly-switches for optional and mandatory arguments.
\begin{example}
- We use with the code in \cref{lst:mycommand2}. \index{poly-switches!for double back slash
- (delimiters)}
+ We use with the code in \cref{lst:mycommand2}. \index{poly-switches!for double
+ backslash (delimiters)}
\cmhlistingsfromfile{demonstrations/mycommand2.tex}{\texttt{mycommand2.tex}}{lst:mycommand2}
@@ -6385,10 +6775,10 @@ latexindent.pl -m mycommand2.tex -l DBS7.yaml
\end{cmhtcbraster}
\end{example}
- \paragraph{Double back slash optional square brackets}
- The pattern matching for the double back slash will also, optionally, allow trailing
+ \paragraph{Double backslash optional square brackets}
+ The pattern matching for the double backslash will also, optionally, allow trailing
square brackets that contain a measurement of vertical spacing, for example
- \lstinline!\\[3pt]!. \index{poly-switches!for double back slash (delimiters)}
+ \lstinline!\\[3pt]!. \index{poly-switches!for double backslash (delimiters)}
\begin{example}
For example, beginning with the code in \cref{lst:pmatrix3}
@@ -6407,7 +6797,7 @@ latexindent.pl -m pmatrix3.tex -l DBS3.yaml
\cmhlistingsfromfile{demonstrations/pmatrix3-mod3.tex}{\texttt{pmatrix3.tex} using \cref{lst:DBS3}}{lst:pmatrix3-DBS3}
\end{example}
- You can customise the pattern for the double back slash by exploring the \emph{fine
+ You can customise the pattern for the double backslash by exploring the \emph{fine
tuning} field detailed in \vref{lst:fineTuning}.
\subsubsection{Poly-switches for other code blocks}
@@ -6530,8 +6920,14 @@ latexindent.pl -m -l=mycom-mlb1.yaml mycommand1.tex
\begin{example}
Now let's change the YAML file so that it is as in \cref{lst:mycom-mlb2}; upon running
- the analogous command to that given above, we obtain \cref{lst:mycommand1-mlb2}; both
- beginning braces \lstinline!{! have had their leading line breaks removed.
+ the command
+
+ \begin{commandshell}
+latexindent.pl -m -l=mycom-mlb2.yaml mycommand1.tex
+\end{commandshell}
+
+ we obtain \cref{lst:mycommand1-mlb2}; both beginning braces \lstinline!{! have had their
+ leading line breaks removed.
\begin{cmhtcbraster}[
raster force size=false,
@@ -6544,7 +6940,13 @@ latexindent.pl -m -l=mycom-mlb1.yaml mycommand1.tex
\begin{example}
Now let's change the YAML file so that it is as in \cref{lst:mycom-mlb3}; upon running
- the analogous command to that given above, we obtain \cref{lst:mycommand1-mlb3}.
+ the command
+
+ \begin{commandshell}
+latexindent.pl -m -l=mycom-mlb3.yaml mycommand1.tex
+\end{commandshell}
+
+ we obtain \cref{lst:mycommand1-mlb3}.
\begin{cmhtcbraster}[
raster force size=false,
@@ -6560,8 +6962,8 @@ latexindent.pl -m -l=mycom-mlb1.yaml mycommand1.tex
\begin{example}
We use the example from \vref{lst:mycommand1}, and consider the YAML settings given in
- \cref{lst:mycom-mlb4}. The output from running \index{poly-switches!conflicting switches}
- \index{switches!-l demonstration} \index{switches!-m demonstration}
+ \cref{lst:mycom-mlb4}. The output from running \index{poly-switches!conflicting
+ switches} \index{switches!-l demonstration} \index{switches!-m demonstration}
\begin{commandshell}
latexindent.pl -m -l=mycom-mlb4.yaml mycommand1.tex
@@ -6577,10 +6979,10 @@ latexindent.pl -m -l=mycom-mlb4.yaml mycommand1.tex
Studying \cref{lst:mycom-mlb4}, we see that the two poly-switches are at opposition with
one another:
\begin{itemize}
- \item on the one hand, \texttt{LCuBStartsOnOwnLine} should \emph{not} start on its own line (as
- poly-switch is set to $-1$);
- \item on the other hand, \texttt{RCuBFinishesWithLineBreak} \emph{should} finish with a line
- break.
+ \item on the one hand, \texttt{LCuBStartsOnOwnLine} should \emph{not} start on its own
+ line (as poly-switch is set to $-1$);
+ \item on the other hand, \texttt{RCuBFinishesWithLineBreak} \emph{should} finish with a
+ line break.
\end{itemize}
So, which should win the conflict? As demonstrated in \cref{lst:mycommand1-mlb4}, it is
clear that \texttt{LCuBStartsOnOwnLine} won this conflict, and the reason is that
@@ -6599,36 +7001,45 @@ latexindent.pl -m -l=mycom-mlb5.yaml mycommand1.tex
we obtain the output given in \cref{lst:mycommand1-mlb5}.
- \begin{cmhtcbraster}[raster column skip=.1\linewidth]
+ \begin{cmhtcbraster}[raster column skip=.05\linewidth]
\cmhlistingsfromfile{demonstrations/mycommand1-mlb5.tex}{\texttt{mycommand1.tex} using \cref{lst:mycom-mlb5}}{lst:mycommand1-mlb5}
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/mycom-mlb5.yaml}[MLB-TCB,width=\linewidth]{\texttt{mycom-mlb5.yaml}}{lst:mycom-mlb5}
\end{cmhtcbraster}
As previously, the most-recently-processed code block takes priority -- as before, the
- second (i.e, \emph{last}) argument. Exploring this further, we consider the YAML settings
- in \cref{lst:mycom-mlb6}, which give associated output in \cref{lst:mycommand1-mlb6}.
+ second (i.e, \emph{last}) argument.
- \begin{cmhtcbraster}[raster column skip=.1\linewidth]
+ Exploring this further, we consider the YAML settings in \cref{lst:mycom-mlb6}, and run
+ the command
+
+ \begin{commandshell}
+latexindent.pl -m -l=mycom-mlb6.yaml mycommand1.tex
+\end{commandshell}
+
+ which gives the output in \cref{lst:mycommand1-mlb6}.
+
+ \begin{cmhtcbraster}[raster column skip=.05\linewidth]
\cmhlistingsfromfile{demonstrations/mycommand1-mlb6.tex}{\texttt{mycommand1.tex} using \cref{lst:mycom-mlb6}}{lst:mycommand1-mlb6}
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/mycom-mlb6.yaml}[MLB-TCB,width=\linewidth]{\texttt{mycom-mlb6.yaml}}{lst:mycom-mlb6}
\end{cmhtcbraster}
- Note that a \lstinline!%! \emph{has} been added to the trailing first \lstinline!}!; this
- is because:
+ Note that a \lstinline!%! \emph{has} been added to the trailing first \lstinline!}!;
+ this is because:
\begin{itemize}
- \item while processing the \emph{first} argument, the trailing line break has been removed
- (\texttt{RCuBFinishesWithLineBreak} set to $-1$);
- \item while processing the \emph{second} argument, \texttt{latexindent.pl} finds that it does
- \emph{not} begin on its own line, and so because \texttt{LCuBStartsOnOwnLine} is set to
- $2$, it adds a comment, followed by a line break.
+ \item while processing the \emph{first} argument, the trailing line break has been
+ removed (\texttt{RCuBFinishesWithLineBreak} set to $-1$);
+ \item while processing the \emph{second} argument, \texttt{latexindent.pl} finds that
+ it does \emph{not} begin on its own line, and so because
+ \texttt{LCuBStartsOnOwnLine} is set to $2$, it adds a comment, followed by a line
+ break.
\end{itemize}
\end{example}
\subsubsection{Conflicting poly-switches: nested code blocks}
\begin{example}
Now let's consider an example when nested code blocks have conflicting poly-switches;
- we'll use the code in \cref{lst:nested-env}, noting that it contains nested environments.
- \index{poly-switches!conflicting switches}
+ we'll use the code in \cref{lst:nested-env}, noting that it contains nested
+ environments. \index{poly-switches!conflicting switches}
\cmhlistingsfromfile{demonstrations/nested-env.tex}{\texttt{nested-env.tex}}{lst:nested-env}
@@ -6661,40 +7072,43 @@ latexindent.pl -m -l=nested-env-mlb1.yaml nested-env.tex
\texttt{one} environment; if the -m switch is active, then during this phase:
\begin{itemize}
\item line breaks at the beginning of the \texttt{body} can be added (if
- \texttt{BodyStartsOnOwnLine} is $1$ or $2$) or removed (if \texttt{BodyStartsOnOwnLine}
- is $-1$);
- \item line breaks at the end of the body can be added (if \texttt{EndStartsOnOwnLine} is $1$ or
- $2$) or removed (if \texttt{EndStartsOnOwnLine} is $-1$);
- \item line breaks after the end statement can be added (if \texttt{EndFinishesWithLineBreak} is
- $1$ or $2$).
+ \texttt{BodyStartsOnOwnLine} is $1$ or $2$) or removed (if
+ \texttt{BodyStartsOnOwnLine} is $-1$);
+ \item line breaks at the end of the body can be added (if
+ \texttt{EndStartsOnOwnLine} is $1$ or $2$) or removed (if
+ \texttt{EndStartsOnOwnLine} is $-1$);
+ \item line breaks after the end statement can be added (if
+ \texttt{EndFinishesWithLineBreak} is $1$ or $2$).
\end{itemize}
\item Phase 2: indentation, in which white space is added to the begin, body, and end
statements;
- \item Phase 3: unpacking, in which unique ids are replaced by their \emph{indented} code
- blocks; if the -m switch is active, then during this phase,
+ \item Phase 3: unpacking, in which unique ids are replaced by their \emph{indented}
+ code blocks; if the -m switch is active, then during this phase,
\begin{itemize}
- \item line breaks before \texttt{begin} statements can be added or removed (depending upon
- \texttt{BeginStartsOnOwnLine});
- \item line breaks after \emph{end} statements can be removed but \emph{NOT} added (see
- \texttt{EndFinishesWithLineBreak}).
+ \item line breaks before \texttt{begin} statements can be added or removed
+ (depending upon \texttt{BeginStartsOnOwnLine});
+ \item line breaks after \emph{end} statements can be removed but \emph{NOT}
+ added (see \texttt{EndFinishesWithLineBreak}).
\end{itemize}
\end{enumerate}
With reference to \cref{lst:nested-env-mlb1}, this means that during Phase 1:
\begin{itemize}
\item the \texttt{two} environment is found first, and the line break ahead of the
- \lstinline!\end{two}! statement is removed because \texttt{EndStartsOnOwnLine} is set to
- $-1$. Importantly, because, \emph{at this stage}, \lstinline!\end{two}! \emph{does}
- finish with a line break, \texttt{EndFinishesWithLineBreak} causes no action.
+ \lstinline!\end{two}! statement is removed because \texttt{EndStartsOnOwnLine} is
+ set to $-1$. Importantly, because, \emph{at this stage}, \lstinline!\end{two}!
+ \emph{does} finish with a line break, \texttt{EndFinishesWithLineBreak} causes no
+ action.
\item next, the \texttt{one} environment is found; the line break ahead of
- \lstinline!\end{one}! is removed because \texttt{EndStartsOnOwnLine} is set to $-1$.
+ \lstinline!\end{one}! is removed because \texttt{EndStartsOnOwnLine} is set to
+ $-1$.
\end{itemize}
The indentation is done in Phase 2; in Phase 3 \emph{there is no option to add a line
break after the \lstinline!end! statements}. We can justify this by remembering that
during Phase 3, the \texttt{one} environment will be found and processed first, followed
- by the \texttt{two} environment. If the \texttt{two} environment were to add a line break
- after the \lstinline!\end{two}! statement, then \texttt{latexindent.pl} would have no way
- of knowing how much indentation to add to the subsequent text (in this case,
+ by the \texttt{two} environment. If the \texttt{two} environment were to add a line
+ break after the \lstinline!\end{two}! statement, then \texttt{latexindent.pl} would have
+ no way of knowing how much indentation to add to the subsequent text (in this case,
\lstinline!\end{one}!).
\begin{example}
@@ -6715,9 +7129,10 @@ latexindent.pl -m -l=nested-env-mlb2.yaml nested-env.tex
During Phase 1:
\begin{itemize}
\item the \texttt{two} environment is found first, and the line break ahead of the
- \lstinline!\end{two}! statement is not changed because \texttt{EndStartsOnOwnLine} is set
- to $1$. Importantly, because, \emph{at this stage}, \lstinline!\end{two}! \emph{does}
- finish with a line break, \texttt{EndFinishesWithLineBreak} causes no action.
+ \lstinline!\end{two}! statement is not changed because
+ \texttt{EndStartsOnOwnLine} is set to $1$. Importantly, because, \emph{at this
+ stage}, \lstinline!\end{two}! \emph{does} finish with a line break,
+ \texttt{EndFinishesWithLineBreak} causes no action.
\item next, the \texttt{one} environment is found; the line break ahead of
\lstinline!\end{one}! is already present, and no action is needed.
\end{itemize}
@@ -6736,12 +7151,13 @@ latexindent.pl -m -l=nested-env-mlb2.yaml nested-env.tex
You can instruct \texttt{latexindent.pl} to perform replacements/substitutions on your
\announce{2019-07-13}{replacement mode switches} file by using any of the \texttt{-r},
- \texttt{-rv} or \texttt{-rr} switches: \index{verbatim!rv, replacementrespectverb switch}
+ \texttt{-rv} or \texttt{-rr} switches: \index{verbatim!rv, replacementrespectverb
+ switch}
\begin{itemize}
- \item the \texttt{-r} switch will perform indentation and replacements, not respecting verbatim
- code blocks;
- \item the \texttt{-rv} switch will perform indentation and replacements, and \emph{will}
- respect verbatim code blocks;
+ \item the \texttt{-r} switch will perform indentation and replacements, not respecting
+ verbatim code blocks;
+ \item the \texttt{-rv} switch will perform indentation and replacements, and
+ \emph{will} respect verbatim code blocks;
\item the \texttt{-rr} switch will \emph{not} perform indentation, and will perform
replacements not respecting verbatim code blocks.
\end{itemize}
@@ -6763,18 +7179,19 @@ latexindent.pl -m -l=nested-env-mlb2.yaml nested-env.tex
\end{tabular}
\end{table}
- The default value of the \texttt{replacements} field is shown in \cref{lst:replacements};
- as with all of the other fields, you are encouraged to customise and change this as you
- see fit. The options in this field will \emph{only} be considered if the \texttt{-r},
- \texttt{-rv} or \texttt{-rr} switches are active; when discussing YAML settings related
- to the replacement-mode switches, we will use the style given in \cref{lst:replacements}.
+ The default value of the \texttt{replacements} field is shown in
+ \cref{lst:replacements}; as with all of the other fields, you are encouraged to
+ customise and change this as you see fit. The options in this field will \emph{only} be
+ considered if the \texttt{-r}, \texttt{-rv} or \texttt{-rr} switches are active; when
+ discussing YAML settings related to the replacement-mode switches, we will use the style
+ given in \cref{lst:replacements}.
\cmhlistingsfromfile[style=replacements]{../defaultSettings.yaml}[width=0.95\linewidth,before=\centering,replace-TCB]{\texttt{replacements}}{lst:replacements}
The first entry within the \texttt{replacements} field is \texttt{amalgamate}, and is
- \emph{optional}; by default it is set to 1, so that replacements will be amalgamated from
- each settings file that you specify. As you'll see in the demonstrations that follow,
- there is no need to specify this field.
+ \emph{optional}; by default it is set to 1, so that replacements will be amalgamated
+ from each settings file that you specify. As you'll see in the demonstrations that
+ follow, there is no need to specify this field.
You'll notice that, by default, there is only \emph{one} entry in the
\texttt{replacements} field, but it can take as many entries as you would like; each one
@@ -6782,12 +7199,11 @@ latexindent.pl -m -l=nested-env-mlb2.yaml nested-env.tex
\subsection{Introduction to replacements}
Let's explore the action of the default settings, and then we'll demonstrate the feature
- with further examples. With reference to \cref{lst:replacements}, the default action will
- replace every instance of the text \texttt{latexindent.pl} with \texttt{pl.latexindent}.
+ with further examples.
\begin{example}
- Beginning with the code in \cref{lst:replace1} and running the command \index{switches!-r
- demonstration}
+ Beginning with the code in \cref{lst:replace1} and running the command
+ \index{switches!-r demonstration}
\begin{commandshell}
latexindent.pl -r replace1.tex
@@ -6800,9 +7216,13 @@ latexindent.pl -r replace1.tex
\cmhlistingsfromfile{demonstrations/replace1-r1.tex}{\texttt{replace1.tex} default}{lst:replace1-r1}
\end{cmhtcbraster}
- If we don't wish to perform this replacement, then we can tweak the default settings of
- \vref{lst:replacements} by changing \texttt{lookForThis} to 0; we perform this action in
- \cref{lst:replace1-yaml}, and run the command \index{switches!-l demonstration}
+ We note that in \cref{lst:replacements}, because \texttt{lookForThis} is set to 0, the
+ specified replacement has \emph{not} been made, and there is no difference between
+ \cref{lst:replace1,lst:replace1-r1}.
+
+ If we \emph{do} wish to perform this replacement, then we can tweak the default settings
+ of \vref{lst:replacements} by changing \texttt{lookForThis} to 1; we perform this action
+ in \cref{lst:replace1-yaml}, and run the command \index{switches!-l demonstration}
\index{switches!-r demonstration}
\begin{commandshell}
@@ -6820,8 +7240,8 @@ latexindent.pl -r replace1.tex -l=replace1.yaml
the default replacements are overwritten.
\end{example}
- We haven't yet discussed the \texttt{when} field; don't worry, we'll get to it as part of
- the discussion in what follows.
+ We haven't yet discussed the \texttt{when} field; don't worry, we'll get to it as part
+ of the discussion in what follows.
\subsection{The two types of replacements}
There are two types of replacements:
@@ -6863,8 +7283,8 @@ latexindent.pl -r colsep.tex -l=colsep.yaml
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/colsep.yaml}[replace-TCB]{\texttt{colsep.yaml}}{lst:colsep-yaml}
\end{cmhtcbraster}
Note that in \cref{lst:colsep-yaml}, we have specified \emph{two} separate fields, each
- with their own `\emph{this}' field; furthermore, for both of the separate fields, we have
- not specified `\texttt{that}', so the \texttt{that} field is assumed to be blank by
+ with their own `\emph{this}' field; furthermore, for both of the separate fields, we
+ have not specified `\texttt{that}', so the \texttt{that} field is assumed to be blank by
\texttt{latexindent.pl};
We can make the YAML in \cref{lst:colsep-yaml} more concise by exploring the
@@ -6890,21 +7310,21 @@ latexindent.pl -r colsep.tex -l=colsep1.yaml
\cref{lst:colsep1}, we do note the following:
\begin{itemize}
\item the general form of the \texttt{substitution} field is
- \lstinline!s/regex/replacement/modifiers!. You can place any regular expression you like
- within this;
+ \lstinline!s/regex/replacement/modifiers!. You can place any regular expression
+ you like within this;
\item we have `escaped' the backslash by using \lstinline!\\!
\item we have used \lstinline!\d+! to represent \emph{at least} one digit
- \item the \texttt{s} \emph{modifier} (in the \texttt{sg} at the end of the line) instructs
- \texttt{latexindent.pl} to treat your file as one single line;
- \item the \texttt{g} \emph{modifier} (in the \texttt{sg} at the end of the line) instructs
- \texttt{latexindent.pl} to make the substitution \emph{globally} throughout your file;
- you might try removing the \texttt{g} modifier from \cref{lst:colsep1} and observing the
- difference in output.
+ \item the \texttt{s} \emph{modifier} (in the \texttt{sg} at the end of the line)
+ instructs \texttt{latexindent.pl} to treat your file as one single line;
+ \item the \texttt{g} \emph{modifier} (in the \texttt{sg} at the end of the line)
+ instructs \texttt{latexindent.pl} to make the substitution \emph{globally}
+ throughout your file; you might try removing the \texttt{g} modifier from
+ \cref{lst:colsep1} and observing the difference in output.
\end{itemize}
You might like to see
\href{https://perldoc.perl.org/perlre.html#Modifiers}{https://perldoc.perl.org/perlre.html\#Modifiers}
- for details of modifiers; in general, I recommend starting with the \texttt{sg} modifiers
- for this feature.
+ for details of modifiers; in general, I recommend starting with the \texttt{sg}
+ modifiers for this feature.
\end{example}
\begin{example}
@@ -6922,8 +7342,8 @@ latexindent.pl -r colsep.tex -l=multi-line.yaml
\cmhlistingsfromfile{demonstrations/colsep-mod2.tex}{\texttt{colsep.tex} using \cref{lst:multi-line}}{lst:colsep-mod2}
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/multi-line.yaml}[replace-TCB]{\texttt{multi-line.yaml}}{lst:multi-line}
\end{cmhtcbraster}
- With reference to \cref{lst:multi-line}, we have specified a \emph{multi-line} version of
- \texttt{this} by employing the \emph{literal} YAML style \lstinline!|-!. See, for
+ With reference to \cref{lst:multi-line}, we have specified a \emph{multi-line} version
+ of \texttt{this} by employing the \emph{literal} YAML style \lstinline!|-!. See, for
example,
\href{https://stackoverflow.com/questions/3790454/in-yaml-how-do-i-break-a-string-over-multiple-lines}{https://stackoverflow.com/questions/3790454/in-yaml-how-do-i-break-a-string-over-multiple-lines}
for further options, all of which can be used in your YAML file.
@@ -6992,18 +7412,19 @@ latexindent.pl -r displaymath.tex -l=displaymath1.yaml
A few notes about \cref{lst:displaymath1}:
\begin{enumerate}
- \item we have used the \texttt{x} modifier, which allows us to have white space within the
- regex;
- \item we have used a capture group, \lstinline!(.*?)! which captures the content between the
- \lstinline!$$...$$! into the special variable, \lstinline!$1!;
- \item we have used the content of the capture group, \lstinline!$1!, in the replacement text.
+ \item we have used the \texttt{x} modifier, which allows us to have white space within
+ the regex;
+ \item we have used a capture group, \lstinline!(.*?)! which captures the content
+ between the \lstinline!$$...$$! into the special variable, \lstinline!$1!;
+ \item we have used the content of the capture group, \lstinline!$1!, in the replacement
+ text.
\end{enumerate}
See
\href{https://perldoc.perl.org/perlre.html#Capture-groups}{https://perldoc.perl.org/perlre.html\#Capture-groups}
for a discussion of capture groups.
- The features of the replacement switches can, of course, be combined with others from the
- toolkit of \texttt{latexindent.pl}. For example, we can combine the poly-switches of
+ The features of the replacement switches can, of course, be combined with others from
+ the toolkit of \texttt{latexindent.pl}. For example, we can combine the poly-switches of
\vref{sec:poly-switches}, which we do in \cref{lst:equation}; upon running the command
\index{switches!-l demonstration} \index{switches!-m demonstration} \index{switches!-r
demonstration}
@@ -7038,8 +7459,8 @@ latexindent.pl -r -m displaymath.tex -l=displaymath1.yaml,equation.yaml
latexindent.pl -r phrase.tex -l=hspace.yaml
\end{commandshell}
- which gives the output in \cref{lst:phrase-mod1}. \index{regular expressions!at least one
- +} \index{regular expressions!horizontal space \textbackslash{h}}
+ which gives the output in \cref{lst:phrase-mod1}. \index{regular expressions!at least
+ one +} \index{regular expressions!horizontal space \textbackslash{h}}
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/phrase-mod1.tex}{\texttt{phrase.tex} using \cref{lst:hspace}}{lst:phrase-mod1}
@@ -7076,18 +7497,19 @@ latexindent.pl -r references.tex -l=reference.yaml
\end{example}
\begin{example}
- Let's explore the three replacement mode switches (see \vref{tab:replacementswitches}) in
- the context of an example that contains a verbatim code block, \cref{lst:verb1}; we will
- use the settings in \cref{lst:verbatim1-yaml}.
+ Let's explore the three replacement mode switches (see \vref{tab:replacementswitches})
+ in the context of an example that contains a verbatim code block, \cref{lst:verb1}; we
+ will use the settings in \cref{lst:verbatim1-yaml}.
\begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/verb1.tex}{\texttt{verb1.tex}}{lst:verb1}
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/verbatim1.yaml}[replace-TCB]{\texttt{verbatim1.yaml}}{lst:verbatim1-yaml}
\end{cmhtcbraster}
- Upon running the following commands, \index{verbatim!comparison with -r and -rr switches}
- \index{switches!-l demonstration} \index{switches!-o demonstration} \index{switches!-r
- demonstration} \index{switches!-rv demonstration} \index{switches!-rr demonstration}
+ Upon running the following commands, \index{verbatim!comparison with -r and -rr
+ switches} \index{switches!-l demonstration} \index{switches!-o demonstration}
+ \index{switches!-r demonstration} \index{switches!-rv demonstration} \index{switches!-rr
+ demonstration}
\begin{commandshell}
latexindent.pl -r verb1.tex -l=verbatim1.yaml -o=+mod1
@@ -7108,12 +7530,12 @@ latexindent.pl -rr verb1.tex -l=verbatim1.yaml -o=+-rr-mod1
We note that:
\begin{enumerate}
- \item in \cref{lst:verb1-mod1} indentation has been performed, and that the replacements
- specified in \cref{lst:verbatim1-yaml} have been performed, even within the verbatim code
- block;
- \item in \cref{lst:verb1-rv-mod1} indentation has been performed, but that the replacements
- have \emph{not} been performed within the verbatim environment, because the \texttt{rv}
- switch is active;
+ \item in \cref{lst:verb1-mod1} indentation has been performed, and that the
+ replacements specified in \cref{lst:verbatim1-yaml} have been performed, even
+ within the verbatim code block;
+ \item in \cref{lst:verb1-rv-mod1} indentation has been performed, but that the
+ replacements have \emph{not} been performed within the verbatim environment,
+ because the \texttt{rv} switch is active;
\item in \cref{lst:verb1-rr-mod1} indentation has \emph{not} been performed, but that
replacements have been performed, not respecting the verbatim code block.
\end{enumerate}
@@ -7135,8 +7557,8 @@ latexindent.pl -rr verb1.tex -l=verbatim1.yaml -o=+-rr-mod1
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/amalg3-yaml.yaml}[replace-TCB]{\texttt{amalg3-yaml.yaml}}{lst:amalg3-yaml}
\end{cmhtcbraster}
- Upon running the following commands, \index{switches!-l demonstration} \index{switches!-r
- demonstration}
+ Upon running the following commands, \index{switches!-l demonstration}
+ \index{switches!-r demonstration}
\begin{commandshell}
latexindent.pl -r amalg1.tex -l=amalg1-yaml
@@ -7155,11 +7577,14 @@ latexindent.pl -r amalg1.tex -l=amalg1-yaml,amalg2-yaml,amalg3-yaml
\end{cmhtcbraster}
We note that:
\begin{enumerate}
- \item in \cref{lst:amalg1-mod1} the replacements from \cref{lst:amalg1-yaml} have been used;
- \item in \cref{lst:amalg1-mod12} the replacements from \cref{lst:amalg1-yaml,lst:amalg2-yaml}
- have \emph{both} been used, because the default value of \texttt{amalgamate} is 1;
- \item in \cref{lst:amalg1-mod123} \emph{only} the replacements from \cref{lst:amalg3-yaml} have
- been used, because the value of \texttt{amalgamate} has been set to 0.
+ \item in \cref{lst:amalg1-mod1} the replacements from \cref{lst:amalg1-yaml} have been
+ used;
+ \item in \cref{lst:amalg1-mod12} the replacements from
+ \cref{lst:amalg1-yaml,lst:amalg2-yaml} have \emph{both} been used, because the
+ default value of \texttt{amalgamate} is 1;
+ \item in \cref{lst:amalg1-mod123} \emph{only} the replacements from
+ \cref{lst:amalg3-yaml} have been used, because the value of \texttt{amalgamate}
+ has been set to 0.
\end{enumerate}
\end{example}
% arara: pdflatex: { files: [latexindent]}
@@ -7186,8 +7611,8 @@ latexindent.pl -n 3-7 myfile.tex
\item line range, as in \texttt{--lines 3-7}
\item single line, as in \texttt{--lines 5}
\item multiple line ranges separated by commas, as in \texttt{--lines 3-5,8-10}
- \item negated line ranges, as in \texttt{--lines !3-5} which translates to \texttt{--lines
- 1-2,6-N}, where N is the number of lines in your file.
+ \item negated line ranges, as in \texttt{--lines !3-5} which translates to
+ \texttt{--lines 1-2,6-N}, where N is the number of lines in your file.
\end{itemize}
We demonstrate this feature, and the available variations in what follows. We will use
@@ -7218,8 +7643,8 @@ latexindent.pl --lines 7-3 myfile.tex -o=+-mod1
\end{example}
\begin{example}
- You can call the \texttt{lines} switch with only \emph{one number} and in which case only
- that line will be operated upon. For example
+ You can call the \texttt{lines} switch with only \emph{one number} and in which case
+ only that line will be operated upon. For example
\begin{commandshell}
latexindent.pl --lines 5 myfile.tex -o=+-mod2
@@ -7240,9 +7665,9 @@ latexindent.pl --lines 5-5 myfile.tex
\end{example}
\begin{example}
- If you specify a value outside of the line range of the file then \texttt{latexindent.pl}
- will ignore the \texttt{lines} argument, detail as such in the log file, and proceed to
- operate on the entire file.
+ If you specify a value outside of the line range of the file then
+ \texttt{latexindent.pl} will ignore the \texttt{lines} argument, detail as such in the
+ log file, and proceed to operate on the entire file.
For example, in the following call
@@ -7325,8 +7750,8 @@ latexindent.pl --lines !5-7 myfile.tex -o=+-mod5
which instructs \texttt{latexindent.pl} to operate upon all of the lines \emph{except}
lines 5 to 7.
- In other words, \texttt{latexindent.pl} \emph{will} operate on lines 1 to 4, and 8 to 12,
- so the following two calls are equivalent:
+ In other words, \texttt{latexindent.pl} \emph{will} operate on lines 1 to 4, and 8 to
+ 12, so the following two calls are equivalent:
\begin{commandshell}
latexindent.pl --lines !5-7 myfile.tex
@@ -7360,8 +7785,8 @@ latexindent.pl --lines 1-4,8,11-12 myfile.tex -o=+-mod6
\begin{example}
If you specify a line range with anything other than an integer, then
- \texttt{latexindent.pl} will ignore the \texttt{lines} argument, and \emph{operate on the
- entire file}.
+ \texttt{latexindent.pl} will ignore the \texttt{lines} argument, and \emph{operate on
+ the entire file}.
Sample calls that result in the \texttt{lines} argument being ignored include the
following:
@@ -7403,9 +7828,9 @@ latexindent.pl --lines 6 myfile1.tex -o=+-mod1 -m -l env-mlb2,env-mlb7,env-mlb8
\cref{lst:fineTuning}.
This field is for those that would like to peek under the bonnet/hood and make some fine
- tuning to \texttt{latexindent.pl}'s operating. \index{warning!fine tuning} \index{regular
- expressions!fine tuning} \index{regular expressions!environments} \index{regular
- expressions!ifElseFi} \index{regular expressions!commands} \index{regular
+ tuning to \texttt{latexindent.pl}'s operating. \index{warning!fine tuning}
+ \index{regular expressions!fine tuning} \index{regular expressions!environments}
+ \index{regular expressions!ifElseFi} \index{regular expressions!commands} \index{regular
expressions!keyEqualsValuesBracesBrackets} \index{regular
expressions!NamedGroupingBracesBrackets} \index{regular
expressions!UnNamedGroupingBracesBrackets} \index{regular expressions!arguments}
@@ -7415,22 +7840,22 @@ latexindent.pl --lines 6 myfile1.tex -o=+-mod1 -m -l env-mlb2,env-mlb7,env-mlb8
space \textbackslash{h}}
\begin{warning}
- Making changes to the fine tuning may have significant consequences for your indentation
- scheme, proceed with caution!
+ Making changes to the fine tuning may have significant consequences for your
+ indentation scheme, proceed with caution!
\end{warning}
\begin{widepage}
\cmhlistingsfromfile[style=fineTuning]{../defaultSettings.yaml}[width=.95\linewidth,before=\centering,enhanced jigsaw,breakable,yaml-TCB]{\texttt{fineTuning}}{lst:fineTuning}
\end{widepage}
- The fields given in \cref{lst:fineTuning} are all \emph{regular expressions}. This manual
- is not intended to be a tutorial on regular expressions; you might like to read, for
- example, \cite{masteringregexp} for a detailed covering of the topic.
+ The fields given in \cref{lst:fineTuning} are all \emph{regular expressions}. This
+ manual is not intended to be a tutorial on regular expressions; you might like to read,
+ for example, \cite{masteringregexp} for a detailed covering of the topic.
We make the following comments with reference to \cref{lst:fineTuning}:
\begin{enumerate}
- \item the \texttt{environments:name} field details that the \emph{name} of an environment can
- contain:
+ \item the \texttt{environments:name} field details that the \emph{name} of an
+ environment can contain:
\begin{enumerate}
\item \texttt{a-z} lower case letters
\item \texttt{A-Z} upper case letters
@@ -7447,9 +7872,10 @@ latexindent.pl --lines 6 myfile1.tex -o=+-mod1 -m -l env-mlb2,env-mlb7,env-mlb8
\item \lstinline^@?^ means that it \emph{can possibly} begin with
\lstinline^@^
\item followed by \texttt{if}
- \item followed by 0 or more characters from \texttt{a-z}, \texttt{A-Z} and \texttt{@}
- \item the \texttt{?} the end means \emph{non-greedy}, which means `stop the match as soon as
- possible'
+ \item followed by 0 or more characters from \texttt{a-z}, \texttt{A-Z} and
+ \texttt{@}
+ \item the \texttt{?} the end means \emph{non-greedy}, which means `stop the
+ match as soon as possible'
\end{enumerate}
\item the \texttt{keyEqualsValuesBracesBrackets} contains some interesting syntax:
\begin{enumerate}
@@ -7473,7 +7899,7 @@ latexindent.pl --lines 6 myfile1.tex -o=+-mod1 -m -l env-mlb2,env-mlb7,env-mlb8
\item \texttt{betterFullStop} is in relation to the one sentence per line routine, detailed in
\vref{sec:onesentenceperline}
\item \texttt{doubleBackSlash} is in relation to the \texttt{DBSStartsOnOwnLine} and
- \texttt{DBSFinishesWithLineBreak} polyswitches surrounding double back slashes, see
+ \texttt{DBSFinishesWithLineBreak} polyswitches surrounding double backslashes, see
\vref{subsec:dbs}
\item \texttt{comma} is in relation to the \texttt{CommaStartsOnOwnLine} and
\texttt{CommaFinishesWithLineBreak} polyswitches surrounding commas in optional and
@@ -7487,8 +7913,9 @@ latexindent.pl --lines 6 myfile1.tex -o=+-mod1 -m -l env-mlb2,env-mlb7,env-mlb8
\index{warning!capture groups}
\begin{warning}
- For the \texttt{fineTuning} feature you should only ever use \emph{non}-capturing groups,
- such as \lstinline!(?:...)! and \emph{not} capturing groups, which are \lstinline!(...)!
+ For the \texttt{fineTuning} feature you should only ever use \emph{non}-capturing
+ groups, such as \lstinline!(?:...)! and \emph{not} capturing groups, which are
+ \lstinline!(...)!
\end{warning}
\begin{example}
@@ -7506,9 +7933,9 @@ latexindent.pl finetuning1.tex
\cmhlistingsfromfile{demonstrations/finetuning1-default.tex}{\texttt{finetuning1.tex} default}{lst:finetuning1-default}
\end{cmhtcbraster}
- It's clear from \cref{lst:finetuning1-default} that the indentation scheme has not worked
- as expected. We can \emph{fine tune} the indentation scheme by employing the settings
- given in \cref{lst:fine-tuning1} and running the command \index{switches!-l
+ It's clear from \cref{lst:finetuning1-default} that the indentation scheme has not
+ worked as expected. We can \emph{fine tune} the indentation scheme by employing the
+ settings given in \cref{lst:fine-tuning1} and running the command \index{switches!-l
demonstration}
\begin{commandshell}
@@ -7541,9 +7968,9 @@ latexindent.pl finetuning2.tex
\cmhlistingsfromfile{demonstrations/finetuning2-default.tex}{\texttt{finetuning2.tex} default}{lst:finetuning2-default}
\end{cmhtcbraster}
- It's clear from \cref{lst:finetuning2-default} that the indentation scheme has not worked
- as expected. We can \emph{fine tune} the indentation scheme by employing the settings
- given in \cref{lst:fine-tuning2} and running the command \index{switches!-l
+ It's clear from \cref{lst:finetuning2-default} that the indentation scheme has not
+ worked as expected. We can \emph{fine tune} the indentation scheme by employing the
+ settings given in \cref{lst:fine-tuning2} and running the command \index{switches!-l
demonstration}
\begin{commandshell}
@@ -7565,9 +7992,9 @@ latexindent.pl finetuning2.tex -l=fine-tuning2.yaml
\end{example}
\begin{example}
- You can tweak the \texttt{fineTuning} using the \texttt{-y} switch, but to be sure to use
- quotes appropriately. For example, starting with the code in \cref{lst:finetuning3} and
- running the following command
+ You can tweak the \texttt{fineTuning} using the \texttt{-y} switch, but to be sure to
+ use quotes appropriately. For example, starting with the code in \cref{lst:finetuning3}
+ and running the following command
\begin{commandshell}
latexindent.pl -m -y='modifyLineBreaks:oneSentencePerLine:manipulateSentences: 1, modifyLineBreaks:oneSentencePerLine:sentencesBeginWith:a-z: 1, fineTuning:modifyLineBreaks:betterFullStop: "(?:\.|;|:(?![a-z]))|(?:(?<!(?:(?:e\.g)|(?:i\.e)|(?:etc))))\.(?!(?:[a-z]|[A-Z]|\-|~|\,|[0-9]))"' issue-243.tex -o=+-mod1
@@ -7624,8 +8051,8 @@ latexindent.pl -m finetuning4.tex -o=+-mod2 -l=href2
\begin{example}
Another approach to this situation, which does not use \texttt{fineTuning}, is to use
- \texttt{noIndentBlock} which we discussed in \vref{lst:noIndentBlock}; using the settings
- in \cref{lst:href3} and running the command
+ \texttt{noIndentBlock} which we discussed in \vref{lst:noIndentBlock}; using the
+ settings in \cref{lst:href3} and running the command
\begin{commandshell}
latexindent.pl -m finetuning4.tex -o=+-mod3 -l=href3
@@ -7679,15 +8106,16 @@ latexindent.pl bib1.bib -l bibsettings1.yaml -o=+-mod2
\end{widepage}
Some notes about \cref{lst:bibsettings1}:
\begin{itemize}
- \item we have populated the \texttt{lookForAlignDelims} field with the \texttt{online} command,
- and have used the \texttt{delimiterRegEx}, discussed in \vref{sec:delimiter-reg-ex};
- \item we have tweaked the \texttt{keyEqualsValuesBracesBrackets} code block so that it will
- \emph{not} be found following a comma; this means that, in contrast to the default
- behaviour, the lines such as \lstinline!date={2013-05-23},! will \emph{not} be treated as
- key-equals-value braces;
- \item the adjustment to \texttt{keyEqualsValuesBracesBrackets} necessitates the associated
- change to the \texttt{UnNamedGroupingBracesBrackets} field so that they will be searched
- for following \texttt{=} symbols.
+ \item we have populated the \texttt{lookForAlignDelims} field with the \texttt{online}
+ command, and have used the \texttt{delimiterRegEx}, discussed in
+ \vref{sec:delimiter-reg-ex};
+ \item we have tweaked the \texttt{keyEqualsValuesBracesBrackets} code block so that it
+ will \emph{not} be found following a comma; this means that, in contrast to the
+ default behaviour, the lines such as \lstinline!date={2013-05-23},! will
+ \emph{not} be treated as key-equals-value braces;
+ \item the adjustment to \texttt{keyEqualsValuesBracesBrackets} necessitates the
+ associated change to the \texttt{UnNamedGroupingBracesBrackets} field so that
+ they will be searched for following \texttt{=} symbols.
\end{itemize}
\end{example}
@@ -7711,7 +8139,8 @@ latexindent.pl bib2.bib -l bibsettings1.yaml -o=+-mod1
The output in \cref{lst:bib2-mod1} is not ideal, as the \texttt{=} symbol within the url
field has been incorrectly used as an alignment delimiter.
- We address this by tweaking the \texttt{delimiterRegEx} field in \cref{lst:bibsettings2}.
+ We address this by tweaking the \texttt{delimiterRegEx} field in
+ \cref{lst:bibsettings2}.
\cmhlistingsfromfile[style=yaml-LST]{demonstrations/bibsettings2.yaml}[yaml-TCB]{\texttt{bibsettings2.yaml}}{lst:bibsettings2}
@@ -7734,16 +8163,13 @@ latexindent.pl bib2.bib -l bibsettings1.yaml,bibsettings2.yaml -o=+-mod2
There are a number of known limitations of the script, and almost certainly quite a few
that are \emph{unknown}! The known issues include:
\begin{description}
- \item[multicolumn alignment] when working with code blocks in which multicolumn commands
- overlap, the algorithm can fail; see \vref{lst:tabular2-mod2}.
- \item[text wrap] routine operates \emph{before} indentation occurs; this means that it is
- likely that your final, indented, text wrapped text may exceed the value of
- \texttt{columns} that you specify; see \vref{subsec:textwrapping}.
- \item[efficiency] particularly when the \texttt{-m} switch is active, as this adds many checks
- and processes. The current implementation relies upon finding and storing \emph{every}
- code block (see the discussion on \cpageref{page:phases}); I hope that, in a future
- version, only \emph{nested} code blocks will need to be stored in the `packing' phase,
- and that this will improve the efficiency of the script.
+ \item[multicolumn alignment] when working with code blocks in which multicolumn
+ commands overlap, the algorithm can fail; see \vref{lst:tabular2-mod2}.
+ \item[efficiency] particularly when the \texttt{-m} switch is active, as this adds many
+ checks and processes. The current implementation relies upon finding and storing
+ \emph{every} code block (see the discussion on \cpageref{page:phases}); I hope
+ that, in a future version, only \emph{nested} code blocks will need to be stored
+ in the `packing' phase, and that this will improve the efficiency of the script.
\end{description}
You can run \texttt{latexindent} on any file; \announce{2019-07-13}*{ability to call
@@ -7797,9 +8223,9 @@ use strict; # |
use warnings; # |
use Encode; # |
use Getopt::Long; # |
-use Data::Dumper; # these modules are
-use List::Util qw(max); # generally part
-use PerlIO::encoding; # of a default perl distribution
+use Data::Dumper; # these modules are
+use List::Util qw(max); # generally part
+use PerlIO::encoding; # of a default perl distribution
use open ':std', ':encoding(UTF-8)';# |
use Text::Wrap; # |
use Text::Tabs; # |
@@ -7878,12 +8304,12 @@ sudo apt install texlive-latex-recommended
may need the following additional command to work with \texttt{latexindent.pl}
\begin{commandshell}
-sudo apt install texlive-extra-utils
+sudo apt install texlive-extra-utils
\end{commandshell}
\paragraph{Ubuntu: users without perl}
- \texttt{latexindent-linux} is a standalone executable \announce*{2022-10-30}{Linux Ubuntu standalone executable} for Ubuntu Linux (and therefore does not require a Perl distribution)
+ \texttt{latexindent-linux} is a standalone executable \announce{2022-10-30}{Linux Ubuntu standalone executable} for Ubuntu Linux (and therefore does not require a Perl distribution)
and caches copies of the Perl modules onto your system. It is available from \cite{latexindent-home}.
\index{latexindent-linux} \index{linux} \index{TeXLive}
@@ -7904,10 +8330,10 @@ sudo paru -S perl-file-homedir
then run the latexindent-module-installer.pl file located at helper-scripts/
\paragraph{Alpine}
- If you are using Alpine, some \texttt{Perl} modules are not build-compatible with Alpine,
- but replacements are available through \texttt{apk}. For example, you might use the
- commands given in \cref{lst:alpine-install}; thanks to \cite{jun-sheaf} for providing
- these details.
+ If you are using Alpine, some \texttt{Perl} modules are not build-compatible with
+ Alpine, but replacements are available through \texttt{apk}. For example, you might
+ use the commands given in \cref{lst:alpine-install}; thanks to \cite{jun-sheaf} for
+ providing these details.
\begin{cmhlistings}[style=tcblatex,language=Bash]{\texttt{alpine-install.sh}}{lst:alpine-install}
# Installing perl
@@ -7936,8 +8362,8 @@ cpanm -n YAML::Tiny
\href{https://github.com/cmhughes/latexindent.pl/issues/222}{https://github.com/cmhughes/latexindent.pl/issues/222}
for tips.
\subsubsection{Mac}
- Users of the Macintosh operating system might like to explore the following commands, for
- example:
+ Users of the Macintosh operating system might like to explore the following commands,
+ for example:
\begin{commandshell}
brew install perl
@@ -7950,10 +8376,10 @@ cpanm File::HomeDir
Alternatively,
\begin{commandshell}
-brew install latexindent
+brew install latexindent
\end{commandshell}
- \texttt{latexindent-macos} is a standalone executable \announce*{2022-10-30}{macOS standalone executable} for macOS (and therefore does not require a Perl distribution)
+ \texttt{latexindent-macos} is a standalone executable \announce{2022-10-30}{macOS standalone executable} for macOS (and therefore does not require a Perl distribution)
and caches copies of the Perl modules onto your system. It is available from \cite{latexindent-home}.
\index{latexindent-macos} \index{macOS} \index{TeXLive}
@@ -7990,9 +8416,9 @@ latexindent.pl --GCString myfile.tex
cpanm Unicode::GCString
\end{commandshell}
- Note: this switch does \emph{nothing} for \texttt{latexindent.exe} which loads the module
- by default. Users of \texttt{latexindent.exe} should not see any difference in behaviour
- whether they use this switch or not, as \texttt{latexindent.exe} loads the
+ Note: this switch does \emph{nothing} for \texttt{latexindent.exe} which loads the
+ module by default. Users of \texttt{latexindent.exe} should not see any difference in
+ behaviour whether they use this switch or not, as \texttt{latexindent.exe} loads the
\texttt{Unicode::GCString} module.
\section{Updating the path variable}\label{sec:updating-path}
@@ -8004,9 +8430,10 @@ cpanm Unicode::GCString
To add \texttt{latexindent.pl} to the path for Linux, follow these steps:
\begin{enumerate}
\item download \texttt{latexindent.pl} and its associated modules,
- \texttt{defaultSettings.yaml}, to your chosen directory from \cite{latexindent-home} ;
- \item within your directory, create a directory called \texttt{path-helper-files} and download
- \texttt{CMakeLists.txt} and \lstinline!cmake_uninstall.cmake.in! from
+ \texttt{defaultSettings.yaml}, to your chosen directory from
+ \cite{latexindent-home} ;
+ \item within your directory, create a directory called \texttt{path-helper-files} and
+ download \texttt{CMakeLists.txt} and \lstinline!cmake_uninstall.cmake.in! from
\cite{latexindent-home}/path-helper-files to this directory;
\item run
@@ -8045,8 +8472,8 @@ sudo make uninstall
\begin{enumerate}
\item download \texttt{latexindent.exe}, \texttt{defaultSettings.yaml},
\texttt{add-to-path.bat} from \cite{latexindent-home} to your chosen directory;
- \item open a command prompt and run the following command to see what is \emph{currently} in
- your \lstinline!%path%! variable;
+ \item open a command prompt and run the following command to see what is
+ \emph{currently} in your \lstinline!%path%! variable;
\begin{dosprompt}
echo %path%
\end{dosprompt}
@@ -8056,18 +8483,20 @@ echo %path%
\begin{dosprompt}
echo %path%
\end{dosprompt}
- to check that the appropriate directory has been added to your \lstinline!%path%!.
+ to check that the appropriate directory has been added to your
+ \lstinline!%path%!.
\end{enumerate}
To \emph{remove} the directory from your \lstinline!%path%!, run
\texttt{remove-from-path.bat} as administrator.
\section{Batches of files}\label{sec:batches}
- You can \announce{2022-03-25}{batches of files details} instruct \texttt{latexindent.pl}
- to operate on multiple files. For example, the following calls are all valid
+ You can \announce{2022-03-25}{batches of files details} instruct
+ \texttt{latexindent.pl} to operate on multiple files. For example, the following calls
+ are all valid
\begin{commandshell}
-latexindent.pl myfile1.tex
+latexindent.pl myfile1.tex
latexindent.pl myfile1.tex myfile2.tex
latexindent.pl myfile*.tex
\end{commandshell}
@@ -8095,14 +8524,14 @@ latexindent.pl -w myfile*.tex
If \texttt{latexindent.pl} is called using the \texttt{-o} switch as in
\begin{commandshell}
-latexindent.pl myfile*.tex -o=my-output-file.tex
+latexindent.pl myfile*.tex -o=my-output-file.tex
\end{commandshell}
and there are multiple files to operate upon, then the \texttt{-o} switch is ignored
because there is only \emph{one} output file specified.
- More generally, if the \texttt{-o} switch does \emph{not} have a \texttt{+} symbol at the
- beginning, then the \texttt{-o} switch will be ignored, and is turned it off.
+ More generally, if the \texttt{-o} switch does \emph{not} have a \texttt{+} symbol at
+ the beginning, then the \texttt{-o} switch will be ignored, and is turned it off.
For example
@@ -8137,7 +8566,8 @@ latexindent.pl myfile*.tex --check
then
\begin{itemize}
\item exit code 0 means that the text from \emph{none} of the files has been changed;
- \item exit code 1 means that the text from \emph{at least one} of the files been file changed.
+ \item exit code 1 means that the text from \emph{at least one} of the files been file
+ changed.
\end{itemize}
The interaction with \texttt{checkv} switch is as in the check switch, but with verbose
@@ -8146,17 +8576,17 @@ latexindent.pl myfile*.tex --check
\subsection{when a file does not exist}
What happens if one of the files can not be operated upon?
\begin{itemize}
- \item if at least one of the files does not exist and \texttt{latexindent.pl} has been called
- to act upon multiple files, then the exit code is 3; note that \texttt{latexindent.pl}
- will try to operate on each file that it is called upon, and will not exit with a fatal
- message in this case;
- \item if at least one of the files can not be read and \texttt{latexindent.pl} has been called
- to act upon multiple files, then the exit code is 4; note that \texttt{latexindent.pl}
- will try to operate on each file that it is called upon, and will not exit with a fatal
- message in this case;
- \item if \texttt{latexindent.pl} has been told to operate on multiple files, and some do not
- exist and some cannot be read, then the exit code will be either 3 or 4, depending upon
- which it scenario it encountered most recently.
+ \item if at least one of the files does not exist and \texttt{latexindent.pl} has been
+ called to act upon multiple files, then the exit code is 3; note that
+ \texttt{latexindent.pl} will try to operate on each file that it is called upon,
+ and will not exit with a fatal message in this case;
+ \item if at least one of the files can not be read and \texttt{latexindent.pl} has
+ been called to act upon multiple files, then the exit code is 4; note that
+ \texttt{latexindent.pl} will try to operate on each file that it is called upon,
+ and will not exit with a fatal message in this case;
+ \item if \texttt{latexindent.pl} has been told to operate on multiple files, and some
+ do not exist and some cannot be read, then the exit code will be either 3 or 4,
+ depending upon which it scenario it encountered most recently.
\end{itemize}
\section{latexindent-yaml-schema.json}
@@ -8171,25 +8601,25 @@ latexindent.pl myfile*.tex --check
To use \texttt{latexindent-yaml-schema.json} with \texttt{VSCode}, you can use the
following steps: \index{VSCode} \index{json!VSCode}
\begin{enumerate}
- \item download \texttt{latexindent-yaml-schema.json} from the \texttt{documentation} folder of
- \cite{latexindent-home}, save it in whichever directory you would like, noting it for
- reference;
- \item following the instructions from \cite{vscode-yaml-demo}, for example, you should install
- the VSCode YAML extension \cite{vscode-yaml-extentions};
- \item set up your \texttt{settings.json} file using the directory you saved the file by
- adapting \cref{lst:settings.json}; on my Ubuntu laptop this file lives at
+ \item download \texttt{latexindent-yaml-schema.json} from the \texttt{documentation}
+ folder of \cite{latexindent-home}, save it in whichever directory you would
+ like, noting it for reference;
+ \item following the instructions from \cite{vscode-yaml-demo}, for example, you should
+ install the VSCode YAML extension \cite{vscode-yaml-extentions};
+ \item set up your \texttt{settings.json} file using the directory you saved the file
+ by adapting \cref{lst:settings.json}; on my Ubuntu laptop this file lives at
\texttt{/home/cmhughes/.config/Code/User/settings.json}.
\end{enumerate}
\begin{widepage}
- \cmhlistingsfromfile{demonstrations/settings.json}[yaml-TCB]{\texttt{settings.json}}{lst:settings.json}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/settings.json}[yaml-TCB]{\texttt{settings.json}}{lst:settings.json}
\end{widepage}
Alternatively, if you would prefer not to download the json file, you might be able to
use an adapted version of \cref{lst:settings-alt.json}.
\begin{widepage}
- \cmhlistingsfromfile{demonstrations/settings-alt.json}[yaml-TCB]{\texttt{settings-alt.json}}{lst:settings-alt.json}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/settings-alt.json}[yaml-TCB]{\texttt{settings-alt.json}}{lst:settings-alt.json}
\end{widepage}
Finally, if your TeX distribution is up to date, then
@@ -8197,7 +8627,7 @@ latexindent.pl myfile*.tex --check
your installation, so an adapted version of \cref{lst:settings-alt1.json} may work.
\begin{widepage}
- \cmhlistingsfromfile{demonstrations/settings-alt1.json}[yaml-TCB]{\texttt{settings-alt1.json}}{lst:settings-alt1.json}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/settings-alt1.json}[yaml-TCB]{\texttt{settings-alt1.json}}{lst:settings-alt1.json}
\end{widepage}
If you have details of how to implement this schema in other editors, please feel
@@ -8211,8 +8641,8 @@ conda install latexindent.pl -c conda-forge
\end{commandshell}
This will install the executable and all its dependencies (including perl) in the
- activate environment. You don't even have to worry about \texttt{defaultSettings.yaml} as
- it included too, you can thus skip \cref{sec:requiredmodules,sec:updating-path}.
+ activate environment. You don't even have to worry about \texttt{defaultSettings.yaml}
+ as it included too, you can thus skip \cref{sec:requiredmodules,sec:updating-path}.
\index{conda}
You can get a conda installation for example from \cite{conda} or from \cite{anacoda}.
@@ -8240,14 +8670,14 @@ docker pull ghcr.io/cmhughes/latexindent.pl
\end{commandshell}
This will download the image packed \texttt{latexindent}'s executable and its all
- dependencies. \index{docker} Thank you to \cite{eggplants} for contributing this feature;
- see also \cite{cmhughesio}. For reference, \emph{ghcr} stands for \emph{GitHub Container
- Repository}.
+ dependencies. \index{docker} Thank you to \cite{eggplants} for contributing this
+ feature; see also \cite{cmhughesio}. For reference, \emph{ghcr} stands for \emph{GitHub
+ Container Repository}.
\subsection{Sample docker installation on Ubuntu}
To pull the image and show \texttt{latexindent}'s help on Ubuntu:
- \begin{cmhlistings}*[style=tcblatex,language=Bash]{\texttt{docker-install.sh}}{lst:docker-install}
+ \begin{cmhlistings}[style=tcblatex,language=Bash]{\texttt{docker-install.sh}}{lst:docker-install}
# setup docker if not already installed
if ! command -v docker &> /dev/null; then
sudo apt install docker.io -y
@@ -8271,14 +8701,16 @@ docker run -v /path/to/local/myfile.tex:/myfile.tex ghcr.io/cmhughes/latexindent
\section{pre-commit}
Users of \texttt{.git} may be interested \announce{2022-01-21}{pre-commit for
- latexindent.pl} in exploring the \texttt{pre-commit} tool \cite{pre-commithome}, which is
- supported by \texttt{latexindent.pl}. Thank you to \cite{tdegeusprecommit} for
- contributing this feature, and to \cite{holzhausprecommit} for their contribution to it.
+ latexindent.pl} in exploring the \texttt{pre-commit} tool \cite{pre-commithome}, which
+ is supported by \texttt{latexindent.pl}. Thank you to \cite{tdegeusprecommit} for
+ contributing this feature, and to \cite{holzhausprecommit} for their contribution to
+ it.
- To use the \texttt{pre-commit} tool, you will need to install \texttt{pre-commit}; sample
- instructions for Ubuntu are given in \cref{sec:pre-commit-ubuntu}. Once installed, there
- are two ways to use \texttt{pre-commit}: using \texttt{CPAN} or using \texttt{conda},
- detailed in \cref{sec:pre-commit-cpan} and \cref{sec:pre-commit-conda} respectively.
+ To use the \texttt{pre-commit} tool, you will need to install \texttt{pre-commit};
+ sample instructions for Ubuntu are given in \cref{sec:pre-commit-ubuntu}. Once
+ installed, there are two ways to use \texttt{pre-commit}: using \texttt{CPAN} or using
+ \texttt{conda}, detailed in \cref{sec:pre-commit-cpan} and \cref{sec:pre-commit-conda}
+ respectively.
\subsection{Sample pre-commit installation on Ubuntu}\label{sec:pre-commit-ubuntu}
On Ubuntu I ran the following command:
@@ -8298,7 +8730,7 @@ export PATH=$PATH:/home/cmhughes/.local/bin
The default values that are employed by \texttt{pre-commit} are shown in \cref{lst:.pre-commit-yaml-default}.
\index{pre-commit!default}
- \cmhlistingsfromfile{../.pre-commit-hooks.yaml}[yaml-TCB]{\texttt{.pre-commit-hooks.yaml} (default)}{lst:.pre-commit-yaml-default}
+ \cmhlistingsfromfile[style=yaml-LST]{../.pre-commit-hooks.yaml}[yaml-TCB]{\texttt{.pre-commit-hooks.yaml} (default)}{lst:.pre-commit-yaml-default}
In particular, the decision has deliberately been made (in collaboration with
\cite{holzhausprecommit}) to have the default to employ the following switches:
@@ -8316,31 +8748,33 @@ export PATH=$PATH:/home/cmhughes/.local/bin
\subsection{pre-commit using CPAN}\label{sec:pre-commit-cpan}
To use \texttt{latexindent.pl} with \texttt{pre-commit}, create the file
- \texttt{.pre-commit-config.yaml} given in \cref{lst:.pre-commit-config.yaml-cpan} in your
- git-repository. \index{cpan} \index{git} \index{pre-commit!cpan}
+ \texttt{.pre-commit-config.yaml} given in \cref{lst:.pre-commit-config.yaml-cpan} in
+ your git-repository. \index{cpan} \index{git} \index{pre-commit!cpan}
- \cmhlistingsfromfile{demonstrations/pre-commit-config-cpan.yaml}[yaml-TCB]{\texttt{.pre-commit-config.yaml} (cpan)}{lst:.pre-commit-config.yaml-cpan}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/pre-commit-config-cpan.yaml}[yaml-TCB]{\texttt{.pre-commit-config.yaml} (cpan)}{lst:.pre-commit-config.yaml-cpan}
Once created, you should then be able to run the following command:
\begin{commandshell}
-pre-commit run --all-files
+pre-commit run --all-files
\end{commandshell}
A few notes about \cref{lst:.pre-commit-config.yaml-cpan}:
\begin{itemize}
\item the settings given in \cref{lst:.pre-commit-config.yaml-cpan} instruct
\texttt{pre-commit} to use \texttt{CPAN} to get dependencies;
- \item this requires \texttt{pre-commit} and \texttt{perl} to be installed on your system;
+ \item this requires \texttt{pre-commit} and \texttt{perl} to be installed on your
+ system;
\item the \texttt{args} lists selected command-line options; the settings in
\cref{lst:.pre-commit-config.yaml-cpan} are equivalent to calling
\begin{commandshell}
-latexindent.pl -s myfile.tex
+latexindent.pl -s myfile.tex
\end{commandshell}
for each \texttt{.tex} file in your repository;
- \item to instruct \texttt{latexindent.pl} to overwrite the files in your repository, then you
- can update \cref{lst:.pre-commit-config.yaml-cpan} so that \texttt{args: [-s, -w]}.
+ \item to instruct \texttt{latexindent.pl} to overwrite the files in your repository,
+ then you can update \cref{lst:.pre-commit-config.yaml-cpan} so that
+ \texttt{args: [-s, -w]}.
\end{itemize}
Naturally you can add options, or omit \texttt{-s} and \texttt{-w}, according to your
@@ -8352,28 +8786,30 @@ latexindent.pl -s myfile.tex
\texttt{CPAN} for all dependencies, including \texttt{latexindent.pl} itself.
\index{conda} \index{git} \index{pre-commit!conda}
- \cmhlistingsfromfile{demonstrations/pre-commit-config-conda.yaml}[yaml-TCB]{\texttt{.pre-commit-config.yaml} (conda)}{lst:.pre-commit-config.yaml-conda}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/pre-commit-config-conda.yaml}[yaml-TCB]{\texttt{.pre-commit-config.yaml} (conda)}{lst:.pre-commit-config.yaml-conda}
Once created, you should then be able to run the following command:
\begin{commandshell}
-pre-commit run --all-files
+pre-commit run --all-files
\end{commandshell}
A few notes about \cref{lst:.pre-commit-config.yaml-cpan}:
\begin{itemize}
\item the settings given in \cref{lst:.pre-commit-config.yaml-conda} instruct
\texttt{pre-commit} to use \texttt{conda} to get dependencies;
- \item this requires \texttt{pre-commit} and \texttt{conda} to be installed on your system;
+ \item this requires \texttt{pre-commit} and \texttt{conda} to be installed on your
+ system;
\item the \texttt{args} lists selected command-line options; the settings in
\cref{lst:.pre-commit-config.yaml-cpan} are equivalent to calling
\begin{commandshell}
-conda run latexindent.pl -s myfile.tex
+conda run latexindent.pl -s myfile.tex
\end{commandshell}
for each \texttt{.tex} file in your repository;
- \item to instruct \texttt{latexindent.pl} to overwrite the files in your repository, then you
- can update \cref{lst:.pre-commit-config.yaml-cpan} so that \texttt{args: [-s, -w]}.
+ \item to instruct \texttt{latexindent.pl} to overwrite the files in your repository,
+ then you can update \cref{lst:.pre-commit-config.yaml-cpan} so that
+ \texttt{args: [-s, -w]}.
\end{itemize}
\subsection{pre-commit using docker}\label{sec:pre-commit-docker}
@@ -8382,7 +8818,7 @@ conda run latexindent.pl -s myfile.tex
\texttt{CPAN} for all dependencies, including \texttt{latexindent.pl} itself.
\index{docker} \index{git} \index{pre-commit!docker}
- \cmhlistingsfromfile{demonstrations/pre-commit-config-docker.yaml}[yaml-TCB]{\texttt{.pre-commit-config.yaml} (docker)}{lst:.pre-commit-config.yaml-docker}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/pre-commit-config-docker.yaml}[yaml-TCB]{\texttt{.pre-commit-config.yaml} (docker)}{lst:.pre-commit-config.yaml-docker}
Once created, you should then be able to run the following command:
\begin{commandshell}
@@ -8393,7 +8829,8 @@ pre-commit run --all-files
\begin{itemize}
\item the settings given in \cref{lst:.pre-commit-config.yaml-docker} instruct
\texttt{pre-commit} to use \texttt{docker} to get dependencies;
- \item this requires \texttt{pre-commit} and \texttt{docker} to be installed on your system;
+ \item this requires \texttt{pre-commit} and \texttt{docker} to be installed on your
+ system;
\item the \texttt{args} lists selected command-line options; the settings in
\cref{lst:.pre-commit-config.yaml-cpan} are equivalent to calling
@@ -8402,8 +8839,9 @@ docker run -v /path/to/myfile.tex:/myfile.tex ghcr.io/cmhughes/latexindent.pl -s
\end{commandshell}
for each \texttt{.tex} file in your repository;
- \item to instruct \texttt{latexindent.pl} to overwrite the files in your repository, then you
- can update \cref{lst:.pre-commit-config.yaml-cpan} so that \texttt{args: [-s, -w]}.
+ \item to instruct \texttt{latexindent.pl} to overwrite the files in your repository,
+ then you can update \cref{lst:.pre-commit-config.yaml-cpan} so that
+ \texttt{args: [-s, -w]}.
\end{itemize}
\subsection{pre-commit example using -l, -m switches}
@@ -8422,11 +8860,11 @@ modifyLineBreaks:
and \texttt{.pre-commit-config.yaml} as in \cref{lst:.latexindent.yaml-switches}:
- \cmhlistingsfromfile{demonstrations/pre-commit-config-demo.yaml}[yaml-TCB]{\texttt{.pre-commit-config.yaml} (demo)}{lst:.latexindent.yaml-switches}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/pre-commit-config-demo.yaml}[yaml-TCB]{\texttt{.pre-commit-config.yaml} (demo)}{lst:.latexindent.yaml-switches}
Now running
\begin{commandshell}
-pre-commit run --all-files
+pre-commit run --all-files
\end{commandshell}
is equivalent to running
@@ -8439,14 +8877,137 @@ latexindent.pl -l -m -s -w myfile.tex
A few notes about \cref{lst:.latexindent.yaml-switches}:
\begin{itemize}
- \item the \texttt{-l} option was added to use the local \texttt{.latexindent.yaml} (where it
- was specified to only create one back-up file, as \texttt{git} typically takes care of
- this when you use \texttt{pre-commit});
+ \item the \texttt{-l} option was added to use the local \texttt{.latexindent.yaml}
+ (where it was specified to only create one back-up file, as \texttt{git}
+ typically takes care of this when you use \texttt{pre-commit});
\item \texttt{-m} to modify line breaks; in addition to \texttt{-s} to suppress command-line
output, and \texttt{-w} to format files in place.
\end{itemize}
\end{example}
+ \section{indentconfig options}\label{app:indentconfig:options}
+ This section describes the possible locations for the main configuration file,
+ discussed in \cref{sec:indentconfig}. Thank you to \cite{nehctargl} for this
+ contribution. \announce*{2023-01-01}{indentconfig location options}
+
+ The possible locations of \texttt{indentconfig.yaml} are evaluated one after the other,
+ and evaluation stops when a valid file is found in one of the paths.
+
+ Before stating the list, we give summarise in \cref{tab:environment:summary}.
+ \begin{table}[!htb]
+ \centering
+ \caption{indentconfig environment variable summaries}
+ \label{tab:environment:summary}
+ \begin{tabular}{lllll}
+ \toprule
+ environment variable & type & Linux & macOS & Windows \\
+ \midrule
+ LATEXINDENT\_CONFIG & full path to file & \faCheck & \faCheck & \faCheck \\
+ XDG\_CONFIG\_HOME & directory path & \faCheck & \faClose & \faClose \\
+ LOCALAPPDATA & directory path & \faClose & \faClose & \faCheck \\
+ \bottomrule
+ \end{tabular}
+ \end{table}
+
+ The following list shows the checked options and is sorted by their respective
+ priority. It uses capitalized and with a dollar symbol prefixed names (e.g.
+ \texttt{\$LATEXINDENT\_CONFIG}) to symbolize environment variables. In addition to that
+ the variable name \texttt{\$homeDir} is used to symbolize your home directory.
+
+ \begin{enumerate}
+ \item The value of the environment variable \texttt{\$LATEXINDENT\_CONFIG} is treated
+ as highest priority source for the path to the configuration file.
+ \item The next options are dependent on your operating system:
+ \begin{itemize}
+ \item Linux:
+ \begin{enumerate}
+ \item The file at
+ \texttt{\$XDG\_CONFIG\_HOME/latexindent/indentconfig.yaml}
+ \item The file at
+ \texttt{\$homeDir/.config/latexindent/indentconfig.yaml}
+ \end{enumerate}
+ \item Windows:
+ \begin{enumerate}
+ \item The file at
+ \texttt{\$LOCALAPPDATA\textbackslash{}latexindent\textbackslash{}indentconfig.yaml}
+ \item The file at
+ \texttt{\$homeDir\textbackslash{}AppData\textbackslash{}Local\textbackslash{}latexindent\textbackslash{}indentconfig.yaml}
+ \end{enumerate}
+ \item Mac:
+ \begin{enumerate}
+ \item The file at
+ \texttt{\$homeDir/Library/Preferences/latexindent/indentconfig.yaml}
+ \end{enumerate}
+ \end{itemize}
+ \item The file at \texttt{\$homeDir/.indentconfig.yaml}
+ \item The file at \texttt{\$homeDir/indentconfig.yaml}
+ \end{enumerate}
+ \subsection{Why to change the configuration location}
+ This is mostly a question about what you prefer, some like to put all their configuration files in their home directory (see \texttt{\$homeDir} above),
+ whilst some like to sort their configuration. And if you don't care about it, you can just continue using the same defaults.
+ \subsection{How to change the configuration location}
+ This depends on your preferred location, if, for example, you would like to set a custom location, you would have to change the \texttt{\$LATEXINDENT\_CONFIG} environment variable.
+
+ Although the following example only covers \texttt{\$LATEXINDENT\_CONFIG}, the same
+ process can be applied to \texttt{\$XDG\_CONFIG\_HOME} or \texttt{\$LOCALAPPDATA}
+ because both are environment variables. You just have to change the path to your chosen
+ configuration directory (e.g. \texttt{\$homeDir/.config} or
+ \texttt{\$homeDir\textbackslash{}AppData\textbackslash{}Local} on Linux or Windows
+ respectively)
+ \subsubsection{Linux}
+ To change \texttt{\$LATEXINDENT\_CONFIG} on Linux you can run the following command in
+ a terminal after changing the path:
+ \begin{widepage}
+
+ \begin{commandshell}
+echo 'export LATEXINDENT_CONFIG="/home/cmh/latexindent-config.yaml"' >> ~/.profile
+ \end{commandshell}
+
+ \end{widepage}
+ Context: This command adds the given line to your \texttt{.profile} file (which is
+ commonly stored in \texttt{\$HOME/.profile}). All commands in this file a run after
+ login, so the environment variable will be set after your next login.
+
+ You can check the value of \texttt{\$LATEXINDENT\_CONFIG} by typing
+
+ \begin{commandshell}
+echo $LATEXINDENT_CONFIG
+/home/cmh/latexindent-config.yaml
+ \end{commandshell}
+
+ Linux users interested in \texttt{\$XDG\_CONFIG\_HOME} can explore variations of the
+ following commands
+
+ \begin{commandshell}
+echo $XDG_CONFIG_HOME
+echo ${XDG_CONFIG_HOME:=$HOME/.config}
+echo $XDG_CONFIG_HOME
+mkdir /home/cmh/.config/latexindent
+touch /home/cmh/.config/latexindent/indentconfig.yaml
+ \end{commandshell}
+
+ \subsubsection{Windows}
+ To change \texttt{\$LATEXINDENT\_CONFIG} on Windows you can run the following command
+ in \texttt{powershell.exe} after changing the path:
+ \begin{widepage}
+ \begin{dosprompt}
+[Environment]::SetEnvironmentVariable
+ ("LATEXINDENT_CONFIG", "\your\config\path", "User")
+ \end{dosprompt}
+ \end{widepage}
+ This sets the environment variable for every user session.
+ \subsubsection{Mac}
+ To change \texttt{\$LATEXINDENT\_CONFIG} on macOS you can run the following command in
+ a terminal after changing the path:
+
+ \begin{commandshell}
+echo 'export LATEXINDENT_CONFIG="/your/config/path"' >> ~/.profile
+ \end{commandshell}
+
+ Context: This command adds the line to your \texttt{.profile} file (which is commonly
+ stored in \texttt{\$HOME/.profile}). All commands in this file a run after login, so
+ the environment variable will be set after your next login.
+
\section{logFilePreferences}\label{app:logfile-demo}
\Vref{lst:logFilePreferences} describes the options for customising the information given
to the log file, and we provide a few demonstrations here.
@@ -8460,13 +9021,13 @@ latexindent.pl -l -m -s -w myfile.tex
\end{minipage}
\hfill
\begin{minipage}{.6\linewidth}
- \cmhlistingsfromfile{demonstrations/logfile-prefs1.yaml}[yaml-TCB]{\texttt{logfile-prefs1.yaml}}{lst:logfile-prefs1-yaml}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/logfile-prefs1.yaml}[yaml-TCB]{\texttt{logfile-prefs1.yaml}}{lst:logfile-prefs1-yaml}
\end{minipage}
If we run the following command (noting that \texttt{-t} is active)
\begin{commandshell}
-latexindent.pl -t -l=logfile-prefs1.yaml simple.tex
+latexindent.pl -t -l=logfile-prefs1.yaml simple.tex
\end{commandshell}
then on inspection of \texttt{indent.log} we will find the snippet given in
@@ -8492,8 +9053,8 @@ TRACE: Searching myenv for optional and mandatory arguments
\end{example}
\section{Encoding indentconfig.yaml}\label{app:encoding}
- In relation to \vref{sec:indentconfig}, Windows users that encounter encoding issues with
- \texttt{indentconfig.yaml}, may wish to run the following command in either
+ In relation to \vref{sec:indentconfig}, Windows users that encounter encoding issues
+ with \texttt{indentconfig.yaml}, may wish to run the following command in either
\texttt{cmd.exe} or \texttt{powershell.exe}:
\begin{dosprompt}
chcp
@@ -8505,7 +9066,7 @@ Active code page: 936
and can then use the settings given in \cref{lst:indentconfig-encoding1} within their
\texttt{indentconfig.yaml}, where 936 is the result of the \texttt{chcp} command.
- \cmhlistingsfromfile{demonstrations/encoding1.yaml}[yaml-TCB]{\texttt{encoding} demonstration for \texttt{indentconfig.yaml}}{lst:indentconfig-encoding1}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/encoding1.yaml}[yaml-TCB]{\texttt{encoding} demonstration for \texttt{indentconfig.yaml}}{lst:indentconfig-encoding1}
\section{dos2unix linebreak adjustment}
@@ -8525,8 +9086,8 @@ latexindent.pl -y="dos2unixlinebreaks:1" myfile.tex
\section{Differences from Version 2.2 to 3.0}\label{app:differences}
There are a few (small) changes to the interface when comparing Version 2.2 to Version
- 3.0. Explicitly, in previous versions you might have run, for example, \index{switches!-o
- demonstration}
+ 3.0. Explicitly, in previous versions you might have run, for example,
+ \index{switches!-o demonstration}
\begin{commandshell}
latexindent.pl -o myfile.tex outputfile.tex
@@ -8538,43 +9099,44 @@ latexindent.pl -o myfile.tex outputfile.tex
\begin{commandshell}
latexindent.pl -o=outputfile.tex myfile.tex
latexindent.pl -o outputfile.tex myfile.tex
-latexindent.pl myfile.tex -o outputfile.tex
-latexindent.pl myfile.tex -o=outputfile.tex
-latexindent.pl myfile.tex -outputfile=outputfile.tex
-latexindent.pl myfile.tex -outputfile outputfile.tex
+latexindent.pl myfile.tex -o outputfile.tex
+latexindent.pl myfile.tex -o=outputfile.tex
+latexindent.pl myfile.tex -outputfile=outputfile.tex
+latexindent.pl myfile.tex -outputfile outputfile.tex
\end{commandshell}
noting that the \emph{output} file is given \emph{next to} the \texttt{-o} switch.
- The fields given in \cref{lst:obsoleteYaml} are \emph{obsolete} from Version 3.0 onwards.
- \cmhlistingsfromfile{demonstrations/obsolete.yaml}[yaml-obsolete]{Obsolete YAML fields from Version 3.0}{lst:obsoleteYaml}
+ The fields given in \cref{lst:obsoleteYaml} are \emph{obsolete} from Version 3.0
+ onwards.
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/obsolete.yaml}[yaml-obsolete]{Obsolete YAML fields from Version 3.0}{lst:obsoleteYaml}
- There is a slight difference when specifying indentation after headings; specifically, we
- now write \texttt{indentAfterThisHeading} instead of \texttt{indent}. See
+ There is a slight difference when specifying indentation after headings; specifically,
+ we now write \texttt{indentAfterThisHeading} instead of \texttt{indent}. See
\cref{lst:indentAfterThisHeadingOld,lst:indentAfterThisHeadingNew}
\begin{minipage}{.45\textwidth}
- \cmhlistingsfromfile{demonstrations/indentAfterThisHeadingOld.yaml}[yaml-TCB]{\texttt{indentAfterThisHeading} in Version 2.2}{lst:indentAfterThisHeadingOld}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/indentAfterThisHeadingOld.yaml}[yaml-TCB]{\texttt{indentAfterThisHeading} in Version 2.2}{lst:indentAfterThisHeadingOld}
\end{minipage}%
\hfill
\begin{minipage}{.45\textwidth}
- \cmhlistingsfromfile{demonstrations/indentAfterThisHeadingNew.yaml}[yaml-TCB]{\texttt{indentAfterThisHeading} in Version 3.0}{lst:indentAfterThisHeadingNew}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/indentAfterThisHeadingNew.yaml}[yaml-TCB]{\texttt{indentAfterThisHeading} in Version 3.0}{lst:indentAfterThisHeadingNew}
\end{minipage}%
- To specify \texttt{noAdditionalIndent} for display-math environments in Version 2.2, you
- would write YAML as in \cref{lst:noAdditionalIndentOld}; as of Version 3.0, you would
- write YAML as in \cref{lst:indentAfterThisHeadingNew1} or, if you're using \texttt{-m}
- switch, \cref{lst:indentAfterThisHeadingNew2}. \index{specialBeginEnd!update to
- displaymath V3.0}
+ To specify \texttt{noAdditionalIndent} for display-math environments in Version 2.2,
+ you would write YAML as in \cref{lst:noAdditionalIndentOld}; as of Version 3.0, you
+ would write YAML as in \cref{lst:indentAfterThisHeadingNew1} or, if you're using
+ \texttt{-m} switch, \cref{lst:indentAfterThisHeadingNew2}.
+ \index{specialBeginEnd!update to displaymath V3.0}
\begin{minipage}{.45\textwidth}
- \cmhlistingsfromfile{demonstrations/noAddtionalIndentOld.yaml}[yaml-TCB]{\texttt{noAdditionalIndent} in Version 2.2}{lst:noAdditionalIndentOld}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/noAddtionalIndentOld.yaml}[yaml-TCB]{\texttt{noAdditionalIndent} in Version 2.2}{lst:noAdditionalIndentOld}
\end{minipage}%
\hfill
\begin{minipage}{.45\textwidth}
- \cmhlistingsfromfile{demonstrations/noAddtionalIndentNew.yaml}[yaml-TCB]{\texttt{noAdditionalIndent} for \texttt{displayMath} in Version 3.0}{lst:indentAfterThisHeadingNew1}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/noAddtionalIndentNew.yaml}[yaml-TCB]{\texttt{noAdditionalIndent} for \texttt{displayMath} in Version 3.0}{lst:indentAfterThisHeadingNew1}
- \cmhlistingsfromfile{demonstrations/noAddtionalIndentNew1.yaml}[yaml-TCB]{\texttt{noAdditionalIndent} for \texttt{displayMath} in Version 3.0}{lst:indentAfterThisHeadingNew2}
+ \cmhlistingsfromfile[style=yaml-LST]{demonstrations/noAddtionalIndentNew1.yaml}[yaml-TCB]{\texttt{noAdditionalIndent} for \texttt{displayMath} in Version 3.0}{lst:indentAfterThisHeadingNew2}
\end{minipage}%
\mbox{}\hfill
diff --git a/support/latexindent/latexindent.pl b/support/latexindent/latexindent.pl
index c9fc83e1d3..e4a9dc2092 100755
--- a/support/latexindent/latexindent.pl
+++ b/support/latexindent/latexindent.pl
@@ -1,5 +1,5 @@
#!/usr/bin/env perl
-# latexindent.pl, version 3.19.1, 2022-12-04
+# latexindent.pl, version 3.20, 2023-01-01
#
# 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
diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
index 7c78d761f0..b8ede9f5f5 100644
--- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
@@ -47,6 +47,7 @@ $mirrors = {
'https://cran.asia/tex/' => 1,
'https://ftp.kaist.ac.kr/pub/tex-archive/' => 1,
'https://lab.uklee.pe.kr/tex-archive/' => 1,
+ 'https://mirror.kakao.com/CTAN/' => 1,
'https://mirror.navercorp.com/CTAN/' => 1,
},
'Philippines' => {
@@ -71,7 +72,6 @@ $mirrors = {
'https://mirror.datacenter.by/pub/mirrors/CTAN/' => 1,
},
'Czech Republic' => {
- 'http://ftp.cvut.cz/tex-archive/' => 1,
'https://mirrors.nic.cz/tex-archive/' => 1,
},
'Denmark' => {
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 256ce35156..8ea11483de 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
@@ -26,11 +26,11 @@ depend container_split_src_files/1
depend frozen/0
depend minrelease/2016
depend release/2022
-depend revision/65410
+depend revision/65419
name 00texlive.image
category TLCore
-revision 65400
+revision 65415
shortdesc TeX Live files only in the source repository
longdesc The files here are not copied by the installer and containers
longdesc are not built for them; they exist only in the source
@@ -1964,6 +1964,7 @@ runfiles size=12956
tlpkg/tlpsrc/getmap.tlpsrc
tlpkg/tlpsrc/getoptk.tlpsrc
tlpkg/tlpsrc/gettitlestring.tlpsrc
+ tlpkg/tlpsrc/gfdl.tlpsrc
tlpkg/tlpsrc/gfnotation.tlpsrc
tlpkg/tlpsrc/gfsartemisia.tlpsrc
tlpkg/tlpsrc/gfsbaskerville.tlpsrc
@@ -4691,7 +4692,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd
name 00texlive.installer
category TLCore
-revision 65402
+revision 65412
shortdesc TeX Live standalone installer package
longdesc This package defines the files to go into the installer
longdesc archives (install-tl-unx.tar.gz, install-tl.zip) built by the
@@ -24864,7 +24865,7 @@ catalogue-version 0.2
name asmeconf
category Package
-revision 64435
+revision 65413
shortdesc A LaTeX template for ASME conference papers
relocated 1
longdesc The asmeconf class provides a LaTeX template for ASME
@@ -24883,11 +24884,11 @@ longdesc archivability (PDF/A), and multilingual support. The code is
longdesc compatible with pdfLaTeX or LuaLaTeX. This LaTeX template is
longdesc not a publication of ASME, but it does conform to ASME's
longdesc currently published guidelines for conference papers.
-containersize 29172
-containerchecksum 31f5688bb7aff1357e21aaa4d883aeaaa6055c56dca8ed7a12aeb8fd5cbad746d48c12b9633f7337dbfb20e6891e6eafbe8392292ae96163f957c64eae936d8b
-doccontainersize 2655724
-doccontainerchecksum 9a77c31532fb1a7e8efe51d84773ff3b9815efb3c8002bad5395b78bda52822388ce9e23b1f5e7a20143ef054b102d9ce4aed1ae737a726a9ef696989b6e982e
-docfiles size=2099
+containersize 29280
+containerchecksum e2545a50595a8276de018afb6037f9d05a5e39ca9bda61b893ba75c61237702f4cb310df75b8c2daca88a4e46683f475e1ad7a1dac5641100f61d25202e952d3
+doccontainersize 2772884
+doccontainerchecksum 1f8587342100f63b3918ff5f11845f9fb10deb193215abbddf5f08ecff232889bbc28ef0f80287fe66420ce5bafa29917c239540ba1b0c860090564c5b3910f8
+docfiles size=2106
RELOC/doc/latex/asmeconf/README.md details="Readme"
RELOC/doc/latex/asmeconf/asmeconf-sample.bib
RELOC/doc/latex/asmeconf/asmeconf-template.pdf details="Example of use"
@@ -24912,12 +24913,11 @@ runfiles size=34
RELOC/bibtex/bst/asmeconf/asmeconf.bst
RELOC/tex/latex/asmeconf/asmeconf.cls
catalogue-contact-bugs https://github.com/John02139/asmeconf/issues
-catalogue-contact-repository https://github.com/John02139/asmeconf
catalogue-contact-support https://github.com/John02139/asmeconf/issues
catalogue-ctan /macros/latex/contrib/asmeconf
catalogue-license mit
catalogue-topics bibtex-sty class confproc engineering scientific-docs
-catalogue-version 1.32
+catalogue-version 1.34
name asmejour
category Package
@@ -72950,7 +72950,7 @@ containerchecksum 508276fe37018f3d9773fc7cda0cb37edcdd28e9cf8ab54ed5be16b07c2066
name collection-publishers
category Collection
-revision 65221
+revision 65415
shortdesc Publisher styles, theses, etc.
relocated 1
depend aastex
@@ -73031,6 +73031,7 @@ depend ftc-notebook
depend gaceta
depend gammas
depend geradwp
+depend gfdl
depend gradstudentresume
depend grant
depend gsemthesis
@@ -73225,8 +73226,8 @@ depend yathesis
depend yazd-thesis
depend yb-book
depend york-thesis
-containersize 1668
-containerchecksum 550fb7f9dd937a7ac66772d7a9f733c9ccd07b79a18d5faa333c66db823528848c8d1f7ac726ef97c4d5df3a87ae807646d5b932ddfa82e256ce3c6d1e917d3b
+containersize 1672
+containerchecksum 211b17425be5150287a6fe82c1cb85d6be96c5b52d0b45c5b78a7a36ca1be581f586178d9f76bdcc221a4ae718a39f06d4c157389b552a663d547417f10dcec0
name collection-texworks
category Collection
@@ -108776,18 +108777,18 @@ catalogue-version 1.24.12
name elegantbook
category Package
-revision 64122
+revision 65414
shortdesc An Elegant LaTeX Template for Books
relocated 1
longdesc ElegantBook is designed for writing Books. This template is
longdesc based on the standard LaTeX book class. The goal of this
longdesc template is to make the writing process more elegant. Just
longdesc enjoy it!
-containersize 11876
-containerchecksum 94aa945b18f42ee388a5d13fdb29d433cd11099479578d3537593927a85cca1e14c9ddbec36f2c54922472acad1c674ea64eb13ada14b10a1fc1fb7880c64a39
-doccontainersize 1849624
-doccontainerchecksum 222a7e1d39a8c394aab7b9923e5f5df9c03671a505df66dbf76c2b4f45f7dea6adccabab014386bc3c0229b471d30026765c0614847b516ac98ec201ba6428cf
-docfiles size=814
+containersize 12144
+containerchecksum 264f81b48d48e4accc51fbae8c1923f15ca1e5d4b0b6a713a0d45a2e7335ea369d4166496c593fbe8fa34a2ae82bfd04a93b26b3bc5dad4a7615963f5c44f900
+doccontainersize 1697844
+doccontainerchecksum 1309c27f1bc7192904bcaba6a9d2b350eda77da4ac8c429026628573a23336f3dd76cd2651aed378841c7462d478d31c4f56953f92fa23d477203d7562c5cc50
+docfiles size=733
RELOC/doc/latex/elegantbook/License
RELOC/doc/latex/elegantbook/README.md details="Readme"
RELOC/doc/latex/elegantbook/elegantbook-cn.pdf details="Package documentation (Chinese)" language="zh"
@@ -108796,35 +108797,30 @@ docfiles size=814
RELOC/doc/latex/elegantbook/elegantbook-en.tex
RELOC/doc/latex/elegantbook/figure/cover.jpg
RELOC/doc/latex/elegantbook/figure/logo-blue.png
- RELOC/doc/latex/elegantbook/image/donate.jpg
RELOC/doc/latex/elegantbook/image/founder.png
RELOC/doc/latex/elegantbook/image/scatter.jpg
RELOC/doc/latex/elegantbook/reference.bib
-runfiles size=12
+runfiles size=13
RELOC/tex/latex/elegantbook/elegantbook.cls
-catalogue-contact-announce https://elegantlatex.org/
-catalogue-contact-home https://elegantlatex.org/
-catalogue-contact-repository https://github.com/ElegantLaTeX/ElegantBook
-catalogue-contact-support https://github.com/ElegantLaTeX/ElegantBook/issues
catalogue-ctan /macros/latex/contrib/elegantbook
catalogue-license lppl1.3c
catalogue-topics class chinese book-pub
-catalogue-version 4.4
+catalogue-version 4.5
name elegantnote
category Package
-revision 62989
+revision 65414
shortdesc Elegant LaTeX Template for Notes
relocated 1
longdesc ElegantNote is designed for writing working papers, especially
longdesc for economics students. This template is based on the standard
longdesc LaTeX article class. The goal of this template is to make the
longdesc writing process easier and more comfortable.
-containersize 4880
-containerchecksum 1a9a64b8129ee9ef01c01447d62344adebe17ff5ba143b9ef4cf5ba048b2f2e9985f16438a7c261d6a079dd36b84f3c6dea8990c1a15827a3e06b34b5d19d848
-doccontainersize 883488
-doccontainerchecksum 75909518bf134585fd9965a5373c5827a5f6e45092453dadbb5b5fd961cd00e4445858619b8eddbc12bf304ac746a16b25764cd7424cd7056e9b13e85a490686
-docfiles size=248
+containersize 4804
+containerchecksum 266f8eeaf3eef44c88e276caa5d26834af92d7a5b092ec1f437fa7e111f8f9ab776c24e5fc685ff3b988751f0719952c77efbc920c1e346114a63b95ae92236c
+doccontainersize 897892
+doccontainerchecksum 2d02aacaec5eff4b451fc6e1033c9b091daab3fec66d1b6f16caa527e07efc355a64fd75098b295c76a2af30595558530c1ca0d47e6e8b8dd462f124358a2662
+docfiles size=252
RELOC/doc/latex/elegantnote/License
RELOC/doc/latex/elegantnote/README.md details="Readme"
RELOC/doc/latex/elegantnote/elegantnote-cn.pdf details="Package documentation (Chinese)" language="zh"
@@ -108838,29 +108834,25 @@ docfiles size=248
RELOC/doc/latex/elegantnote/image/scatter.py
runfiles size=4
RELOC/tex/latex/elegantnote/elegantnote.cls
-catalogue-contact-announce https://elegantlatex.org/
-catalogue-contact-home https://elegantlatex.org/
-catalogue-contact-repository https://github.com/ElegantLaTeX/ElegantNote
-catalogue-contact-support https://github.com/ElegantLaTeX/ElegantNote/issues
catalogue-ctan /macros/latex/contrib/elegantnote
catalogue-license lppl1.3c
catalogue-topics class
-catalogue-version 2.40
+catalogue-version 2.50
name elegantpaper
category Package
-revision 62989
+revision 65414
shortdesc An Elegant LaTeX Template for Working Papers
relocated 1
longdesc ElegantPaper is designed for writing working papers, especially
longdesc for economics students. This template is based on the standard
longdesc LaTeX article class. The goal of this template is to make the
longdesc writing process easier and more comfortable.
-containersize 4104
-containerchecksum 3bd9f2672985ab8689d0af08228e2c765fbc67bad898ae84787e68ac010ad7bdb521bf18531c1a653a4fdc9c765ff83e7457eae0ed2b0633151f3d030a611d95
-doccontainersize 558440
-doccontainerchecksum 460e77e3488e412d989739f6ffa8284a88af29aceed7e9da9e8869c09c6fec82a66f678f37bad5f71294e915b301aa5121af6e20f19a709acc45b9479b716cab
-docfiles size=149
+containersize 4000
+containerchecksum d056676507b37dc554132052887de6973e9e5acb3c650420e11608e5062e89bdfcc319df6d20abdb750fc6470b05d365a720b83bd897748e328191397c13f489
+doccontainersize 562168
+doccontainerchecksum bafee980465e29ec1edfb8667e7408f3a4abd81c812a5d97eb18d0ba386317b7ce2d9fe01a7ecf5c543e5ce21c9032c1ebc88f2367811275adad5b1bbf8bb6c8
+docfiles size=151
RELOC/doc/latex/elegantpaper/License
RELOC/doc/latex/elegantpaper/README.md details="Readme"
RELOC/doc/latex/elegantpaper/elegantpaper-cn.pdf details="Package documentation (Chinese)" language="zh"
@@ -108871,14 +108863,10 @@ docfiles size=149
RELOC/doc/latex/elegantpaper/reference.bib
runfiles size=3
RELOC/tex/latex/elegantpaper/elegantpaper.cls
-catalogue-contact-announce https://elegantlatex.org/
-catalogue-contact-home https://elegantlatex.org/
-catalogue-contact-repository https://github.com/ElegantLaTeX/ElegantPaper/
-catalogue-contact-support https://github.com/ElegantLaTeX/ElegantPaper/issues
catalogue-ctan /macros/latex/contrib/elegantpaper
catalogue-license lppl1.3c
catalogue-topics class
-catalogue-version 0.10
+catalogue-version 0.11
name elements
category Package
@@ -133333,6 +133321,44 @@ catalogue-license lppl1.3
catalogue-topics macro-supp
catalogue-version 1.6
+name gfdl
+category Package
+revision 65415
+shortdesc Support for using GFDL in LaTeX
+relocated 1
+longdesc The GFDL (GNU Free Documentation License) is a popular license
+longdesc used for programming manuals, documentations and various other
+longdesc textual works too, but using this license with LaTeX is not
+longdesc very convenient. This package aims to help users in easily
+longdesc using the license without violating any rules of the license.
+longdesc With a handful of commands, users can rest assured that their
+longdesc document will be perfectly licensed under GFDL.
+containersize 11824
+containerchecksum d93bba6171e3179b559a26ce246b6de423c06d0ec4e360e33b4d140be07645b90aea070d41d988d0ddb22f6686789e96d9df5e3f1c8ff8cc23829b7be0d015db
+doccontainersize 168916
+doccontainerchecksum 24034eb02baab28efccb6569425229f6e2dd4a0254c926e9153eb6e8802d0cd18d9af7ff4229dc1f8b39fb5dddff767b33e026b12a3443cb3c62f1f0f5e64ade
+docfiles size=65
+ RELOC/doc/latex/gfdl/COPYING
+ RELOC/doc/latex/gfdl/README.txt details="Readme"
+ RELOC/doc/latex/gfdl/gfdl.pdf details="Package documentation"
+srccontainersize 6180
+srccontainerchecksum be816d4aa6547ae5e48201b5ec61618f2868422f2a3bb87422543ef4faa1461b8b7368a1dee29d36881e0e051b7d684ad90f5dac4b5f43dda70b5e11540c5b76
+srcfiles size=6
+ RELOC/source/latex/gfdl/gfdl.dtx
+ RELOC/source/latex/gfdl/gfdl.ins
+runfiles size=20
+ RELOC/tex/latex/gfdl/gfdl-tex-1p1.tex
+ RELOC/tex/latex/gfdl/gfdl-tex-1p2.tex
+ RELOC/tex/latex/gfdl/gfdl-tex-1p3.tex
+ RELOC/tex/latex/gfdl/gfdl.sty
+catalogue-contact-bugs https://puszcza.gnu.org.ua/bugs/?group=gfdl-tex
+catalogue-contact-home https://puszcza.gnu.org.ua/projects/gfdl-tex
+catalogue-contact-repository https://git.gnu.org.ua/gfdl-tex.git/
+catalogue-ctan /macros/latex/contrib/gfdl
+catalogue-license gpl3+ fdl
+catalogue-topics licence-mgmt
+catalogue-version 0.1
+
name gfnotation
category Package
revision 37156
@@ -165702,7 +165728,7 @@ catalogue-version 0.0.2
name keyvaltable
category Package
-revision 54677
+revision 65416
shortdesc Re-usable table layouts separating content and presentation
relocated 1
longdesc The main goal of this package is to offer means for typesetting
@@ -165712,26 +165738,26 @@ longdesc for tables of the same type. For this purpose, the package
longdesc provides the environment KeyValTable, which allows one to
longdesc typeset tables that have a previously defined column layout and
longdesc whose rows can be produced in a key-value fashion.
-containersize 8740
-containerchecksum 5f3f337347df00a955dd7d7694a51ecce15027580d2264da3f580cb9ea602f6e1583f41e72cbe39a5d4ffb36640eb26cd39132967e0e5a138de8703eb1651de7
-doccontainersize 459000
-doccontainerchecksum 7709c3ea7ad6fac4625620bc86bddeda751c6e36accf7b14b3dab2d5280c77ee4b704b2657511c4226efaffc7db79cb8eea068566ae099354920a522975dbef5
-docfiles size=117
+containersize 10088
+containerchecksum 733d7e2f07b07b1b7f0538f54c0dce33a706210203c9aaeb203c7c4129859d025d20a1afc973f5320102c89bcac78547213707802726367311625ab89566492b
+doccontainersize 902524
+doccontainerchecksum 7b3cf84548c2a8d997b8cb5ff3cdf77a40ff309220fb6d109fcb8215e78c8b93f44e495f3da7d92a3e144c1635473fe8780cc45acd9e978f12faa7dcbbff9893
+docfiles size=225
RELOC/doc/latex/keyvaltable/README.md details="Readme"
RELOC/doc/latex/keyvaltable/keyvaltable.pdf details="Package documentation"
-srccontainersize 37812
-srccontainerchecksum aeab384eab5a414cdee5162ccfea90284e9ccaa96129a2fcd77059abcdf2039350a8f6e17f4d5a7ea8759cf414daa620d12eb85ac42523ecfca70e6424e5df6c
-srcfiles size=42
+srccontainersize 42384
+srccontainerchecksum 0bed97c004ebb8aa8af13d226c10fa01e00459534a061d5bb9500e7d5376fd379f67310cb169e2c1fbcc0e07f4e5c35d096ef1ab65b92a1b78481fbd7e90e1b0
+srcfiles size=48
RELOC/source/latex/keyvaltable/keyvaltable.dtx
RELOC/source/latex/keyvaltable/keyvaltable.ins
-runfiles size=10
+runfiles size=11
RELOC/tex/latex/keyvaltable/keyvaltable.sty
catalogue-contact-bugs https://github.com/Ri-Ga/keyvaltable/issues
catalogue-contact-repository https://github.com/Ri-Ga/keyvaltable
catalogue-ctan /macros/latex/contrib/keyvaltable
catalogue-license lppl1.2
catalogue-topics table
-catalogue-version 2.2
+catalogue-version 2.3
name kfupm-math-exam
category Package
@@ -256674,7 +256700,7 @@ catalogue-version 1.0
name proflycee
category Package
-revision 65386
+revision 65417
shortdesc A LaTeX package for French maths teachers in high school
relocated 1
longdesc This package provides some commands to help French mathematics
@@ -256683,11 +256709,11 @@ longdesc create splines with "derivative control";
longdesc \CalculFormelParametres and \CalculFormelLigne in order to
longdesc create an xcas-windows-like; \CodePythonLstFichier to create
longdesc code presentation and code execution with pythontex.
-containersize 25988
-containerchecksum 0585915905a48af781a3413d87a83c58b0709c0b1cd304de62f324f5258294c65c471165fee53508d33876a1f5f7791eacb9dc466273ae56a611e07e4161a54f
-doccontainersize 1509640
-doccontainerchecksum 9585c0d7baa2ffbabfe3c097048b98ccaf77da8eaa065abc34a8f0464de3153d079a77ec3ba2c86bb24ff613f284a1fae383290f470fc67c2f90591cf13a716d
-docfiles size=513
+containersize 26784
+containerchecksum bacec4edacd3b408bd3f90c73035b5e1d72f31f44af91acaf9398c5082a7ebfe25a236db566bf9a403d97ae15367101da00656b20cd1bc6649f0b1916173ef3c
+doccontainersize 1531048
+doccontainerchecksum c5e572e7d09103e14cd8f219f6813fc1dbe1228f0367479c2cfbd50aece091123dfc1da02af10490188820154a5f0219151d1a1d595bcd14b0ff134c826ffa1d
+docfiles size=516
RELOC/doc/latex/proflycee/ProfLycee-doc.pdf details="Package documentation" language="fr"
RELOC/doc/latex/proflycee/ProfLycee-doc.tex
RELOC/doc/latex/proflycee/ProfLycee-old-doc.pdf
@@ -256709,7 +256735,7 @@ docfiles size=513
RELOC/doc/latex/proflycee/pl-doc-stats_d.png
RELOC/doc/latex/proflycee/pl-doc-stats_e.png
RELOC/doc/latex/proflycee/testscript.py
-runfiles size=59
+runfiles size=60
RELOC/tex/latex/proflycee/ProfLycee-old.sty
RELOC/tex/latex/proflycee/ProfLycee.sty
catalogue-also profcollege
@@ -256718,7 +256744,7 @@ catalogue-contact-repository https://github.com/cpierquet/ProfLycee
catalogue-ctan /macros/latex/contrib/proflycee
catalogue-license lppl1.3c
catalogue-topics maths french teaching expl3 pgf-tikz
-catalogue-version 2.1.1
+catalogue-version 2.1.3
name program
category Package
@@ -311795,7 +311821,7 @@ docfiles size=376
name texlive-scripts
category TLCore
-revision 65402
+revision 65412
shortdesc TeX Live infrastructure programs
longdesc Includes install-tl, tl-portable, rungs, etc.; not needed for
longdesc tlmgr to run but still ours. Not included in tlcritical.
@@ -311803,10 +311829,10 @@ depend texlive-scripts.ARCH
depend texlive.infra
execute addMap mathpple.map
postaction shortcut type=menu name="TeX Live command-line" cmd=TEXDIR/tlpkg/installer/tl-cmd.bat
-containersize 113708
-containerchecksum 17ebc79654b3ca1c2570bce55771278b1e6dec71b172376c2e53b74e99b1d652f5482705e3999f0c4f782829e378c7f6a559077af14eabf47dd0849a322ce797
-doccontainersize 424264
-doccontainerchecksum ed3b8fc0f3c58dd5a3a1917deda3360fff2ae60c0286366571f712bdd24f055c9563b00aff180f515e0f616632e80a949bf59a9cd57cdf7465b53d1bd9bc8517
+containersize 113712
+containerchecksum 9b3c40900208c7f75a4914bdc63e260c04d166e31d7f2e0ebc07e6c26a1e7cf346b213aa256ebe3461cb7e7fbe2740fec3a7b5d6c4f83fd9631d66f84d394661
+doccontainersize 424260
+doccontainerchecksum dc1c01aea689b14e67e974088433c1b0881941614690ee78e99611f7ab8533a28ade9337292e7182e17bd455fc02b0e96df137d37287dbea1dbf76a2bad873f9
docfiles size=533
doc.html
texmf-dist/doc/man/man1/fmtutil-sys.1
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index b513597139..5c2c8a5f33 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-ea0fe85256ff44690e961c4a468808a5 texlive.tlpdb
+041774a5cc315468aaafd4c978262853 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index d0bfce8cf0..4e5cf84494 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-4fe3e484d29b826e079c166d7347f68aa900bc7c285c7cc1ef8c0f5a77d94fc57180714e9366206777b49ab2730a4760b63b156b8129b17e33bba29ed6e0ffb3 texlive.tlpdb
+e3e26069d071f1bb3d42b23ef457be8b2264d0808eed7b977e50dbe52aa8648b56699e74564fa1bcd0c30671b776310c6f41522a934aad50323ce51a282a2477 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index 86d3f22ea8..2682047d43 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
@@ -1,10 +1,10 @@
-----BEGIN PGP SIGNATURE-----
-iQEcBAEBCgAGBQJjr4hJAAoJEEzhh34ZQ4xwh6wH/jCBWBreG4FCyXucyx0l0Lac
-To+F65TPVQ7JyecuyFsoOiAUeT2+dZ7CVqxUBfrx3aWDYmauHpjuHwR6UxYvypy1
-0yW9XEMRHgYbXmHwM3odVMzCd+jkOe9lfkxi5Bq5guxy8iMK+SMsz+h72j3sjI6R
-zwGuC6ppUZNPMQKO8xW1M01xuGOhX4j8pqgvNJTMkmsNkJ2NbddOvIQwso8ZNAb/
-JLzRxshARtb33PrQekO4NQxWU+BahB980eyPM+zryNNZfvQ9c6nkC+uQAKbR096q
-xNwW78ouTvNFyttx+w/Oq0cfXlgOJ+Y9OxIuxadA30I+LEkqaonguWCeIdpOWtU=
-=SLiS
+iQEcBAEBCgAGBQJjsNuMAAoJEEzhh34ZQ4xwng0IAIkPH9PYiYQPvo8SCYIwBXJ8
+Wqm7zYJmdevck081dz3SWrsptPWVx/KrRT/teG6p5RQSzoCVHsAQbxjnS3hz2bec
+DRlOwwhd7+Rnm2bislz25c6dsQvzBZQfCEAhYe00Yyl7Be7XSGgu+cI2m6I9xOiH
+F6br1rLMmHhjDtmjA11bzjUGlapoFOa36RekCtE+9CnqOgDwxAehCnwj1uDDeAoP
+oAbe//LR1kfdlZvMxprS1YBzef7gCPEajWGA7UieL/u33S4cvJNHidDssMnGEzuw
+xVLlYpXRpF7U+YPj3hvwFDjLGwbMYFYZjyOlJUr4sWkTqcAbklpg95LsCzdQGns=
+=APKP
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index a46661c807..c3cfd90e2f 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/timestamp b/timestamp
index 9657c88c36..408fd0f0a6 100644
--- a/timestamp
+++ b/timestamp
@@ -2,4 +2,4 @@
# The source CTAN of this site's material:
dante.ctan.org
# The year-month-day-hour-minute of this site's material:
-2023-01-01-02-02
+2023-01-02-02-02