summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-07-14 03:01:33 +0000
committerNorbert Preining <norbert@preining.info>2021-07-14 03:01:33 +0000
commit3303a89b11161d66ec78811056b85306f696cc09 (patch)
tree32dec4376d10f3e3aa82049a3388462e39914a70 /macros
parent4ac920a9909dd7d233ed3662bb576e1ae4ade873 (diff)
CTAN sync 202107140301
Diffstat (limited to 'macros')
-rw-r--r--macros/generic/xint/CHANGES.html152
-rw-r--r--macros/generic/xint/README.md6
-rw-r--r--macros/generic/xint/sourcexint.pdfbin1169039 -> 1170067 bytes
-rw-r--r--macros/generic/xint/xint.dtx413
-rw-r--r--macros/generic/xint/xint.pdfbin1056768 -> 1058034 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx419
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin569332 -> 568439 bytes
-rw-r--r--macros/latex/contrib/etoc/README.md146
-rw-r--r--macros/latex/contrib/etoc/etoc-DE.pdfbin566467 -> 583023 bytes
-rw-r--r--macros/latex/contrib/etoc/etoc.dtx293
-rw-r--r--macros/latex/contrib/etoc/etoc.pdfbin622143 -> 639634 bytes
-rw-r--r--macros/latex/contrib/ifallfalse/README.md10
-rw-r--r--macros/latex/contrib/ifallfalse/ifallfalse.dtx35
-rw-r--r--macros/latex/contrib/ifallfalse/ifallfalse.pdfbin163190 -> 176927 bytes
-rw-r--r--macros/latex/contrib/l3backend/CHANGELOG.md9
-rw-r--r--macros/latex/contrib/l3backend/README.md2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-basics.dtx23
-rw-r--r--macros/latex/contrib/l3backend/l3backend-box.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-code.pdfbin884350 -> 887250 bytes
-rw-r--r--macros/latex/contrib/l3backend/l3backend-color.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-draw.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-graphics.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-header.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-opacity.dtx59
-rw-r--r--macros/latex/contrib/l3backend/l3backend-pdf.dtx24
-rw-r--r--macros/latex/contrib/l3backend/l3backend.ins2
-rw-r--r--macros/latex/contrib/l3experimental/CHANGELOG.md8
-rw-r--r--macros/latex/contrib/l3experimental/README.md11
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.pdfbin308513 -> 308192 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3bitset.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3bitset.pdfbin404327 -> 404027 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-boxes.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-code.pdfbin653470 -> 653480 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-layers.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-paths.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-points.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-scopes.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-softpath.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-state.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-transforms.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.pdfbin516603 -> 516286 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3galley.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3galley.pdfbin408867 -> 408562 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.pdfbin383971 -> 383668 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3opacity.dtx140
-rw-r--r--macros/latex/contrib/l3experimental/l3opacity.ins58
-rw-r--r--macros/latex/contrib/l3experimental/l3opacity.pdfbin0 -> 334707 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3str-format.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3str-format.pdfbin367963 -> 367660 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.pdfbin347992 -> 347679 bytes
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.pdfbin394330 -> 394017 bytes
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.pdfbin299666 -> 299354 bytes
-rw-r--r--macros/latex/contrib/l3kernel/CHANGELOG.md11
-rw-r--r--macros/latex/contrib/l3kernel/README.md2
-rw-r--r--macros/latex/contrib/l3kernel/expl3.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/expl3.pdfbin623657 -> 623220 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.pdfbin1721426 -> 1720994 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3basics.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3bootstrap.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3box.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3candidates.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3cctab.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3clist.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3coffins.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3color.dtx17
-rw-r--r--macros/latex/contrib/l3kernel/l3debug.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3deprecation.dtx115
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.pdfbin151926 -> 151531 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3expan.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3file.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3flag.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-assign.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-aux.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-basics.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-convert.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-expo.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-extended.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-logic.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-parse.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-random.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-round.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-traps.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-trig.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fparray.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3int.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3intarray.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3kernel-functions.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3keys.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3legacy.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3luatex.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3msg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3names.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3news.pdfbin395907 -> 395907 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news01.pdfbin122713 -> 122713 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news02.pdfbin150672 -> 150672 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news03.pdfbin148707 -> 148707 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news04.pdfbin114588 -> 114588 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news05.pdfbin112485 -> 112485 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news06.pdfbin151572 -> 151572 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news07.pdfbin128312 -> 128312 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news08.pdfbin163455 -> 163455 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news09.pdfbin250134 -> 250134 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news10.pdfbin150289 -> 150289 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news11.pdfbin170069 -> 170069 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news12.pdfbin204992 -> 204992 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3pdf.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.csv1
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.pdfbin80464 -> 80515 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3prg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prop.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3quark.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3regex.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3seq.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3skip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3sort.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str-convert.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.pdfbin296381 -> 295936 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.pdfbin243052 -> 242611 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.pdfbin231439 -> 230998 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-case.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-purify.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-analysis.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3token.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3unicode.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/source3.pdfbin6840646 -> 6831125 bytes
-rw-r--r--macros/latex/contrib/l3kernel/source3.tex2
-rw-r--r--macros/latex/contrib/macrolist/README.md37
-rw-r--r--macros/latex/contrib/macrolist/macrolist.dtx325
-rw-r--r--macros/latex/contrib/macrolist/macrolist.ins45
-rw-r--r--macros/latex/contrib/macrolist/macrolist.pdfbin0 -> 183759 bytes
-rw-r--r--macros/latex/contrib/minimalist/minimalist-doc.pdfbin84066 -> 97018 bytes
-rw-r--r--macros/latex/contrib/minimalist/minimalist-doc.tex467
-rw-r--r--macros/latex/contrib/minimalist/minimalist.sty22
-rw-r--r--macros/latex/contrib/minimalist/minimart.cls2
-rw-r--r--macros/latex/contrib/minimalist/minimbook.cls2
-rw-r--r--macros/latex/contrib/uantwerpendocs/beamerthemeuantwerpenuserguide.pdfbin3218742 -> 3218647 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpenbamathesis-example.pdfbin87390 -> 89611 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpencoursetext-example.pdfbin137244 -> 94452 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpendocs.dtx3934
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpendocs.ins16
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpendocs.pdfbin382547 -> 348939 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpenexam-example1.pdfbin104918 -> 112604 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpenexam-example2.pdfbin151732 -> 114124 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpenletter-example.pdfbin58977 -> 49368 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example1.pdfbin217816 -> 221098 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example2.pdfbin298749 -> 303784 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpenreport-example.pdfbin0 -> 207486 bytes
-rw-r--r--macros/latex/contrib/yathesis/CHANGELOG.md14
-rw-r--r--macros/latex/contrib/yathesis/README.md2
-rw-r--r--macros/latex/contrib/yathesis/doc/yathesis-fr.pdfbin6373433 -> 6469140 bytes
-rw-r--r--macros/latex/contrib/yathesis/exemples/specimen/these.pdfbin1246063 -> 1261113 bytes
-rw-r--r--macros/latex/contrib/yathesis/exemples/specimen/these.tex3
-rw-r--r--macros/latex/contrib/yathesis/source/yathesis-samples-templates.dtx6
-rw-r--r--macros/latex/contrib/yathesis/source/yathesis.dtx457
-rw-r--r--macros/unicodetex/latex/einfart/einfart-doc-cn.pdfbin243292 -> 253109 bytes
-rw-r--r--macros/unicodetex/latex/einfart/einfart-doc-cn.tex411
-rw-r--r--macros/unicodetex/latex/einfart/einfart-doc-en.pdfbin150231 -> 155728 bytes
-rw-r--r--macros/unicodetex/latex/einfart/einfart-doc-en.tex426
-rw-r--r--macros/unicodetex/latex/einfart/einfart-doc-fr.pdfbin0 -> 163911 bytes
-rw-r--r--macros/unicodetex/latex/einfart/einfart-doc-fr.tex604
-rw-r--r--macros/unicodetex/latex/einfart/einfart.cls3
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre-doc-cn.pdfbin280225 -> 286036 bytes
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre-doc-cn.tex400
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre-doc-en.pdfbin184576 -> 185543 bytes
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre-doc-en.tex417
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre-doc-fr.pdfbin0 -> 188590 bytes
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre-doc-fr.tex511
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre.cls3
-rw-r--r--macros/xetex/generic/xetexko/ChangeLog6
-rw-r--r--macros/xetex/generic/xetexko/README2
-rw-r--r--macros/xetex/generic/xetexko/xetexko-doc.pdfbin255904 -> 255739 bytes
-rw-r--r--macros/xetex/generic/xetexko/xetexko-doc.tex2
-rw-r--r--macros/xetex/generic/xetexko/xetexko.sty6
190 files changed, 5985 insertions, 4276 deletions
diff --git a/macros/generic/xint/CHANGES.html b/macros/generic/xint/CHANGES.html
index c8a210a56a..eb355ab053 100644
--- a/macros/generic/xint/CHANGES.html
+++ b/macros/generic/xint/CHANGES.html
@@ -4,7 +4,7 @@
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
- <meta name="author" content="xint 1.4i" />
+ <meta name="author" content="xint 1.4j" />
<title>CHANGE LOG</title>
<style type="text/css">
code{white-space: pre-wrap;}
@@ -25,73 +25,76 @@
<body>
<header>
<h1 class="title">CHANGE LOG</h1>
-<p class="author">xint 1.4i</p>
-<p class="date">2021/06/11</p>
+<p class="author">xint 1.4j</p>
+<p class="date">2021/07/13</p>
</header>
<nav id="TOC">
<ul>
-<li><a href="#i-20210611"><code>1.4i (2021/06/11)</code></a><ul>
+<li><a href="#j-20210713"><code>1.4j (2021/07/13)</code></a><ul>
<li><a href="#bug-fixes">Bug fixes</a></li>
+</ul></li>
+<li><a href="#i-20210611"><code>1.4i (2021/06/11)</code></a><ul>
<li><a href="#new-features">New features</a></li>
+<li><a href="#bug-fixes-1">Bug fixes</a></li>
</ul></li>
<li><a href="#h-20210527"><code>1.4h (2021/05/27)</code></a><ul>
-<li><a href="#bug-fixes-1">Bug fixes</a></li>
+<li><a href="#bug-fixes-2">Bug fixes</a></li>
</ul></li>
<li><a href="#g-20210525"><code>1.4g (2021/05/25)</code></a><ul>
<li><a href="#breaking-changes">Breaking changes</a></li>
<li><a href="#deprecated">Deprecated</a></li>
-<li><a href="#bug-fixes-2">Bug fixes</a></li>
<li><a href="#new-features-1">New features</a></li>
+<li><a href="#bug-fixes-3">Bug fixes</a></li>
</ul></li>
<li><a href="#f-20210510"><code>1.4f (2021/05/10)</code></a><ul>
<li><a href="#breaking-changes-1">Breaking changes</a></li>
-<li><a href="#bug-fixes-3">Bug fixes</a></li>
+<li><a href="#bug-fixes-4">Bug fixes</a></li>
</ul></li>
<li><a href="#e-20210505"><code>1.4e (2021/05/05)</code></a><ul>
<li><a href="#breaking-changes-2">Breaking changes</a></li>
<li><a href="#new-features-2">New features</a></li>
-<li><a href="#bug-fixes-4">Bug fixes</a></li>
+<li><a href="#bug-fixes-5">Bug fixes</a></li>
</ul></li>
<li><a href="#d-20210329"><code>1.4d (2021/03/29)</code></a><ul>
<li><a href="#breaking-changes-3">Breaking changes</a></li>
-<li><a href="#bug-fixes-5">Bug fixes</a></li>
+<li><a href="#bug-fixes-6">Bug fixes</a></li>
</ul></li>
<li><a href="#c-20210220"><code>1.4c (2021/02/20)</code></a><ul>
-<li><a href="#bug-fixes-6">Bug fixes</a></li>
+<li><a href="#bug-fixes-7">Bug fixes</a></li>
</ul></li>
<li><a href="#b-20200225"><code>1.4b (2020/02/25)</code></a><ul>
<li><a href="#future">Future</a></li>
<li><a href="#new-features-3">New features</a></li>
-<li><a href="#bug-fixes-7">Bug fixes</a></li>
+<li><a href="#bug-fixes-8">Bug fixes</a></li>
</ul></li>
<li><a href="#a-20200219"><code>1.4a (2020/02/19)</code></a><ul>
<li><a href="#breaking-changes-4">Breaking changes</a></li>
<li><a href="#new-features-4">New features</a></li>
-<li><a href="#bug-fixes-8">Bug fixes</a></li>
+<li><a href="#bug-fixes-9">Bug fixes</a></li>
</ul></li>
<li><a href="#section"><code>1.4 (2020/01/31)</code></a><ul>
<li><a href="#breaking-changes-5">Breaking changes</a></li>
<li><a href="#improvements-and-new-features">Improvements and new features</a></li>
-<li><a href="#bug-fixes-9">Bug fixes</a></li>
+<li><a href="#bug-fixes-10">Bug fixes</a></li>
<li><a href="#todo">TODO</a></li>
</ul></li>
<li><a href="#f-20190910"><code>1.3f (2019/09/10)</code></a><ul>
<li><a href="#improvements-and-new-features-1">Improvements and new features</a></li>
-<li><a href="#bug-fixes-10">Bug fixes</a></li>
+<li><a href="#bug-fixes-11">Bug fixes</a></li>
</ul></li>
<li><a href="#e-20190405"><code>1.3e (2019/04/05)</code></a><ul>
<li><a href="#breaking-changes-6">Breaking changes</a></li>
<li><a href="#improvements-and-new-features-2">Improvements and new features</a></li>
-<li><a href="#bug-fixes-11">Bug fixes</a></li>
+<li><a href="#bug-fixes-12">Bug fixes</a></li>
</ul></li>
<li><a href="#d-20190106"><code>1.3d (2019/01/06)</code></a><ul>
<li><a href="#breaking-changes-7">Breaking changes</a></li>
<li><a href="#improvements-and-new-features-3">Improvements and new features</a></li>
-<li><a href="#bug-fixes-12">Bug fixes</a></li>
+<li><a href="#bug-fixes-13">Bug fixes</a></li>
</ul></li>
<li><a href="#c-20180617"><code>1.3c (2018/06/17)</code></a><ul>
<li><a href="#improvements-and-new-features-4">Improvements and new features</a></li>
-<li><a href="#bug-fixes-13">Bug fixes</a></li>
+<li><a href="#bug-fixes-14">Bug fixes</a></li>
</ul></li>
<li><a href="#b-20180518"><code>1.3b (2018/05/18)</code></a><ul>
<li><a href="#improvements-and-new-features-5">Improvements and new features</a></li>
@@ -99,7 +102,7 @@
<li><a href="#a-20180307"><code>1.3a (2018/03/07)</code></a><ul>
<li><a href="#removed">Removed</a></li>
<li><a href="#improvements-and-new-features-6">Improvements and new features</a></li>
-<li><a href="#bug-fixes-14">Bug fixes</a></li>
+<li><a href="#bug-fixes-15">Bug fixes</a></li>
</ul></li>
<li><a href="#section-1"><code>1.3 (2018/03/01)</code></a><ul>
<li><a href="#breaking-changes-8">Breaking changes</a></li>
@@ -107,12 +110,12 @@
</ul></li>
<li><a href="#q-20180206"><code>1.2q (2018/02/06)</code></a><ul>
<li><a href="#improvements-and-new-features-8">Improvements and new features</a></li>
-<li><a href="#bug-fixes-15">Bug fixes</a></li>
+<li><a href="#bug-fixes-16">Bug fixes</a></li>
</ul></li>
<li><a href="#p-20171205"><code>1.2p (2017/12/05)</code></a><ul>
<li><a href="#breaking-changes-9">Breaking changes</a></li>
<li><a href="#improvements-and-new-features-9">Improvements and new features</a></li>
-<li><a href="#bug-fixes-16">Bug fixes</a></li>
+<li><a href="#bug-fixes-17">Bug fixes</a></li>
</ul></li>
<li><a href="#o-20170829"><code>1.2o (2017/08/29)</code></a><ul>
<li><a href="#breaking-changes-10">Breaking changes</a></li>
@@ -125,31 +128,31 @@
<li><a href="#m-20170731"><code>1.2m (2017/07/31)</code></a><ul>
<li><a href="#breaking-changes-12">Breaking changes</a></li>
<li><a href="#improvements-and-new-features-11">Improvements and new features</a></li>
-<li><a href="#bug-fixes-17">Bug fixes</a></li>
+<li><a href="#bug-fixes-18">Bug fixes</a></li>
</ul></li>
<li><a href="#l-20170726"><code>1.2l (2017/07/26)</code></a><ul>
<li><a href="#removed-1">Removed</a></li>
<li><a href="#improvements-and-new-features-12">Improvements and new features</a></li>
-<li><a href="#bug-fixes-18">Bug fixes</a></li>
+<li><a href="#bug-fixes-19">Bug fixes</a></li>
</ul></li>
<li><a href="#k-20170106"><code>1.2k (2017/01/06)</code></a><ul>
<li><a href="#breaking-changes-13">Breaking changes</a></li>
<li><a href="#improvements-and-new-features-13">Improvements and new features</a></li>
-<li><a href="#bug-fixes-19">Bug fixes</a></li>
+<li><a href="#bug-fixes-20">Bug fixes</a></li>
</ul></li>
<li><a href="#j-20161222"><code>1.2j (2016/12/22)</code></a><ul>
<li><a href="#improvements-and-new-features-14">Improvements and new features</a></li>
-<li><a href="#bug-fixes-20">Bug fixes</a></li>
+<li><a href="#bug-fixes-21">Bug fixes</a></li>
</ul></li>
<li><a href="#i-20161213"><code>1.2i (2016/12/13)</code></a><ul>
<li><a href="#breaking-changes-14">Breaking changes</a></li>
<li><a href="#removed-2">Removed</a></li>
<li><a href="#improvements-and-new-features-15">Improvements and new features</a></li>
-<li><a href="#bug-fixes-21">Bug fixes</a></li>
+<li><a href="#bug-fixes-22">Bug fixes</a></li>
</ul></li>
<li><a href="#h-20161120"><code>1.2h (2016/11/20)</code></a><ul>
<li><a href="#improvements-and-new-features-16">Improvements and new features</a></li>
-<li><a href="#bug-fixes-22">Bug fixes</a></li>
+<li><a href="#bug-fixes-23">Bug fixes</a></li>
</ul></li>
<li><a href="#g-20160319"><code>1.2g (2016/03/19)</code></a><ul>
<li><a href="#breaking-changes-15">Breaking changes</a></li>
@@ -158,26 +161,26 @@
<li><a href="#f-20160312"><code>1.2f (2016/03/12)</code></a><ul>
<li><a href="#breaking-changes-16">Breaking changes</a></li>
<li><a href="#improvements-and-new-features-18">Improvements and new features</a></li>
-<li><a href="#bug-fixes-23">Bug fixes</a></li>
+<li><a href="#bug-fixes-24">Bug fixes</a></li>
</ul></li>
<li><a href="#e-20151122"><code>1.2e (2015/11/22)</code></a><ul>
<li><a href="#improvements-and-new-features-19">Improvements and new features</a></li>
-<li><a href="#bug-fixes-24">Bug fixes</a></li>
+<li><a href="#bug-fixes-25">Bug fixes</a></li>
</ul></li>
<li><a href="#d-20151118"><code>1.2d (2015/11/18)</code></a><ul>
<li><a href="#improvements-and-new-features-20">Improvements and new features</a></li>
-<li><a href="#bug-fixes-25">Bug fixes</a></li>
+<li><a href="#bug-fixes-26">Bug fixes</a></li>
</ul></li>
<li><a href="#c-20151116"><code>1.2c (2015/11/16)</code></a><ul>
<li><a href="#improvements-and-new-features-21">Improvements and new features</a></li>
-<li><a href="#bug-fixes-26">Bug fixes</a></li>
+<li><a href="#bug-fixes-27">Bug fixes</a></li>
</ul></li>
<li><a href="#b-20151029"><code>1.2b (2015/10/29)</code></a><ul>
-<li><a href="#bug-fixes-27">Bug fixes</a></li>
+<li><a href="#bug-fixes-28">Bug fixes</a></li>
</ul></li>
<li><a href="#a-20151019"><code>1.2a (2015/10/19)</code></a><ul>
<li><a href="#improvements-and-new-features-22">Improvements and new features</a></li>
-<li><a href="#bug-fixes-28">Bug fixes</a></li>
+<li><a href="#bug-fixes-29">Bug fixes</a></li>
</ul></li>
<li><a href="#section-2"><code>1.2 (2015/10/10)</code></a><ul>
<li><a href="#removed-3">Removed</a></li>
@@ -191,7 +194,7 @@
<li><a href="#removed-4">Removed</a></li>
<li><a href="#deprecated-2">Deprecated</a></li>
<li><a href="#improvements-and-new-features-24">Improvements and new features</a></li>
-<li><a href="#bug-fixes-29">Bug fixes</a></li>
+<li><a href="#bug-fixes-30">Bug fixes</a></li>
</ul></li>
<li><a href="#n-20140401"><code>1.09n (2014/04/01)</code></a></li>
<li><a href="#m-20140226"><code>1.09m (2014/02/26)</code></a></li>
@@ -219,24 +222,29 @@
<li><a href="#section-10"><code>1.0 (2013/03/28)</code></a></li>
</ul>
</nav>
-<pre><code>Source: xint.dtx 1.4i 2021/06/11 (doc 2021/06/11)
+<pre><code>Source: xint.dtx 1.4j 2021/07/13 (doc 2021/07/13)
Author: Jean-Francois Burnol
Info: Expandable operations on big integers, decimals, fractions
License: LPPL 1.3c</code></pre>
-<h2 id="i-20210611"><code>1.4i (2021/06/11)</code></h2>
+<h2 id="j-20210713"><code>1.4j (2021/07/13)</code></h2>
<h3 id="bug-fixes">Bug fixes</h3>
<ul>
-<li><p><strong>xintexpr</strong>: simultaneous assignments via <code>\xintdefvar</code> to 10 or more variables was broken if the right hand side was an ople (of length at least 10, as it had prior to this release to match the number of variables).</p></li>
-<li><p><strong>xintexpr</strong>: the mechanism which allows to define variables with names already in use for pre-existing functions was broken for some built-in functions: those handling syntax with dummy variables (currently <code>subs()</code>, <code>subsm()</code>, <code>subsn()</code>, <code>seq()</code>, <code>add()</code>, <code>mul()</code>, <code>ndseq()</code>, <code>ndmap()</code>, <code>ndfillraw()</code>) and the so-called “pseudo” functions (currently <code>bool()</code>, <code>togl()</code>, <code>protect()</code>, <code>qint()</code>, <code>qfrac()</code>, <code>qfloat()</code>, <code>qraw()</code>, <code>random()</code>, <code>qrand()</code>, <code>rbit()</code>). For example the function <code>seq()</code> was broken if the user had defined a variable <code>seq</code>.</p></li>
+<li><strong>xinttools</strong>: a brace removal bug affected the venerable <code>\xintSeq</code> if producing a single number (e.g. <code>\xintSeq{10}{10}</code> expanded to <code>10</code> not <code>{10}</code>). Thanks to Christophe Poulain for report.</li>
</ul>
+<h2 id="i-20210611"><code>1.4i (2021/06/11)</code></h2>
<h3 id="new-features">New features</h3>
<ul>
<li><p><strong>xintexpr</strong>: the concept of simultaneous assignments is extended: in case of more variables than values the extraneous variables do not cause an error message but are simply set to the <code>nil</code> value; in case of more values than variables, the last variable is defined to be the ople concatenating all the extra values.</p></li>
<li><p><strong>xintexpr</strong>: built-in functions usable with arbitrarily many arguments such as <code>max()</code>, <code>gcd()</code>, or <code>len()</code> are now again usable with a single numeric argument: since <code>1.4</code> a lone argument had to be a <code>nutple</code> (which was automatically unpacked). It can now again be a number.</p></li>
</ul>
-<h2 id="h-20210527"><code>1.4h (2021/05/27)</code></h2>
<h3 id="bug-fixes-1">Bug fixes</h3>
<ul>
+<li><p><strong>xintexpr</strong>: simultaneous assignments via <code>\xintdefvar</code> to 10 or more variables was broken if the right hand side was an ople (of length at least 10, as it had prior to this release to match the number of variables).</p></li>
+<li><p><strong>xintexpr</strong>: the mechanism which allows to define variables with names already in use for pre-existing functions was broken for some built-in functions: those handling syntax with dummy variables (currently <code>subs()</code>, <code>subsm()</code>, <code>subsn()</code>, <code>seq()</code>, <code>add()</code>, <code>mul()</code>, <code>ndseq()</code>, <code>ndmap()</code>, <code>ndfillraw()</code>) and the so-called “pseudo” functions (currently <code>bool()</code>, <code>togl()</code>, <code>protect()</code>, <code>qint()</code>, <code>qfrac()</code>, <code>qfloat()</code>, <code>qraw()</code>, <code>random()</code>, <code>qrand()</code>, <code>rbit()</code>). For example the function <code>seq()</code> was broken if the user had defined a variable <code>seq</code>.</p></li>
+</ul>
+<h2 id="h-20210527"><code>1.4h (2021/05/27)</code></h2>
+<h3 id="bug-fixes-2">Bug fixes</h3>
+<ul>
<li><p><strong>xintexpr</strong>: the recent <code>1.4g</code> introduced a bug breaking input of the type <code>&lt;operator&gt;&lt;space token&gt;&lt;macro&gt;</code>.</p></li>
<li><p><strong>xintexpr</strong>: since <code>1.4</code> (<code>2020/01/31</code>) the <code>omit</code> and <code>abort</code> keywords were broken if used inside a substitution, itself nested in a <code>seq()</code> or similar construct.</p></li>
<li><p><strong>xintexpr</strong>: since <code>1.4c</code> the <code>\xintthespaceseparated</code> (added at <code>1.4a</code>) inserted two, not one, spaces at one specific location near the end of its output. A bit cosmetic problem, fixed nevertheless.</p></li>
@@ -251,7 +259,12 @@ License: LPPL 1.3c</code></pre>
<ul>
<li><strong>xintfrac</strong>: old typesetting macros dating back to <code>1.03</code> and <code>1.04</code> releases <code>\xintFrac</code>, <code>\xintSignedFrac</code>, <code>\xintFwOver</code>, <code>\xintSignedFwOver</code> are deprecated. Please use the new names <code>\xintTeXFrac</code>, <code>\xintTeXsignedFrac</code>, <code>\xintTeXOver</code>, <code>\xintTeXsignedOver</code>. The old names will emit warnings.</li>
</ul>
-<h3 id="bug-fixes-2">Bug fixes</h3>
+<h3 id="new-features-1">New features</h3>
+<ul>
+<li><p>Messages written to the terminal and log file during the handling of recovery from exceptions use a new mechanism; when in interactive mode, the user is prompted only once, not thrice, to enter <code>&lt;return&gt;</code> for recovery and continued processing.</p></li>
+<li><p><strong>xintfrac</strong>: <code>\xintTeXfromSci</code> (added about 7 or 8 years too late) to help typesetting values output by <code>\xintfloateval</code> in a more useful way than <code>\xintTeXFrac</code> (formerly <code>\xintFrac</code>).</p></li>
+</ul>
+<h3 id="bug-fixes-3">Bug fixes</h3>
<ul>
<li><p><strong>xintexpr</strong>: with <strong>xintbinhex</strong> loaded, <code>&quot;</code> is recognized as prefix for hexadecimal input; but a bug (present ever since this support for hexadecimal input was added) caused syntax such as <code>&quot;\macro</code> to break the parser. Also, leading zeros such as in <code>&quot;0000A</code> where not properly trimmed since <code>1.2m</code>.</p></li>
<li><p><strong>xintexpr</strong>: authorize <code>x! == y</code> without parentheses. Formerly the parser mis-interpreted <code>!</code> as first character of the <code>!=</code> not-equal-to comparison operator, subsequently causing breakage when finding the second <code>=</code>.</p></li>
@@ -266,11 +279,6 @@ License: LPPL 1.3c</code></pre>
</ul>
<p>Surely, further situations remain where bad input will crash parser.</p></li>
</ul>
-<h3 id="new-features-1">New features</h3>
-<ul>
-<li><p>Messages written to the terminal and log file during the handling of recovery from exceptions use a new mechanism; when in interactive mode, the user is prompted only once, not thrice, to enter <code>&lt;return&gt;</code> for recovery and continued processing.</p></li>
-<li><p><strong>xintfrac</strong>: <code>\xintTeXfromSci</code> (added about 7 or 8 years too late) to help typesetting values output by <code>\xintfloateval</code> in a more useful way than <code>\xintTeXFrac</code> (formerly <code>\xintFrac</code>).</p></li>
-</ul>
<h2 id="f-20210510"><code>1.4f (2021/05/10)</code></h2>
<h3 id="breaking-changes-1">Breaking changes</h3>
<ul>
@@ -280,7 +288,7 @@ License: LPPL 1.3c</code></pre>
<li><p><strong>xintexpr</strong>: further changes in the computation of powers, see the bug fixes below.</p></li>
<li><p><strong>xintexpr</strong>: the <code>float_()</code> function got renamed into <code>float_dgt()</code>.</p></li>
</ul>
-<h3 id="bug-fixes-3">Bug fixes</h3>
+<h3 id="bug-fixes-4">Bug fixes</h3>
<ul>
<li><p><strong>xintexpr</strong>: the documentation said <code>float_()</code> function had been renamed <code>float_dgt()</code> but actually that was not yet the case.</p></li>
<li><p><strong>xintexpr</strong>: powers <code>a^b</code> (with exponent <code>b</code> neither integer nor half-integer) stopped being accurate regarding the last digits for <code>|b|</code> about <code>1000</code> and beyond. Except for <code>0.8&lt;a&lt;1.25</code> for which accuracy was maintained up to about <code>|b|=10^7</code>. Fixed via keeping the same suitable number of extra digits for internal computations of logarithms, independently of whether <code>a</code> is close to <code>1</code> or not.</p></li>
@@ -309,7 +317,7 @@ License: LPPL 1.3c</code></pre>
<li><p><strong>xintfrac</strong>: <code>\xintPFloatE</code> may be redefined as a macro which fetches the scientific exponent as a mandatory argument delimited with a dot, and outputs a suitable formatted result (f-expandably), also delimited with a dot which will be removed by internal processing. The default however simply expands to the letter <code>e</code>.</p></li>
<li><p><strong>xintfrac</strong>: <code>\xintDecToStringREZ</code> is like <code>\xintDecToString</code> but starts by removing trailing zeroes.</p></li>
</ul>
-<h3 id="bug-fixes-4">Bug fixes</h3>
+<h3 id="bug-fixes-5">Bug fixes</h3>
<ul>
<li><strong>xintfrac</strong>, <strong>xintexpr</strong>: it was not possible to use <code>\xinttheDigits</code> in the right hand side of an <code>\xintDigits</code> assignment. For example: <code>\xintDigits*:=\numexpr\xinttheDigits+4;</code>. This is now allowed, and the same applies to the macro interface, for example <code>\xintSetDigits*{\xinttheDigits+4}</code>.</li>
</ul>
@@ -320,7 +328,7 @@ License: LPPL 1.3c</code></pre>
<li><p>The output of <code>gcd()</code> and <code>lcm()</code> as applied to fractions is now always in lowest terms.</p></li>
<li><p>The log message to report a variable creation (if <code>\xintverbosetrue</code>) does not use (double) quotes anymore around the name. By the way, quotes were never used for function names.</p></li>
</ul>
-<h3 id="bug-fixes-5">Bug fixes</h3>
+<h3 id="bug-fixes-6">Bug fixes</h3>
<ul>
<li><p>Ever since <code>1.3</code> the <code>quo()</code> and <code>rem()</code> functions in <code>\xintexpr</code> (not the ones in <code>\xintiiexpr</code>) were broken as their (officially deprecated) support macros had been removed! They had somewhat useless definitions anyway. They have now been officially removed from the syntax. Their siblings in <code>\xintiieval</code> were renamed to <code>iquo()</code> and <code>irem()</code>.</p></li>
<li><p>Sadly, <code>gcd()</code> was broken in <code>\xintexpr</code> since <code>1.4</code>, if the first argument vanished. And <code>gcd()</code> was broken in <code>\xintiiexpr</code> since <code>1.3d</code> if <em>any</em> argument vanished. I did have a unit test! (which obviously was too limited …)</p>
@@ -328,7 +336,7 @@ License: LPPL 1.3c</code></pre>
<li><p>The <code>first()</code> and <code>last()</code> functions, if used as arguments to numerical functions such as <code>sqr()</code> inside an <code>\xintdeffunc</code> caused the defined function to be broken.</p></li>
</ul>
<h2 id="c-20210220"><code>1.4c (2021/02/20)</code></h2>
-<h3 id="bug-fixes-6">Bug fixes</h3>
+<h3 id="bug-fixes-7">Bug fixes</h3>
<ul>
<li>Fix <code>1.4</code> regression which broke syntax <code>varname(...)</code> which supposedly is allowed and inserts a tacit multiplication.</li>
</ul>
@@ -347,7 +355,7 @@ License: LPPL 1.3c</code></pre>
<li><p>Chaining of comparison operators (e.g. <code>x&lt;y&lt;z</code>) as in Python (but all comparisons are done even if one is found false) and l3fp.</p></li>
<li><p>It was possible since <code>1.4</code>’s <code>\xintFracToSciE</code> to configure the separator between mantissas and exponents in the output of <code>\xinteval</code> but strangely there was no way to customize the output of <code>\xintfloateval</code>. The added <code>\xintPFloatE</code> fixes this.</p></li>
</ul>
-<h3 id="bug-fixes-7">Bug fixes</h3>
+<h3 id="bug-fixes-8">Bug fixes</h3>
<ul>
<li><code>\xintieval{[D]...}</code> with a negative <code>D</code> (a feature added at <code>1.4a</code>) used erroneously a catcode 12 <code>e</code> in output, which moreover remained immuned to the <code>\xintFracToSciE</code> setting.</li>
</ul>
@@ -363,7 +371,7 @@ License: LPPL 1.3c</code></pre>
<li><p>The optional argument <code>[D]</code> to <code>\xintieval/\xintiexpr</code> can be negative, with the same meaning as the non-negative case, i.e. rounding to an integer multiple of <code>10^(-D)</code>.</p>
<p>The same applies to the functions <code>trunc()</code> and <code>round()</code>. And to the <code>\xintTrunc</code>, <code>\xintRound</code>, <code>\xintiTrunc</code>, and <code>\xintiRound</code> macros of <strong>xintfrac</strong>.</p></li>
</ul>
-<h3 id="bug-fixes-8">Bug fixes</h3>
+<h3 id="bug-fixes-9">Bug fixes</h3>
<ul>
<li><p>Usage of <code>round()</code> and <code>trunc()</code> within <code>\xintdeffunc</code> got broken at <code>1.4</code>.</p></li>
<li><p><code>add()</code> and <code>mul()</code> were supposedly accepting the <code>omit</code>, <code>abort</code> and <code>break()</code> keywords since <code>1.4</code> but this was broken.</p></li>
@@ -393,7 +401,7 @@ License: LPPL 1.3c</code></pre>
<li><p>The <code>*</code> serves as <em>unpacking</em> operator on <em>nut-ples</em>, i.e. reversing the <code>[]</code> bracketing of an <em>ople</em>.</p></li>
<li><p><em>oples</em> have no exact equivalent in <code>Python</code>. For example <strong>xintexpr</strong> allows <code>foo(Var1, x)</code> if <code>foo</code> is a function of 4 variables and <code>Var1</code> is a variable producing a length 3 <em>ople</em>, or <code>foo(Var2)</code> if <code>Var2</code> is a variable producing a length 4 <em>ople</em>. Python would require here to use explicitly the <code>*</code>-unpacking notation on some “packed” objects.</p>
<p>Variable and function values may be <em>oples</em> (even <em>nil</em>), but in function declarations variables must stand for <em>one-ples</em>, i.e. either <em>numbers</em> or <em>nut-ples</em> (as there is no non-ambiguous way to split e.g. 5 arguments into two separate <em>oples</em>).</p></li>
-<li><p>Simultaneous assignment to at least two variables via <code>\xintdefvar</code> et al. automatically unpacks the assigned value if it is a <em>one-ple</em>. If this value was in fact a <em>number</em>, low-level errors will result shortly afterwards as no check is done if the unpacking was illicit. (Such checks exist in the codebase, but have not yet been integrated into <code>\xintdefvar</code> by laziness).</p></li>
+<li><p>Simultaneous assignment to at least two variables via <code>\xintdefvar</code> et al. automatically unpacks the assigned value if it is a <em>one-ple</em>. If this value was in fact a <em>number</em>, low-level errors will result shortly afterwards as no check is done if the unpacking was illicit. (update: this last remark does not apply since the <code>1.4i</code> extension to the concept of simultaneous assignments)</p></li>
<li><p>The <code>NumPy</code> concept and syntax for nested slicing and item selection are implemented. Currently <em>stepping</em> and the <em>Ellipsis object</em> are not yet available. Only so-called basic slicing is currently supported. (The author has not yet read the section of <code>NumPy</code> documentation on so-called <em>advanced indexing</em>).</p></li>
<li><p>The <em>broadcasting</em> of scalar operations, such as itemwise addition or multiplication of <em>nut-ples</em> of the same shape is <strong>not yet implemented</strong>.</p></li>
<li><p>Slicing and indexing apply also at top level to the <em>oples</em> with behaviour conforming to intuitive expectations (see user manual); if it turns out the <em>ople</em> is in fact a <em>nut-ple</em>, the top-level slicing/indexing switches to the <code>Python/NumPy</code> conventions, i.e. it operates inside the brackets for slicing and removes brackets if indexing.</p></li>
@@ -415,7 +423,7 @@ License: LPPL 1.3c</code></pre>
<li><p>Function declarations are able to parse a much wider part of the syntax, but some severe limitations remain. Refer to the user manual for related information.</p></li>
<li><p>We have made an effort on some error messages, and when working interactively in a shell it may even be sometimes possible to insert for example a correct variable or function name in place of the not recognized one. But don’t expect miracles when trying to intervene in the midst of a purely expandable expansion…</p></li>
</ul>
-<h3 id="bug-fixes-9">Bug fixes</h3>
+<h3 id="bug-fixes-10">Bug fixes</h3>
<p>Bugs? Those identified in <code>1.3f</code> were almost features. As per <code>1.4</code> the code base of <strong>xintexpr</strong> received multiple successive core refactorings and added numerous new features, and our test suite although significantly enlarged is not yet extensive enough. Please report bugs by mail.</p>
<h3 id="todo">TODO</h3>
<ul>
@@ -431,7 +439,7 @@ License: LPPL 1.3c</code></pre>
<li><p><strong>xintexpr</strong>: add starred variants <code>\xintDigits*</code> and <code>\xintSetDigits*</code> which execute <code>\xintreloadxinttrig</code>.</p>
<p>Revert 1.3e ban on usage of <code>\xinteval</code> et al. inside expressions by <code>\xintdeffunc</code>. And make them usable also inside macro definitions via <code>\xintNewExpr</code>.</p></li>
</ul>
-<h3 id="bug-fixes-10">Bug fixes</h3>
+<h3 id="bug-fixes-11">Bug fixes</h3>
<ul>
<li><p><strong>xintexpr</strong>: fix bug preventing usage of <code>\xintdefefunc</code> to define a function without variables.</p>
<p>Fix some issue with <code>\xintfloatexpr[D]..\relax</code> if used inside an expression parsed by <code>\xintdeffunc</code> et al.</p></li>
@@ -451,7 +459,7 @@ License: LPPL 1.3c</code></pre>
<li><p><strong>xintexpr</strong>: <code>\xintensuredummy</code>, <code>\xintrestorelettervar</code>.</p></li>
<li><p>The optional argument of <code>\xintfloatexpr</code> or <code>\xintfloateval</code> (it must be at start of braced argument) can be negative; it then means to trim (and round) from the output at float precision that many least significant digits.</p></li>
</ul>
-<h3 id="bug-fixes-11">Bug fixes</h3>
+<h3 id="bug-fixes-12">Bug fixes</h3>
<ul>
<li>Some bugfixes related to user functions with no variables at all; they were dysfunctional.</li>
</ul>
@@ -470,7 +478,7 @@ License: LPPL 1.3c</code></pre>
<li><p><strong>xintexpr</strong>: functions <code>isone()</code> and <code>isint()</code>.</p></li>
<li><p><strong>xintexpr</strong>: <code>\xinteval</code>, <code>\xintieval</code>, <code>\xintiieval</code>, and <code>\xintfloateval</code> as synonyms to <code>\xinttheexpr...\relax</code> etc…, but with the (comma-separated) expression as a usual braced macro argument.</p></li>
</ul>
-<h3 id="bug-fixes-12">Bug fixes</h3>
+<h3 id="bug-fixes-13">Bug fixes</h3>
<ul>
<li><strong>xintcore</strong>, <strong>xintexpr</strong> : division in <code>\xintiiexpr</code> was broken for a zero dividend and a one-digit divisor (e.g. <code>0//7</code>) since <code>1.2p</code> due to a bug in <code>\xintiiDivMod</code> for such arguments. The bug was signaled (thanks to Kpym for report) and fixed shortly after <code>1.3c</code> release but I then completely forgot to upload a bugfix release to CTAN at that time, apologies for that.</li>
</ul>
@@ -483,7 +491,7 @@ License: LPPL 1.3c</code></pre>
<li><p><strong>xintexpr</strong>: <code>\xintdefvar</code>, <code>\xintdeffunc</code> and their variants try to set the catcode of the semi-colon which delimits their arguments; of course this will not work if that catcode is already frozen.</p></li>
<li><p><code>\xintUniformDeviate</code> is better documented and <code>sourcexint.pdf</code> is better hyperlinked and includes indices for the macros defined by each package.</p></li>
</ul>
-<h3 id="bug-fixes-13">Bug fixes</h3>
+<h3 id="bug-fixes-14">Bug fixes</h3>
<ul>
<li><strong>xintfrac</strong>: since <code>1.3</code> release, it loaded <strong>xintgcd</strong> in contradiction to what the documentation says (hence also <strong>xintexpr</strong> loaded <strong>xintgcd</strong> automatically). There is no actual dependency so the loading is removed for now.</li>
</ul>
@@ -509,7 +517,7 @@ License: LPPL 1.3c</code></pre>
<li><p><strong>xintfrac</strong>: <code>\xintREZ</code> is faster on inputs having one hundred digits or more.</p></li>
<li><p>Added to the user manual mention of macros such as <code>\xintDivFloor</code>, <code>\xintMod</code>, <code>\xintModTrunc</code>, which had been left out so far.</p></li>
</ul>
-<h3 id="bug-fixes-14">Bug fixes</h3>
+<h3 id="bug-fixes-15">Bug fixes</h3>
<ul>
<li><strong>xintexpr</strong>: the mechanism for adjunction to the expression parsers of user defined functions was refactored and improved at previous release <code>1.3</code>: in particular recursive definitions became possible. But an oversight made these recursive functions quite inefficient (to remain polite.) This release fixes the problem.</li>
</ul>
@@ -532,7 +540,7 @@ License: LPPL 1.3c</code></pre>
<ul>
<li><strong>xintexpr</strong>: tacit multiplication extended to cases such as <code>3!4!5!</code> or <code>(1+2)3</code>.</li>
</ul>
-<h3 id="bug-fixes-15">Bug fixes</h3>
+<h3 id="bug-fixes-16">Bug fixes</h3>
<ul>
<li><strong>xintcore</strong>: sadly, refactoring at <code>1.2l</code> of subtraction left an extra character in an inner macro causing breakage in some rare circumstances. This should not have escaped our test suite!</li>
</ul>
@@ -551,7 +559,7 @@ License: LPPL 1.3c</code></pre>
<li><p><strong>xintexpr</strong>: <code>\xintdefvar</code>’s syntax is extended to allow simultaneous assignments. Examples: <code>\xintdefvar x1, x2, x3 := 1, 3**10, 3**20;</code> or <code>\xintdefiivar A, B := B, A 'mod' B;</code> for already defined variables <code>A</code> and <code>B</code>.</p></li>
<li><p><strong>xintexpr</strong>: added <code>divmod()</code> to the built-in functions. It is associated with floored division, like the Python language <code>divmod()</code>. Related support macros added to <strong>xintcore</strong>, and <strong>xintfrac</strong>.</p></li>
</ul>
-<h3 id="bug-fixes-16">Bug fixes</h3>
+<h3 id="bug-fixes-17">Bug fixes</h3>
<ul>
<li><p><strong>xintgcd</strong>: <code>\xintBezout{6}{3}</code> (for example) expanded to <code>{6}{3}{-0}{-1}{3}</code>, but the <code>-0</code> should have been <code>0</code>.</p></li>
<li><p><strong>xintgcd</strong>: it still used macro <code>\xintiAbs</code> although the latter had been deprecated from <strong>xintcore</strong>.</p></li>
@@ -594,7 +602,7 @@ License: LPPL 1.3c</code></pre>
<ul>
<li><strong>xintbinhex</strong>: all macros have been rewritten using techniques from the 1.2 release (they had remained unmodified since <code>1.08</code> of <code>2013/06/07</code>.) The new macros are faster but limited to a few thousand digits. The <code>1.08</code> routines could handle tens of thousands of digits, but not in a reasonable time.</li>
</ul>
-<h3 id="bug-fixes-17">Bug fixes</h3>
+<h3 id="bug-fixes-18">Bug fixes</h3>
<ul>
<li><p>user manual: the <code>Changes</code> section wrongly stated at <code>1.2l</code> that the macros of <strong>xintbinhex</strong> had been made robust against non terminated input such as <code>\number\mathcode`\-</code>. Unfortunately the author fell into the trap of believing his own documentation and he forgot to actually implement the change. Now done.</p></li>
<li><p>user manual: the PDF bookmarks were messed up.</p></li>
@@ -615,7 +623,7 @@ License: LPPL 1.3c</code></pre>
<p>The situation with expressions is unchanged: syntax such as <code>\xintexpr \numexpr1+2\relax</code> is illegal as the ending <code>\relax</code> token will get swallowed by the <code>\numexpr</code>; but it is needed by the <code>xintexpr</code>-ession parser, hence the parser will expand forward and presumably end with in an “illegal token” error, or provoke some low-level TeX error (N.B.: a closing brace <code>}</code> for example can not terminate an <code>xintexpr</code>-ession, the parser must find a <code>\relax</code> token at some point). Thus there must be in this example a second <code>\relax</code>.</p></li>
<li><p>experimental code for error conditions; there is no complete user interface yet, it is done in preparation for next major release and is completely unstable and undocumented.</p></li>
</ul>
-<h3 id="bug-fixes-18">Bug fixes</h3>
+<h3 id="bug-fixes-19">Bug fixes</h3>
<ul>
<li><p><strong>xintbinhex</strong>: since <code>1.2 (2015/10/10)</code>, <code>\xintHexToDec</code> was broken due to an undefined macro (it was in <code>xint.sty</code>, but the module by itself is supposedly dependent only upon <code>xintcore.sty</code>).</p></li>
<li><p><strong>xintgcd</strong>: macro <code>\xintBezout</code> produced partially wrong output if one of its two arguments was zero.</p></li>
@@ -634,7 +642,7 @@ License: LPPL 1.3c</code></pre>
<li><p>added <code>\xintiSqrtR</code>, there was only <code>\xintiiSqrtR</code> alongside <code>\xintiSqrt</code> and <code>\xintiiSqrt</code> (<strong>xint</strong>).</p></li>
<li><p>added non public <code>\xintLastItem:f:csv</code> to <strong>xinttools</strong> for faster <code>last()</code> function, and improved <code>\xintNewExpr</code> compatibility. Also <code>\xintFirstItem:f:csv</code>.</p></li>
</ul>
-<h3 id="bug-fixes-19">Bug fixes</h3>
+<h3 id="bug-fixes-20">Bug fixes</h3>
<ul>
<li><p>the <code>1.2f</code> half-integer powers computed within <code>\xintfloatexpr</code> had a silly rounding to the target precision just <em>before</em> the final square-root extraction, thus possibly losing some precision. The <code>1.2k</code> implementation keeps guard digits for this final square root extraction. As for integer exponents, it is guaranteed that the computed value differs from the exact one by less than <code>0.52 ulp</code> (for inputs having at most <code>\xinttheDigits</code> digits.)</p></li>
<li><p>more regressions from <code>1.2i</code> were fixed: <code>\xintLen</code> (<strong>xint</strong>, <strong>xintfrac</strong>) and <code>\xintDouble</code> (<strong>xintcore</strong>) had forgotten that their argument was allowed to be negative. A regression test suite is now in place and is being slowly expanded to cover more macros.</p></li>
@@ -650,7 +658,7 @@ License: LPPL 1.3c</code></pre>
</ol></li>
<li><p>significant documentations tweaks (inclusive of suppressing things!), and among them two beautiful hyperlinked tables with both horizontal and vertical rules which bring the documentation of the <strong>xintexpr</strong> syntax to a kind of awe-inspiring perfection… except that implementation of some math functions is still lacking.</p></li>
</ul>
-<h3 id="bug-fixes-20">Bug fixes</h3>
+<h3 id="bug-fixes-21">Bug fixes</h3>
<ul>
<li>fix two <code>1.2i</code> regressions caused by undefined macros (<code>\xintNthElt</code> in certain branches and <code>[list][N]</code> item extraction in certain cases.) The test files existed but were not executed prior to release. Automation in progress.</li>
</ul>
@@ -682,7 +690,7 @@ License: LPPL 1.3c</code></pre>
<li><p>the documentation has again been (slightly) re-organized; it has a new sub-section on the Miller-Rabin primality test, to illustrate some use of <code>\xintNewFunction</code> for recursive definitions.</p></li>
<li><p>the documentation has dropped the LaTeX “command” terminology (which had been used initially in 2013 for some forgotten reasons and should have been removed long ago) and uses only the more apt “macro”, as after all, all of <strong>xint</strong> is about expansion of macros (plus the use of <code>\numexpr</code>).</p></li>
</ul>
-<h3 id="bug-fixes-21">Bug fixes</h3>
+<h3 id="bug-fixes-22">Bug fixes</h3>
<ul>
<li><code>\xintDecSplitL</code> and <code>\xintDecSplitR</code> from <strong>xint</strong> produced their output in a spurious brace pair (bug introduced in <code>1.2f</code>).</li>
</ul>
@@ -692,7 +700,7 @@ License: LPPL 1.3c</code></pre>
<li><p>new macro <code>\xintNewFunction</code> in <strong>xintexpr</strong> which allows to extend the parser syntax with functions in situations where <code>\xintdeffunc</code> is not usable (typically, because dummy variables are used over a not yet determined range of values because it depends on the variables).</p></li>
<li><p>after three years of strict obedience to <code>xint</code> prefix, now <code>\thexintexpr</code>, <code>\thexintiexpr</code>, <code>\thexintfloatexpr</code>, and <code>\thexintiiexpr</code> are provided as synonyms to <code>\xinttheexpr</code>, etc…</p></li>
</ul>
-<h3 id="bug-fixes-22">Bug fixes</h3>
+<h3 id="bug-fixes-23">Bug fixes</h3>
<ul>
<li><p>the <code>(cond)?{foo}{bar}</code> operator from <strong>xintexpr</strong> mis-behaved in certain circumstances (such as an empty <code>foo</code>).</p></li>
<li><p>the <strong>xintexpr</strong> <code>1.2f</code> <code>binomial</code> function (which uses <code>\xintiiBinomial</code> from <strong>xint.sty</strong> or <code>\xintFloatBinomial</code> from <strong>xintfrac.sty</strong>) deliberately raised an error for <code>binomial(x,y)</code> with <code>y&lt;0</code> or <code>x&lt;y</code>. This was unfortunate, and it now simply evaluates to zero in such cases.</p></li>
@@ -732,7 +740,7 @@ License: LPPL 1.3c</code></pre>
<li><p>(TeXperts only) the macros defined (internally) from <code>\xintdeffunc</code> et al. constructs do not incorporate an initial <code>\romannumeral</code> anymore.</p></li>
<li><p>renewed desperate efforts at improving the documentation by random shuffling of sections and well thought additions; cuts were considered and even performed.</p></li>
</ul>
-<h3 id="bug-fixes-23">Bug fixes</h3>
+<h3 id="bug-fixes-24">Bug fixes</h3>
<ul>
<li><p>squaring macro <code>\xintSqr</code> from <strong>xintfrac.sty</strong> was broken due to a misspelled sub-macro name. Dates back to <code>1.1</code> release of <code>2014/10/28</code> <code>:-((</code>.</p></li>
<li><p><code>1.2c</code>’s fix to the subtraction bug from <code>1.2</code> introduced another bug, which in some cases could create leading zeroes in the output, or even worse. This could invalidate other routines using subtractions, like <code>\xintiiSquareRoot</code>.</p></li>
@@ -746,7 +754,7 @@ License: LPPL 1.3c</code></pre>
<li><p>a space in <code>\xintdeffunc f(x)&lt;space&gt;:= expression ;</code> is now accepted.</p></li>
<li><p>documentation enhancements: the <em>Quick Sort</em> section with its included code samples has been entirely re-written; the <em>Commands of the xintexpr package</em> section has been extended and reviewed entirely.</p></li>
</ul>
-<h3 id="bug-fixes-24">Bug fixes</h3>
+<h3 id="bug-fixes-25">Bug fixes</h3>
<ul>
<li><p>in <strong>xintfrac</strong>: the <code>\xintFloatFac</code> from release <code>1.2</code> parsed its argument only through <code>\numexpr</code> but it should have used <code>\xintNum</code>.</p></li>
<li><p>in <strong>xintexpr</strong>: release <code>1.2d</code> had broken the recognition of sub-expressions immediately after variable names (with tacit multiplication).</p></li>
@@ -759,7 +767,7 @@ License: LPPL 1.3c</code></pre>
<li><p>tacit multiplication applies to more cases, for example (x+y)z, and always ties more than standard * infix operator, e.g. x/2y is like x/(2*y).</p></li>
<li><p>some documentation enhancements, particularly in the chapter on xintexpr.sty, and also in the code source comments.</p></li>
</ul>
-<h3 id="bug-fixes-25">Bug fixes</h3>
+<h3 id="bug-fixes-26">Bug fixes</h3>
<ul>
<li>in <strong>xintcore</strong>: release <code>1.2c</code> had inadvertently broken the <code>\xintiiDivRound</code> macro.</li>
</ul>
@@ -769,12 +777,12 @@ License: LPPL 1.3c</code></pre>
<li><p>macros <code>\xintdeffunc</code>, <code>\xintdefiifunc</code>, <code>\xintdeffloatfunc</code> and boolean <code>\ifxintverbose</code>.</p></li>
<li><p>on-going code improvements and documentation enhancements, but stopped in order to issue this bugfix release.</p></li>
</ul>
-<h3 id="bug-fixes-26">Bug fixes</h3>
+<h3 id="bug-fixes-27">Bug fixes</h3>
<ul>
<li>in <strong>xintcore</strong>: recent release <code>1.2</code> introduced a bug in the subtraction (happened when 00000001 was found under certain circumstances at certain mod 8 locations).</li>
</ul>
<h2 id="b-20151029"><code>1.2b (2015/10/29)</code></h2>
-<h3 id="bug-fixes-27">Bug fixes</h3>
+<h3 id="bug-fixes-28">Bug fixes</h3>
<ul>
<li>in <strong>xintcore</strong>: recent release <code>1.2</code> introduced a bug in the division macros, causing a crash when the divisor started with 99999999 (it was attempted to use with 1+99999999 a subroutine expecting only 8-digits numbers).</li>
</ul>
@@ -785,7 +793,7 @@ License: LPPL 1.3c</code></pre>
<li><p>added <code>\xintiiMaxof/\xintiiMinof</code> (<strong>xint</strong>).</p></li>
<li><p>TeX hackers only: replaced all code uses of <code>\romannumeral-`0</code> by the quicker <code>\romannumeral`&amp;&amp;@</code> (<code>^</code> being used as letter, had to find another character usable with catcode 7).</p></li>
</ul>
-<h3 id="bug-fixes-28">Bug fixes</h3>
+<h3 id="bug-fixes-29">Bug fixes</h3>
<ul>
<li>in <strong>xintexpr</strong>: recent release <code>1.2</code> introduced a bad bug in the parsing of decimal numbers and as a result <code>\xinttheexpr 0.01\relax</code> expanded to <code>0</code> ! (sigh…)</li>
</ul>
@@ -886,7 +894,7 @@ License: LPPL 1.3c</code></pre>
<li><p><code>\xintthecoords</code> converts a comma separated list of an even number of items to the format expected by the <code>TikZ</code> <code>coordinates</code> syntax,</p></li>
<li><p>completely new version <code>\xintNewExpr</code>, <code>protect</code> function to handle external macros. The dollar sign <code>$</code> for place holders is not accepted anymore, only the standard macro parameter <code>#</code>. Not all constructs are compatible with <code>\xintNewExpr</code>.</p></li>
</ul>
-<h3 id="bug-fixes-29">Bug fixes</h3>
+<h3 id="bug-fixes-30">Bug fixes</h3>
<ul>
<li><p><code>\xintZapFirstSpaces</code> hence also <code>\xintZapSpaces</code> from package <strong>xinttools</strong> were buggy when used with an argument either empty or containing only space tokens.</p></li>
<li><p><code>\xintiiexpr</code> did not strip leading zeroes, hence <code>\xinttheiiexpr 001+1\relax</code> did not obtain the expected result …</p></li>
diff --git a/macros/generic/xint/README.md b/macros/generic/xint/README.md
index db85e4b78a..bd83ddc429 100644
--- a/macros/generic/xint/README.md
+++ b/macros/generic/xint/README.md
@@ -1,8 +1,8 @@
% README
-% xint 1.4i
-% 2021/06/11
+% xint 1.4j
+% 2021/07/13
- Source: xint.dtx 1.4i 2021/06/11 (doc 2021/06/11)
+ Source: xint.dtx 1.4j 2021/07/13 (doc 2021/07/13)
Author: Jean-Francois Burnol
Info: Expandable operations on big integers, decimals, fractions
License: LPPL 1.3c
diff --git a/macros/generic/xint/sourcexint.pdf b/macros/generic/xint/sourcexint.pdf
index 4d96446c21..41147e734d 100644
--- a/macros/generic/xint/sourcexint.pdf
+++ b/macros/generic/xint/sourcexint.pdf
Binary files differ
diff --git a/macros/generic/xint/xint.dtx b/macros/generic/xint/xint.dtx
index c7d9ecd116..a1ad014bc2 100644
--- a/macros/generic/xint/xint.dtx
+++ b/macros/generic/xint/xint.dtx
@@ -3,27 +3,27 @@
% Extract all files via "etex xint.dtx" and do "make help"
% or follow instructions from extracted README.md.
%<*dtx>
-\def\xintdtxtimestamp {Time-stamp: <11-06-2021 at 22:26:15 CEST>}
+\def\xintdtxtimestamp {Time-stamp: <13-07-2021 at 21:50:14 CEST>}
%</dtx>
%<*drv>
%% ---------------------------------------------------------------
-\def\xintdocdate {2021/06/11}
-\def\xintbndldate{2021/06/11}
-\def\xintbndlversion {1.4i}
+\def\xintdocdate {2021/07/13}
+\def\xintbndldate{2021/07/13}
+\def\xintbndlversion {1.4j}
%</drv>
%<readme>% README
%<changes>% CHANGE LOG
-%<readme|changes>% xint 1.4i
-%<readme|changes>% 2021/06/11
+%<readme|changes>% xint 1.4j
+%<readme|changes>% 2021/07/13
%<readme|changes>
-%<readme|changes> Source: xint.dtx 1.4i 2021/06/11 (doc 2021/06/11)
+%<readme|changes> Source: xint.dtx 1.4j 2021/07/13 (doc 2021/07/13)
%<readme|changes> Author: Jean-Francois Burnol
%<readme|changes> Info: Expandable operations on big integers, decimals, fractions
%<readme|changes> License: LPPL 1.3c
%<readme|changes>
%<*!readme&!changes&!dohtmlsh&!makefile>
%% ---------------------------------------------------------------
-%% The xint bundle 1.4i 2021/06/11
+%% The xint bundle 1.4j 2021/07/13
%% Copyright (C) 2013-2021 by Jean-Francois Burnol
%<xintkernel>%% xintkernel: Paraphernalia for the xint packages
%<xinttools>%% xinttools: Expandable and non-expandable utilities
@@ -152,25 +152,17 @@ See `xint.pdf` for contact information.
%</readme>--------------------------------------------------------
%<*changes>-------------------------------------------------------
-`1.4i (2021/06/11)`
+`1.4j (2021/07/13)`
----
### Bug fixes
- - **xintexpr**: simultaneous assignments via `\xintdefvar` to 10 or
- more variables was broken if the right hand side was an ople (of
- length at least 10, as it had prior to this release to match the
- number of variables).
+ - **xinttools**: a brace removal bug affected the venerable `\xintSeq`
+ if producing a single number (e.g. `\xintSeq{10}{10}` expanded to
+ `10` not `{10}`). Thanks to Christophe Poulain for report.
- - **xintexpr**: the mechanism which allows to define variables with
- names already in use for pre-existing functions was broken for some
- built-in functions: those handling syntax with dummy variables
- (currently `subs()`, `subsm()`, `subsn()`, `seq()`, `add()`, `mul()`,
- `ndseq()`, `ndmap()`, `ndfillraw()`) and the so-called "pseudo"
- functions (currently `bool()`, `togl()`, `protect()`, `qint()`,
- `qfrac()`, `qfloat()`, `qraw()`, `random()`, `qrand()`, `rbit()`).
- For example the function `seq()` was broken if the user had defined a
- variable `seq`.
+`1.4i (2021/06/11)`
+----
### New features
@@ -186,6 +178,23 @@ See `xint.pdf` for contact information.
a `nutple` (which was automatically unpacked). It can now again be a
number.
+### Bug fixes
+
+ - **xintexpr**: simultaneous assignments via `\xintdefvar` to 10 or
+ more variables was broken if the right hand side was an ople (of
+ length at least 10, as it had prior to this release to match the
+ number of variables).
+
+ - **xintexpr**: the mechanism which allows to define variables with
+ names already in use for pre-existing functions was broken for some
+ built-in functions: those handling syntax with dummy variables
+ (currently `subs()`, `subsm()`, `subsn()`, `seq()`, `add()`, `mul()`,
+ `ndseq()`, `ndmap()`, `ndfillraw()`) and the so-called "pseudo"
+ functions (currently `bool()`, `togl()`, `protect()`, `qint()`,
+ `qfrac()`, `qfloat()`, `qraw()`, `random()`, `qrand()`, `rbit()`).
+ For example the function `seq()` was broken if the user had defined a
+ variable `seq`.
+
`1.4h (2021/05/27)`
----
@@ -222,6 +231,17 @@ See `xint.pdf` for contact information.
`\xintTeXFrac`, `\xintTeXsignedFrac`, `\xintTeXOver`,
`\xintTeXsignedOver`. The old names will emit warnings.
+### New features
+
+ - Messages written to the terminal and log file during the handling of
+ recovery from exceptions use a new mechanism; when in interactive
+ mode, the user is prompted only once, not thrice, to enter `<return>`
+ for recovery and continued processing.
+
+ - **xintfrac**: `\xintTeXfromSci` (added about 7 or 8 years too late)
+ to help typesetting values output by `\xintfloateval` in a more
+ useful way than `\xintTeXFrac` (formerly `\xintFrac`).
+
### Bug fixes
- **xintexpr**: with **xintbinhex** loaded, `"` is recognized as prefix
@@ -258,17 +278,6 @@ See `xint.pdf` for contact information.
Surely, further situations remain where bad input will crash parser.
-### New features
-
- - Messages written to the terminal and log file during the handling of
- recovery from exceptions use a new mechanism; when in interactive
- mode, the user is prompted only once, not thrice, to enter `<return>`
- for recovery and continued processing.
-
- - **xintfrac**: `\xintTeXfromSci` (added about 7 or 8 years too late)
- to help typesetting values output by `\xintfloateval` in a more
- useful way than `\xintTeXFrac` (formerly `\xintFrac`).
-
`1.4f (2021/05/10)`
----
@@ -660,9 +669,9 @@ even the interface (whether to use semi-colons or colons etc...).
et al. automatically unpacks the assigned value if it is a *one-ple*.
If this value was in fact a *number*, low-level errors will result
shortly afterwards as no check is done if the unpacking was illicit.
- (Such checks exist in the codebase, but have not yet been integrated
- into `\xintdefvar` by laziness).
-
+ (update: this last remark does not apply since the `1.4i` extension to
+ the concept of simultaneous assignments)
+
- The `NumPy` concept and syntax for nested slicing and item selection
are implemented. Currently *stepping* and the *Ellipsis object* are
not yet available. Only so-called basic slicing is currently
@@ -2890,7 +2899,13 @@ pandoc -o CHANGES.html -s --toc -V highlighting-css=' body{margin-left : 10%;
\RequirePackage{ifxetex}
\ifpdf \chardef\Withdvipdfmx 0 \fi
-\ifxetex\chardef\Withdvipdfmx 0 \fi
+\ifxetex\chardef\Withdvipdfmx 0
+% they are used at some locations in this doc
+ \let\pdfsetrandomseed\setrandomseed
+ \let\pdfuniformdeviate\uniformdeviate
+ \let\pdfresettimer\resettimer
+ \let\pdfelapsedtime\elapsedtime
+\fi
% Get rid of HARASSMENT by KOMA-Script
\makeatletter
@@ -3609,8 +3624,21 @@ pdfpagemode=UseNone,%
\def\endeverbatim {\if@newlist \leavevmode\fi\endtrivlist }
\@namedef{endeverbatim*}{\endeverbatim\aftergroup\everbatimundoparskip}
-%\def\everbatimundoparskip{\ifdim\parskip>\z@\vskip-\parskip\fi}
\def\everbatimundoparskip{\vbox{}\kern-\baselineskip\kern-\parskip}
+% Note 24 juin 2021
+%
+% Si everbatim[*] suit immédiatement un premier everbatim* dont l'exécution
+% n'a fait que des définitions de macros sans créer de paragraphe (ou un
+% environnment de liste comme center) le \kern-\parskip émis après le rendu
+% verbatim (et qui vient de \everbatimundoparskip) ne sera pas compensé.
+% Plus précisément le everbatim* (ou everbatim) qui vient en
+% deuxième utilise \trivlist mais en ayant mis les paramètres d'espacements
+% verticaux à zéro. Donc il y aura chevauchement.
+%
+% Pour régler ce problème, on peut :
+% - soit fusionner les deux everbatim*,
+% - soit si cela est embêtant, par exemple si le second environnment est
+% un everbatim, pas un everbatim*, ajouter \kern-\parskip entre les deux.
\def\s@everbatim {%
% \ineverbtrue
@@ -3675,6 +3703,10 @@ pdfpagemode=UseNone,%
\def\everbatimxposthook
{\pdfcolorstack\@pdfcolorstack pop\relax}
\else
+% Le 24 juin 2021 je vérifie que ceci est encore nécessaire avex xelatex
+% (sinon color leak de OrangeRed à partir de la page 97 dans la doc)
+% et aussi pour dvipdfmx (sinon color stack overflow au moment de la page 98
+% lors du passage par dvipdfmx)
\ifxetex
\def\everbatimxprehook {\special{color push cmyk 0 1 0.5 0}}
\def\everbatimxposthook {\special{color pop}}
@@ -3955,6 +3987,11 @@ pdfpagemode=UseNone,%
% Someone makes the comma active (not me! not sure if doc.sty or KOMA) and
% this derails xspace.sty, in the headers, as it uses \scantokens on a list of
% tokens, so it fails to recognize the commas which of course are of catcode12
+% Update Friday, June 25 2021
+% I finally take the time to go to the root of this: the culprit is everbatim
+% when its output crosses pagebreaks, but the same of course happens with
+% verbatim.
+% I opened ticket https://github.com/latex3/latex2e/issues/600
\def\xintRunningHeader{{\inheadertrue\catcode`,12\relax
\DOCxintfrontpage,
\DOCxintexprintro,
@@ -4220,7 +4257,7 @@ pdfpagemode=UseNone,%
\section {Usage}
\begin{itemize}
-\item To use with |etex|, |pdftex|, ..., i.e. with \TeX{} engines activating
+\item To use with |etex|, |pdftex|, ..., i.e.\@ with \TeX{} engines activating
the e\TeX{} extensions:
\begin{everbatim}
\input xintexpr.sty
@@ -4257,8 +4294,8 @@ but in this documentation I might be using simply |Digits| to refer to it.
The tables of the built-in
\hyperref[tab:precedences]{operators} and \hyperref[tab:functions]{functions}
will give a quick overview of the available syntax.
-The simplest way to test the syntax is to\footnote{I am assuming here Mac OS or Linux,
-adapt to your environment} work interactively on the command line
+The simplest way\footnote{I am assuming here Mac OS or Linux,
+adapt to your environment} to test the syntax is to work interactively on the command line
(this feature is available since April 2021, the version of
\ctanpackage{xintsession} used here is |1.3a|):
\begin{everbatim}
@@ -4312,7 +4349,7 @@ quality of the document). Reports welcome.%
\footnote{Thanks to Jürgen Gilg for keeping the author motivated and
helping proof-read the 1.4 documentation.}
-\subsection{Improved support for logarithm, exponential, sine, etc... at
+\subsection{Improved support for logarithm, exponential, sine, etc...\@ at
the \texttt{1.4e} release of \texttt{2021/05/05}}
They are now supported up to \dtt{62} digits and achieve «correct rounding»%
@@ -4326,8 +4363,8 @@ at least
in \dtt{99\%} of cases%
%
\footnote{It is even better than that, but depends a bit on how |Digits| is
- located relative to some thresholds deciding where to cut some Taylor series
- or other mathematical means.}
+ located relative to some thresholds governing Taylor series
+ or other approximation means.}
%
for |Digits| being at least \dtt{9}.
@@ -4496,7 +4533,7 @@ For bugfixes and possibly more details check |CHANGES.html|:
\item Also the second argument of \func{trunc} and \func{round} can be
negative (but then it enacts quantization, e.g |trunc(1234,-2)| produces
- \dtt{\xinteval{trunc(1234,-2)}}. Matching updates to the support
+ \dtt{\xinteval{trunc(1234,-2)}}). Matching updates to the support
macros \csbxint{Trunc}, \csbxint{Round}, \csbxint{iTrunc}, and
\csbxint{iRound}.
@@ -4523,7 +4560,7 @@ author a few decades to finish absorbing Python/NumPy.
\begin{itemize}
\item \xintexprname |1.4| requires the |\expanded| primitive, which is
provided by all major \TeX{} engines since \TeX Live 2019. The macro
- packages \xintname, \xintfracname, \xinttoolsname et al. do not (yet)
+ packages \xintname, \xintfracname, \xinttoolsname et al.\@ do not (yet)
require |\expanded|.
It is probable also |\pdfstrcmp| (|\strcmp|) will be required at some point
@@ -4559,7 +4596,8 @@ author a few decades to finish absorbing Python/NumPy.
\item[if(100>0,(100,125),(100,128)) breaks my code:]
%
This is a feature. This is a syntax error, as the comma serves to contatenate
- "oples" (see \autoref{oples}), so it is parsed to behave as
+ "oples" (see \autoref{oples}), and parentheses do not create analogs of
+ "tuples", so this input is parsed the same as
\begin{everbatim}
if(100>0,100,125,100,128)
\end{everbatim}
@@ -4603,7 +4641,7 @@ author a few decades to finish absorbing Python/NumPy.
\item[{I liked the ``broadcasting'' \detokenize{[1..10]^10} syntax, but it
was removed at 1.4}]
%
- Patience... |seq(x^10,x=1..10)| is alternative (add external |[..]| to get
+ Patience...\@ |seq(x^10,x=1..10)| is alternative (add external |[..]| to get
a nutple).
\item[{\detokenize{1e\numexpr5+2\relax} crashes}]
%
@@ -4657,7 +4695,7 @@ with targets such as |xint.pdf| or |sourcexint.pdf|. Even if your system does
not allow executing |make|, the rules it contains can be imitated manually
(if possible using |Latexmk|).
-Back to \TeX\ distributions with a |"texdoc"| or similar utility,
+With \TeX\ distributions providing a |"texdoc"| or similar utility,
\centeredline{|texdoc --list xint|}
gives the choice to display one of:
\begin{itemize}[nosep]
@@ -4735,7 +4773,7 @@ Our category $\mathcal{C}$ of «oples» is the smallest collection of
Notes:
\begin{itemize}
\item
-We denote the empty set \dtt{$\emptyset$} by \emph{nil}.%
+We refer to the empty set \dtt{$\emptyset$} via the variable \emph{nil}.%
%
\footnote{There is
actually a built-in variable with this name. At |1.4|, |\xintexpr\relax| is
@@ -4764,10 +4802,15 @@ unpacking of sequence type objects). In the expression input syntax it
corresponds to enclosing \dtt{$O$} within square brackets: \dtt{$[O]$}.
\item A braced \emph{ople} is called a \emph{nutple}. Among them \dtt{\{nil\}}
- is a bit special. It is called the \emph{not-ple}. It is not \dtt{nil}.%
+ (aka $\{\emptyset\}$) is a bit special. It is called the \emph{none-ple}.%
+%
+ \footnote{Prior to version |1.4j| of this documentation it was called the
+ \emph{not-ple}.}
+%
+It is not \dtt{nil}.%
%
\footnote{There is (experimental) a pre-defined «\dtt{None}» variable which
- stands for the \emph{not-ple}. It can also be input as |[]|.}
+ stands for the \emph{none-ple}. It can also be input as |[]|.}
\end{itemize}
Each \emph{ople} has a \emph{length} which is its cardinality as set. The
@@ -4779,8 +4822,8 @@ singleton |oples| are called \emph{one-ples}. There are thus two types of
\end{itemize}
If we consider the empty set |nil| on the same footing as |atoms|, the two
-types have only one common object which is the \emph{not-ple}. As a rule
-arithmetic operations will either break or silently convert the \emph{not-ple}
+types have only one common object which is the \emph{none-ple}. As a rule
+arithmetic operations will either break or silently convert the \emph{none-ple}
to the zero value:
\begin{everbatim*}
\xinteval{3+[], 5^[], 10*[]}
@@ -4813,16 +4856,17 @@ utterances, due to legacy reasons from the pre-|1.4| internal model), we
synonymous to \emph{element} in the set-theoretical sense.
To repeat, any ople \dtt{$O$} is a finite totally ordered set: if not the empty
-set, it has elements \dtt{$a_1$}, \dots, \dtt{$a_k$}, and the above means that
+set, it has \emph{elements} \dtt{$a_1$}, \dots, \dtt{$a_k$}, and the above means that
its \emph{items} are the singleton oples (aka one-ples) \dtt{$I_1=\{a_1\}$},
\dots, \dtt{$I_k=\{a_k\}$}. Each \dtt{$a_j$} may be an |atom|, then
-\dtt{$I_j$} is a |number|, or an |ople| (possibly the empty set), then
-\dtt{$I_j$} is a |nutple| whose depth is one more then the one of the ople
+\dtt{$I_j$} is a |number|, or \dtt{$a_j$} is an |ople| (possibly the empty set), then
+\dtt{$I_j$} is a |nutple| whose depth is one more than the one of the ople
\dtt{$a_j$}.
Thus we can refer to «items» but must then understand they are not «elements»:
-«items» are «singleton sub-sets». The length of an ople is the number of its
-items. It is tempting to use «sub-item» to keep in mind they are «sub-sets»
+«items» are «singleton sub-sets». The cardinality (aka length) of an ople is
+also the number of its
+items. It would be tempting to use the terminology «sub-item» to keep in mind they are «sub-sets»
but this would again create confusion: a |nutple| has only one item which is
itself; and we need some terminology to refer to the individual numbers in the
|nutple| given in input as |[1,2,3]| for example. It is natural to refer to
@@ -4832,8 +4876,8 @@ is in particular an «item» of itself, the unique one at that).
We distinguish the |oples| of length zero (there is only one, the empty set)
or at least two as those which can never be an «item». Those of length one,
the |one-ples|, are exactly those which can be «items». Among them some may
-have «sub-items», they are the |nutples| with the exception of the |not-ple|,
-others can't, they are the |numbers| and the |not-ple| (whose input syntax is
+have «sub-items», they are the |nutples| with the exception of the |none-ple|.
+And the others do not have «sub-items», they are the |numbers| and the |none-ple| (whose input syntax is
either |[]| or the variable |None|).%
%
\footnote{%
@@ -4873,7 +4917,7 @@ also a \emph{leaf}. Else the children at top level are the successive
%
Among the elements some are \emph{atoms} giving \emph{leaves} of the tree,
others are \emph{nutples} which in turn have children. In the special case of
-the \emph{not-ple} we consider it has a child, which is the empty set and this
+the \emph{none-ple} we consider it has a child, which is the empty set and this
is why we consider the empty set |nil| to be also a potential \emph{leaf}. We
then proceed recursively. We thus obtain from the root \emph{ople} a tree
whose vertices are either \emph{oples} or \emph{leaves}. Only the empty set
@@ -4911,7 +4955,7 @@ than display it.
«Set-theoretical» slicing of an \emph{ople} means replacing it with one of its
subsets. This applies also if it is a \emph{number}. Then it can be sliced
only to itself or to the empty set (indeed it has only one element, which is
-an atom). Similarly the \emph{not-ple} can only be sliced to give itself or
+an atom). Similarly the \emph{none-ple} can only be sliced to give itself or
the empty set. And more generally a \emph{nutple} is a singleton so also can
only be set-sliced to either the empty set or itself.
@@ -4920,12 +4964,12 @@ only be set-sliced to either the empty set or itself.
\item if they are not \emph{nutples} set-theoretical slicing applies,
\item if they are \emph{nutples} (only case having a one-to-one
correspondence in Python) then the slicing happens \emph{within brackets}:
- i.e. the \emph{nutple} is unpacked then the set-theoretical slicing is
+ i.e.\@ the \emph{nutple} is unpacked then the set-theoretical slicing is
applied, then the result is \emph{repacked} to produce a new \emph{nutple}.
\end{itemize}
-With these conventions the \emph{not-ple} for example is invariant under
+With these conventions the \emph{none-ple} for example is invariant under
slicing: unpacking it gives the empty set, which has only the empty set as
-subset and repacking gives back the \emph{not-ple}. Slicing a general
+subset and repacking gives back the \emph{none-ple}. Slicing a general
\emph{nutple} returns a \emph{nutple} but now of course in general distinct
from the first one.
@@ -4943,13 +4987,13 @@ a set).
\begin{itemize}[nosep]
\item if they are not \emph{nutples} set-theoretical item indexing applies,
\item if they are \emph{nutples} (only case having a one-to-one
- correspondence in Python) then the meaning becomes \emph{extracting}: i.e.
+ correspondence in Python) then the meaning becomes \emph{extracting}: i.e.\@
the \emph{nutple} is unpacked then the set-theoretical indexing is applied,
but the result is \emph{not repacked}.
\end{itemize}
-For example when applied to the \emph{not-ple} we always obtain
-the |nil|. Whereas as we saw slicing the \emph{not-ple} always gives back the
-\emph{not-ple}. Indexing is denoted in the syntax by postfixing by |[N]|. Thus
+For example when applied to the \emph{none-ple} we always obtain
+the |nil|. Whereas as we saw slicing the \emph{none-ple} always gives back the
+\emph{none-ple}. Indexing is denoted in the syntax by postfixing by |[N]|. Thus
for \emph{nutples} (which are analogous to Python objects), there is genuine
difference between the |[N]| extractor and the |[N:N+1]| slicer. But for
\emph{oples} which are either |nil|, a \emph{number}, or of length at least 2,
@@ -4997,7 +5041,7 @@ is delimited by the opening and closing parentheses, then it applies the
function body, after having mapped the successive items (not the elements) of
the parsed ople to the variables appearing in the function call
signature. Hence the arguments in the call signature stand for |one-ples|
-(i.e. either |numbers| or |nutples|).
+(i.e.\@ either |numbers| or |nutples|).
Let me explain why we can not define a function |foo(A,B)| of two oples: the
function call will evaluate as an ople what is enclosed within the
@@ -5031,7 +5075,7 @@ will then occupy the place of as many arguments as its cardinality (which is
its number of elements, hence of its associated items). For example if
function |foo| was declared as a function of 5 arguments |f(a,b,c,d,e)| it is
legitimate to use it as |f(A,B)| if |A| is an ople-valued variable of length
-tree and |B| of length two. The actual arguments |a,b,c,d,e| will be made to
+three and |B| of length two. The actual arguments |a,b,c,d,e| will be made to
match the three items of |A| and the two items of |B|.
\subsubsection{Final words on leaves}
@@ -5086,7 +5130,7 @@ to handle arbitrarily big integers or arbitrary float precision.}.
%
These \eTeX{} extensions date
back to 1999 and are by default incorporated into the |pdftex|
-etc... executables from major modern \TeX{} installations for more than
+etc...\@ executables from major modern \TeX{} installations for more than
fifteen years now.
\begin{itemize}
@@ -5217,7 +5261,7 @@ standard catcodes and thus will get retokenized and the typesetter macro
(which being |\protected| is there intact in external file) will expand
as expected.
-One needs \csbxint{eval} et al. only if one really wants the final digits (and
+One needs \csbxint{eval} et al.\@ only if one really wants the final digits (and
other characters), for example in a context where \TeX{} expects a number or a
dimension.
@@ -5400,7 +5444,7 @@ definitions:
Attention! The above macros convert from \xintexprname internal numeric data
format to «printed» output; they are thus susceptible to require adjustments
if the internal data format changes, which may happen at each release. Of course
-the default for |\xintexprPrintOne| etc... will be adjusted accordingly, but
+the default for |\xintexprPrintOne| etc...\@ will be adjusted accordingly, but
user custom definitions may break.
The interface for \csbxint{floatexprPrintOne} was changed.\CHANGED{1.4e}
@@ -5866,9 +5910,10 @@ precedence, use parentheses for disambiguation.
\end{description}
\item[|\relax|] This is the expression terminator for \csbxint{expr} et al.
- It may arise from expansion during the parsing itself. As alternative use
- \csbxint{eval} et al. which proceed as macros expecting one mandatory
- argument.
+ It may arise from expansion during the parsing itself. As alternative to
+ \csbxint{expr} (et al.) use
+ \csbxint{eval} (et al.) which have the usual macro interface (with one mandatory
+ argument).
\end{description}
The |;| also serves as syntax terminator for \csbxint{defvar} and
@@ -5969,7 +6014,7 @@ Miscellaneous notes:
% listparindent=\leftmarginiii]
\funcdesc[]{random} returns a random float |x| verifying |0 <= x < 1|. It obeys
- the prevailing precision as set by \csbxint{Digits}: i.e. with |P| being the
+ the prevailing precision as set by \csbxint{Digits}: i.e.\@ with |P| being the
precision the random float multiplied by |10^P| is an integer, uniformly
distributed in the |0..10^P-1| range.
@@ -5986,7 +6031,7 @@ Miscellaneous notes:
\end{everbatim*}
\funcdesc[]{qrand} returns a random float |0 <= x < 1| using \dtt{16} digits of
- precision (i.e. |10^{16}x| is an integer). This is provided when speed is a
+ precision (i.e.\@ |10^{16}x| is an integer). This is provided when speed is a
at premium as it is optimized for precision being precisely \dtt{16}.%
\begin{everbatim*}
@@ -6074,7 +6119,7 @@ Recall that this is NOT done automatically, for example when adding fractions.
\item[ilog10(x)]\hypertarget{func:ilog10-ii}
in |\xintiiexpr| the integer exponent $a$ such that $10^a\leq
\mathrm{abs}(x)< 10^{a+1}$; returns (this may evolve in future)
- \dtt{\xintiieval{ilog10(0)}} if $x$ vanishes (i.e. \dtt{0x7fff8000}).
+ \dtt{\xintiieval{ilog10(0)}} if $x$ vanishes (i.e.\@ \dtt{0x7fff8000}).
\begin{everbatim*}
\xintiieval{ilog10(1), ilog10(-1234567), ilog10(-123456789123456789), ilog10(2**31)}\par
\end{everbatim*}
@@ -6359,7 +6404,7 @@ $\xintthefloatexpr subs(((x-1)/x, x/x, (x+1)/x), x=2**30)\relax
\end{everbatim*}
If the input vanishes the function outputs
- \dtt{\xinteval{ilog10(0)}} (i.e. |-0x7fff8000| which is near the
+ \dtt{\xinteval{ilog10(0)}} (i.e.\@ |-0x7fff8000| which is near the
minimal TeX number |-0x7fffffff|). This is also subject to change.
The \hyperlink{func:ilog10-ii}{integer-only} variant for \csbxint{iiexpr}
@@ -6398,7 +6443,7 @@ $\xintthefloatexpr subs(((x-1)/x, x/x, (x+1)/x), x=2**30)\relax
in first case if |A| is zero or negative and in second case if |B <= A|.
Attention that the arguments are first converted to integers using
- \csbxint{Num} (i.e. truncated towards zero).
+ \csbxint{Num} (i.e.\@ truncated towards zero).
The function can be used in all three parsers. Of course the size is not
limited (but in the float parser, the integer will be rounded if involved
@@ -6537,7 +6582,7 @@ mod(11/7,1/13)- (11/7)/:(1/13), (11/7)//(1/13)\relax\newline
\end{everbatim*}
The arguments must be (expand to) short integers.
- \funcdesc[a, b]{pfactorial} computes partial factorials i.e.
+ \funcdesc[a, b]{pfactorial} computes partial factorials i.e.\@
|pfactorial(a,b)| evaluates the product |(a+1)...b|.
\begin{everbatim*}
\xinttheexpr seq(pfactorial(20, i), i=20..30)\relax
@@ -6932,7 +6977,7 @@ like extracting directly), but it is leaner to drop the extra «packing».
You can try with |\xintDigits:=1004\relax| and |2e-501| in place of
|\xintDigits:=87\relax| and |2e-43|, but be patient for some seconds
for the result. Of course don't truncate the final
- result to only \dtt{83} fractional decimal digits but \dtt{1000}...
+ result to only \dtt{83} fractional decimal digits but \dtt{1000}...\@
and better to wrap the whole thing in |\message| or
|\immediate\write128| or |\edef| because it will then run in the right margin.
@@ -6947,7 +6992,7 @@ like extracting directly), but it is leaner to drop the extra «packing».
\footnote{Prior to |1.4|, one could use |@| in |rrseq()| and |iterr()| as an
alias to |@1|. This undocumented feature is dropped and |@| will break |rrseq()| and |iterr()|.}
%
- Using |rrseq()| with |@1| etc... accessors may be perhaps a bit
+ Using |rrseq()| with |@1| etc...\@ accessors may be perhaps a bit
more efficient than using |rseq()| with a list as staring value and
constructs such as |@[0]|, |@[1]| (or rather |@[-1]|, |@[-2]| to
mimick what |@1|, |@2|, |@3|, |@4| and |@@(integer)| do in |rrseq()|.
@@ -7089,7 +7134,7 @@ First Fibonacci number at least |2^31| and its index
On the other hand integers from |\xintexpr 1..10\relax| are already in
raw \xintfracname format for example |3/1[0]| which speeds up their usage
- in the macros internally involved in computations... thus perhaps what one
+ in the macros internally involved in computations...\@ thus perhaps what one
gains on one side is lost on the other side.
\item |a..[d]..b| generates «real» numbers along arithmetic progression
@@ -7102,7 +7147,7 @@ First Fibonacci number at least |2^31| and its index
\end{everbatim*}
At |1.4|,\CHANGED{1.4} this generator behaves in \csbxint{floatexpr} exactly as in
- \csbxint{expr}, i.e. \emph{exactly}. This is breaking
+ \csbxint{expr}, i.e.\@ \emph{exactly}. This is breaking
change.
\begin{everbatim*}
\xintDigits:=6;
@@ -7208,7 +7253,7 @@ more.
Notice though that our interpretation of the syntax is more general than
NumPy's concepts (of basic slicing/indexing):
\begin{itemize}
-\item slicing and itemizing apply also to non-bracketed objects i.e. \emph{oples},
+\item slicing and itemizing apply also to non-bracketed objects i.e.\@ \emph{oples},
\item the leaves do not have to be all at the same depth,
\item there are never any out-of-range index errors: out-of-range indices
are silently ignored.
@@ -7230,7 +7275,7 @@ secondExtractedScalar = \xintexpr myArray[0,1,0]\relax\par
\end{everbatim*}
As said before, \emph{stepping} is not yet implemented. Also the NumPy
-extension to Python for item selection (i.e. via a |tuple| of comma separated
+extension to Python for item selection (i.e.\@ via a |tuple| of comma separated
indices) is not yet implemented.
\subsection{Tacit multiplication}
@@ -7678,7 +7723,7 @@ have gained experience in using this interface...):
\xintdeffunc bar(x) := \xintfloatexpr bar(float(x))\relax;
\end{everbatim}
With this the transplanted float-function will expand in \csbxint{expr} as
- it would have in \csbxint{floatexpr}, i.e. using float operations; this is
+ it would have in \csbxint{floatexpr}, i.e.\@ using float operations; this is
different from declaring the function again with the same expression as used
for the original, as it would have then been parsed with a mapping of infix
operators to the macros doing the exact operations, not the floating point
@@ -7758,7 +7803,7 @@ At |1.4| we did some obstinate work to make this working but:
\end{itemize}
Conclusion: if some \csbxint{deffunc} break, check if it does not fit the
-above criterion before reporting... and recall \csbxint{NewFunction} is your
+above criterion before reporting...\@ and recall \csbxint{NewFunction} is your
friend. It has the big advantage of declaring a function for all parsers
simultaneously!
@@ -7766,7 +7811,7 @@ A special note on \func{subs}: it is and has always been hopeless in \csbxint{de
context. All it does (if it works at all) after being malaxed by
\csbxint{deffunc} is to copy over at the indicated places the \emph{recipe} to
compute something. Thus at every location where that something is needed it will be
-evaluated from scratch again. Yes, this is disappointing. But... on the other
+evaluated from scratch again. Yes, this is disappointing. But...\@ on the other
hand the more general \func{seq} does work, or pretends to work. Let me
illustrate to make thinks clear. We start with this:
\begin{everbatim*}
@@ -8031,7 +8076,7 @@ $$
$$
\end{everbatim*}%
For some hair-raising experience check the \csbxint{verbosetrue} output in the
-log... here is an alternative with two (three, counting |dprod()|) helper
+log...\@ here is an alternative with two (three, counting |dprod()|) helper
functions:
\begin{everbatim*}
% annoying that Tr also starts Trace, but Spur is available
@@ -8222,7 +8267,7 @@ This package was first included in release |1.3e| (|2019/04/05|) of
At |1.4e| (|2021/05/05|) the accuracy was significantly
increased:\CHANGED{1.4e} formerly the high-level user interface used to define
the functions had as consequences that intermediate steps of the computations
-could not operate with guard digits, and as a result so the last two digits
+could not operate with guard digits, and as a result the last two digits
were most of the time off (at least the last one). Now, computations are done
internally in extended precision, and the accuracy is high up to the last
digits, with faithful rounding and high probability of correct rounding. And
@@ -8677,7 +8722,7 @@ anecdotical evidence showing it is good.
\renewcommand{\etocaftertochook}{\addvspace{\bigskipamount}}
\part{The macro layer for expandable computations: \xintcorename, \xintname,
- \xintfracname,...}
+ \xintfracname,...\@}
\RaisedLabel[15]{sec:bundle}
@@ -8772,7 +8817,7 @@ traps\dots,\footnote{The latter exist as work-in-progress for some time in the
source code.} have not been implemented, only the notion of `scientific
notation with a given number of significant figures'.%
%
-\footnote{multiplication of two floats with |P=\xinttheDigits| digits is
+\footnote{Multiplication of two floats with |P=\xinttheDigits| digits is
first done exactly then rounded to |P| digits, rather than using a
specially tailored multiplication for floating point numbers which
would be more efficient (it is a waste to evaluate fully the
@@ -8928,7 +8973,7 @@ before further processing. Formerly, the initial rounding was done to |P+2|
digits (and at least |P+3| for the power operation.)
The more ambitious model would be for the computing macros to obey the
-intrinsic precision of their inputs, i.e. to compute the correct rounding to
+intrinsic precision of their inputs, i.e.\@ to compute the correct rounding to
|P| digits of the exact mathematical result corresponding to inputs allowed to
have their own higher precision.%
%
@@ -8985,7 +9030,7 @@ An expandable macro can not execute a |\def| or an |\edef|. But the macro must
expand its arguments to find the digits it is supposed to manipulate. \TeX{}
provides a tool to do the job of (expandable !) repeated expansion of the
first token found until hitting something non expandable, such as a digit, a
-|\def| token, a brace, a |\count| token, etc... is found. A space token also
+|\def| token, a brace, a |\count| token, etc...\@ is found. A space token also
will stop the expansion (and be swallowed, contrarily to the non-expandable
tokens).
@@ -9170,7 +9215,7 @@ margin annotation signals what is the argument type.
\item the fraction input format\ntype{\Ff} applies to the arguments of
\xintfracname macros handling genuine fractions. It allows two types
of inputs: general and restricted. The restricted type is parsed faster,
- but... is restricted.
+ but...\@ is restricted.
\begin{description}
\item[general:] inputs of the shape |A.BeC/D.EeF|. Example:
\begin{everbatim*}
@@ -9278,7 +9323,7 @@ and |B| are integers, |B| is positive, and |N| is a ``short'' integer. The
output is not reduced to smallest terms. The |A| and |B| may end with zeroes
(\emph{i.e}, |N| does not represent all powers of ten). The denominator |B| is
always strictly positive. There is no |+| sign. The |-| is always first if
-present (i.e. the denominator on output is always positive.) The output will
+present (i.e.\@ the denominator on output is always positive.) The output will
be expressed as such a fraction even if the inputs are both integers and the
mathematical result is an integer. The |B=1| is not removed.%
%
@@ -9290,7 +9335,7 @@ sign and is followed by a dot and |P-1| digits. Trailing zeroes are not
trimmed. There is one exceptional case:
\begin{itemize}[nosep]
\item if the value is mathematically zero, it is output as |0.e0|,
- i.e. zeros after the decimal mark are removed and the exponent is always |0|.
+ i.e.\@ zeros after the decimal mark are removed and the exponent is always |0|.
\end{itemize}
Future versions of the package may modify this.
\end{itemize}
@@ -9544,7 +9589,7 @@ recover the $1238/1157$ therein!
\end{framed}
-\subsection{\csh{ifcase}, \csh{ifnum}, ... constructs}\label{sec:ifcase}
+\subsection{\csh{ifcase}, \csh{ifnum}, ...\@ constructs}\label{sec:ifcase}
When using things such as |\ifcase \xintSgn{\A}| one has to make sure to leave
a space after the closing brace for \TeX{} to
@@ -9798,7 +9843,7 @@ have any underscore in their names (for obscure legacy reasons).
\xinttoolsname will not overwrite them. The same meanings are independently
available under the names |\xintodef|, |\xintoodef|, etc...
-Apart from |\thexintexpr|, |\thexintiexpr|, ...
+Apart from |\thexintexpr|, |\thexintiexpr|, ...\@
all other public macros from the \xintname bundle packages start with |\xint|.
For the good functioning of the macros, standard catcodes are assumed for the
@@ -9824,8 +9869,8 @@ temporarily turn off potentially active characters.
\label{ssec:origins}
|2013/03/28.| Package |bigintcalc| by \textsc{Heiko Oberdiek} already
-provides expandable arithmetic operations on ``big integers'',
-exceeding the \TeX{} limits (of $2^{31}-1$), so why another%
+provides expandable arithmetic operations on «big integers», i.e. integers
+beyond the \TeX\ bound $2^{31}-1$, so why another%
%
\footnote{this section was written before the \xintfracname package; the
author is not aware of another package allowing expandable
@@ -9897,7 +9942,7 @@ $5000$ and $10000$ respectively.
The \xintkernelname package contains mainly the common code base for handling
the load-order of the bundle packages, the management of catcodes at loading
time, definition of common constants and macro utilities which are used
-throughout the code etc ... it is automatically loaded by all packages of the
+throughout the code etc ...\@ it is automatically loaded by all packages of the
bundle.
It provides a few macros possibly useful in other contexts.
@@ -10004,7 +10049,7 @@ argument first.
\label{xintFirstOne}
\csa{xintFirstOne}\marg{list}\etype{n} returns the first item as a braced
-item. I.e. if it was braced the braces are kept, else the braces are added.
+item. i.e.\@ if it was braced the braces are kept, else the braces are added.
It looks like using \csbxint{FirstItem} within braces, but the difference is
when the input was empty. Then the output is empty.\NewWith{1.4}
@@ -10014,7 +10059,7 @@ It does no expansion, which should be obtained via suitable |\expandafter|'s.
\label{xintLastOne}
\csa{xintLastOne}\marg{list}\etype{n} returns the last item as a braced
-item. I.e. if it was braced the braces are kept, else the braces are added.
+item. i.e.\@ if it was braced the braces are kept, else the braces are added.
It looks like using \csbxint{LastItem} within braces, but the
difference is when the input was empty. Then the output is empty.\NewWith{1.4}
@@ -10088,7 +10133,7 @@ avoids having to insert absolute values in formulas.
The underlying engine Random Number Generator works with an array of 55 28bits
integers. To produce a « uniform » random integer in a given range
\dtt{0..x-1} it produces next pseudo-random |y| (supposedly uniformly
-distributed, i.e. non-uniformity can be neglected) such that \dtt{$0\leq y <
+distributed, i.e.\@ non-uniformity can be neglected) such that \dtt{$0\leq y <
2^{28}$} and the output is the rounding of \dtt{$x*(y/2^{28})$}, with upper
bound |x| remapped to |0|. This has following corollaries:
\begin{enumerate}
@@ -10282,7 +10327,7 @@ All macros require strict integer format on input and produce
strict integer format on output, except:\IMPORTANT
\begin{itemize}[nosep]
\item \csbxint{iNum} which converts to strict integer format an input in
- \emph{extended} integer format, i.e. admitting multiple leading plus or
+ \emph{extended} integer format, i.e.\@ admitting multiple leading plus or
minus signs, then possibly leading zeroes, then digits,
\item and \csbxint{Num} which is an alias for the former, which gets redefined by
\xintfracname to accept more generally also decimal numbers or fractions as
@@ -10365,17 +10410,17 @@ truncated towards zero.
\subsection{\csh{xintDSL}}\label{xintDSL}
-|\xintDSL|\n\etype{f} is decimal shift left, \emph{i.e.} multiplication by
+|\xintDSL|\n\etype{f} is decimal shift left, \emph{i.e.\@} multiplication by
ten.
\subsection{\csh{xintDSR}}\label{xintDSR}
-|\xintDSR|\n\etype{f} is truncated decimal shift right, \emph{i.e.} it is the
+|\xintDSR|\n\etype{f} is truncated decimal shift right, \emph{i.e.\@} it is the
truncation of |N/10| towards zero.
\subsection{\csh{xintDSRr}}\label{xintDSRr}
-|\xintDSRr|\n\etype{f} is rounded decimal shift right, \emph{i.e.} it is the
+|\xintDSRr|\n\etype{f} is rounded decimal shift right, \emph{i.e.\@} it is the
rounding of |N/10| away from zero. It is needed in \xintcorename for use by
\csbxint{iiDivRound}.
@@ -10627,7 +10672,7 @@ inputs: decimal, scientific numbers, fractions. The |ii| macros provided here
by \xintname can be nested inside macros of \xintfracname but the opposite
does not apply, because the output format of the \xintfracname macros, even
for representing integers, is not understood by the |ii| macros. The «Boolean
-macros» \csbxint{AND} etc... are exceptions though, they work fine if served
+macros» \csbxint{AND} etc...\@ are exceptions though, they work fine if served
as inputs some \xintfracname output, despite doing only \fexpan
sion. Prior to |1.2o|, these macros did apply the \csbxint{Num}
or the more general \xintfracname general parsing, but this overhead was
@@ -10739,7 +10784,7 @@ by |10^x| hence produces |0| if |N=0| whereas
\subsection{\csh{xintDSH}}\label{xintDSH}
|\xintDSH|\x\n\etype{\numx f} is parametrized decimal shift. When |x| is
-negative, it is like iterating \csbxint{DSL} \verb+|x|+ times (\emph{i.e.}
+negative, it is like iterating \csbxint{DSL} \verb+|x|+ times (\emph{i.e.\@}
multiplication by $10^{-x}$). When |x| positive, it is like iterating
\csbxint{DSR} |x| times (and is more efficient), and for a non-negative |N|
this is thus the same as the quotient from the Euclidean division by |10^x|.
@@ -10766,7 +10811,7 @@ positive, and |N = 10^x Q - R| if |Q| turns out to be negative,
which is exactly the case when |N| is at most |-10^x|.
|\xintDSx|\x\n\etype{\numx f} for |x| negative is exactly as
-|\xintDSH|\x\n, \emph{i.e.} multiplication by $10^{-|x|}$. For |x| zero or
+|\xintDSH|\x\n, \emph{i.e.\@} multiplication by $10^{-|x|}$. For |x| zero or
positive it returns the two numbers |{Q}{R}| described above, each one within
braces. So |Q| is |\xintDSH|\x\n, and |R| is |\xintDSHr|\x\n, but computed
simultaneously.
@@ -11079,14 +11124,14 @@ $b-a$ is not too large, one may use an ad hoc function definition such as:
\subsection{\csh{xintiiMax}}\label{xintiiMax}
|\xintiiMax|\n\m\etype{ff} returns the largest of the two in the sense
-of the order structure on the relative integers (\emph{i.e.} the right-most
+of the order structure on the relative integers (\emph{i.e.\@} the right-most
number if they are put on a line with positive numbers on the right):
|\xintiiMax {-5}{-6}|\dtt{=\xintiiMax{-5}{-6}}.
\subsection{\csh{xintiiMin}}\label{xintiiMin}
|\xintiiMin|\n\m\etype{ff} returns the smallest of the two in the sense of the
-order structure on the relative integers (\emph{i.e.} the left-most number if
+order structure on the relative integers (\emph{i.e.\@} the left-most number if
they are put on a line with positive numbers on the right): |\xintiiMin
{-5}{-6}|\dtt{=\xintiiMin{-5}{-6}}.
@@ -11151,25 +11196,25 @@ otherwise.
\subsection{\csh{xintXOR}}\label{xintXOR}
|\xintXOR{f}{g}|\etype{ff} returns \dtt{1} if exactly one of |f| or |g|
-is true (i.e. non-zero), else \dtt{0}.
+is true (i.e.\@ non-zero), else \dtt{0}.
\subsection{\csh{xintANDof}}\label{xintANDof}
\csa{xintANDof}|{{a}{b}{c}...}|\etype{f{$\to$}\lowast f} returns \dtt{1} if
-all are true (i.e. non zero) and \dtt{0} otherwise. The list argument may be a
+all are true (i.e.\@ non zero) and \dtt{0} otherwise. The list argument may be a
macro, it (or rather its first token) is \fexpan ded first to deliver its
items.
\subsection{\csh{xintORof}}\label{xintORof}
\csa{xintORof}|{{a}{b}{c}...}|\etype{f{$\to$}\lowast f} returns \dtt{1} if at
-least one is true (i.e. does not vanish), else it produces \dtt{0}. The list
+least one is true (i.e.\@ does not vanish), else it produces \dtt{0}. The list
argument may be a macro, it is \fexpan ded first.
\subsection{\csh{xintXORof}}\label{xintXORof}
\csa{xintXORof}|{{a}{b}{c}...}|\etype{f{$\to$}\lowast f} returns \dtt{1} if an
-odd number of them are true (i.e. do not vanish), else it produces \dtt{0}.
+odd number of them are true (i.e.\@ do not vanish), else it produces \dtt{0}.
The list argument may be a macro, it is \fexpan ded first.
\subsection{\csh{xintiiGCD}}
@@ -11421,7 +11466,7 @@ their macro definitions. Only these two are redefined:
\hyperref[xintNumFrac]{\string\xintNum} and
\hyperref[xintLenFrac]{\string\xintLen}. As explained in \autoref{ssec:inputs}
and \autoref{ssec:outputs} the interchange format for the \xintfracname
-macros, i.e. |A/B[N]|, is not understood by the |ii|-named macros of
+macros, i.e.\@ |A/B[N]|, is not understood by the |ii|-named macros of
\xintcorename/\xintname which expect the so-called strict integer format.
Hence, to use such an |ii|-macro with an output from an \xintfracname macro,
an extra \csbxint{Num} wrapper is required. But macros already defined by
@@ -13687,7 +13732,7 @@ between%
\leftedline{|\xintRationalSeries {A}{B}{\first}{\ratio{\g}}|}
%
\leftedline{and |\xintRationalSeriesX {A}{B}{\first}{\ratio}{\g}|.} First the
-location of braces differ... then, in the former case |\first| is a
+location of braces differ...\@ then, in the former case |\first| is a
\emph{no-parameter} macro expanding to a fractional number, and in the latter,
it is a
\emph{one-parameter} macro which will use |\g|. Furthermore the |X| variant
@@ -14102,7 +14147,7 @@ efficient chaining of such series evaluations.
In this final section, the use of \csbxint{FxPtPowerSeries} (and
\csbxint{PowerSeries}) will be
-illustrated on the (expandable... why make things simple when it is so easy to
+illustrated on the (expandable...\@ why make things simple when it is so easy to
make them difficult!) computations of the first digits of the decimal expansion
of the familiar constants $\log 2$ and $\pi$.
@@ -14328,7 +14373,7 @@ laptop (a 2012 model) this took about $5.05$ seconds last time I tried.%
for example digits are represented and manipulated via their ascii-code !
all computations must convert from ascii-code to cpu words; furthermore
nothing can be stored away. And there is no memory storage with |O(1)| time
- access... if expandability is to be verified.}
+ access...\@ if expandability is to be verified.}
%
@@ -15635,7 +15680,7 @@ job without the initial expansion of the \meta{list} argument.
parameter macro |\macro| to each item in the \meta{list} given as second
argument and returns a new list with these outputs: each item is given one after
the other as parameter to |\macro| which is expanded at that time (as usual,
-\emph{i.e.} fully for what comes first), the results are braced and output
+\emph{i.e.\@} fully for what comes first), the results are braced and output
together as a succession of braced items (if |\macro| is defined to start with a
space, the space will be gobbled and the |\macro| will not be expanded; it is
allowed to have its own arguments, the list items serve as last arguments to
@@ -16871,7 +16916,7 @@ The main problems are caused by active characters, because \csbxint{expr} et
al.\@ expand forward whatever comes from token stream; they apply |\string|
only in a second step. For example the catcode of |&| from |&&| Boolean
disjunction is not really important as long as it is not active, or comment,
-or escape... or brace... or ignored... in brief, as long as it is reasonable,
+or escape...\@ or brace...\@ or ignored...\@ in brief, as long as it is reasonable,
and in particular whether |@| is of catcode letter or other does not matter.
It is always possible to insert manually the |\string| in the expression
@@ -17013,7 +17058,7 @@ numbers and towards $-\infty$ for negative ones.
An optional parameter |D| within brackets, immediately after |\xintiexpr| is
allowed: it instructs (for |D>0|) the expression to do its final rounding to
-the nearest value with that many digits after the decimal mark, \emph{i.e.},
+the nearest value with that many digits after the decimal mark, i.e.\@
|\xintiexpr [D] <expression>\relax| is equivalent (in case of a single
expression) to |\xintexpr round(<expression>, D)\relax|.
@@ -17889,14 +17934,14 @@ Prime numbers are always cool
x=10001..[2]..10200)\relax
\end{everbatim*}
-The syntax in this last example may look a bit involved (... and it is so I
+The syntax in this last example may look a bit involved (...\@ and it is so I
admit). First |x/:m| computes |x modulo m| (this is the modulo with respect to
floored division). The |(x)?{yes}{no}| construct checks if |x| (which
-\emph{must} be within parentheses) is true or false, i.e. non zero or zero. It
+\emph{must} be within parentheses) is true or false, i.e.\@ non zero or zero. It
then executes either the |yes| or the |no| branch, the non chosen branch is
\emph{not} evaluated. Thus if |m| divides |x| we are in the second (``false'')
branch. This gives a |-1|. This |-1| is the argument to a |??| branch which is
-of the type |(y)??{y<0}{y=0}{y>0}|, thus here the |y<0|, i.e., |break(0)| is
+of the type |(y)??{y<0}{y=0}{y>0}|, thus here the |y<0|, i.e.\@, |break(0)| is
chosen. This |0| is thus given to another |?| which consequently chooses
|omit|, hence the number is not kept in the list. The numbers which survive
are the prime numbers.
@@ -18080,7 +18125,7 @@ The input is still assumed positive. There is a deliberate blank before
\csa{IsNotDivisibleBy} to use this feature of \csbxint{Apply}: a space stops the
expansion of the applied macro (and disappears). This expansion will be done by
\csbxint{ANDof}, which has been designed to skip everything as soon as it finds
-a false (i.e. zero) input. This way, the efficiency is considerably improved.
+a false (i.e.\@ zero) input. This way, the efficiency is considerably improved.
We did generate via the \csbxint{Seq} too many potential divisors though. Later
sections give two variants: one with \csbxint{iloop} (\autoref{ssec:primesII})
@@ -18787,7 +18832,7 @@ overhead in parsing fractions and scientific numbers as are acceptable by
% values to List. The \oodef expands exactly twice (via a bunch of \expandafter's)
\meaning\z
\endgroup
-\end{everbatim*} (the spaces after \string\d, etc... come from the use of the
+\end{everbatim*} (the spaces after \string\d, etc...\@ come from the use of the
|\meaning| primitive.)
The choice of pivot as first element is bad if the list is already almost
@@ -19629,7 +19674,7 @@ math shift catcode.
\fi
\XINT_providespackage
\ProvidesPackage {xintkernel}%
- [2021/06/11 v1.4i Paraphernalia for the xint packages (JFB)]%
+ [2021/07/13 v1.4j Paraphernalia for the xint packages (JFB)]%
% \end{macrocode}
% \subsection{Constants}
% \begin{macrocode}
@@ -20589,7 +20634,7 @@ mode) and will go ahead hoping repair\endcsname
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xinttools}%
- [2021/06/11 v1.4i Expandable and non-expandable utilities (JFB)]%
+ [2021/07/13 v1.4j Expandable and non-expandable utilities (JFB)]%
% \end{macrocode}
% \lverb|\XINT_toks is used in macros such as \xintFor. It is not used
% elsewhere in the xint bundle.|
@@ -21625,6 +21670,21 @@ mode) and will go ahead hoping repair\endcsname
% \subsection{\csh{xintSeq}}
% \lverb|1.09c. Without the optional argument puts stress on the input stack,
% should not be used to generated thousands of terms then.|
+%
+% \changed{1.4j}
+% This venerable macro had a brace removal bug in case it produced a single
+% number: |\xintSeq{10}{10}| expanded to |10| not |{10}|. When I looked at the
+% code the bug looked almost deliberate to me, but reading the documentation
+% (which I have not modified), the behaviour is really unexpected. And the
+% variant with step parameter |\xintSeq[1]{10}{10}| did produce |{10}|, so
+% yes, definitely it was a bug!
+%
+% I take this occasion to do some style (and perhaps efficiency) refactoring
+% in the coding. I feel there is room for improvement, no time this time.
+% And I don't touch the variant with step parameter.
+%
+% Memo: \xintexprnameimp has some variants, a priori on ultra quick look
+% they do not look like having similar bug as this one had.
% \begin{macrocode}
\def\xintSeq {\romannumeral0\xintseq }%
\def\xintseq #1{\XINT_seq_chkopt #1\xint_bye }%
@@ -21636,39 +21696,41 @@ mode) and will go ahead hoping repair\endcsname
}%
\def\XINT_seq_noopt #1\xint_bye #2%
{%
- \expandafter\XINT_seq\expandafter
- {\the\numexpr#1\expandafter}\expandafter{\the\numexpr #2}%
+ \expandafter\XINT_seq
+ \the\numexpr#1\expandafter.\the\numexpr #2.%
}%
-\def\XINT_seq #1#2%
+\def\XINT_seq #1.#2.%
{%
- \ifcase\ifnum #1=#2 0\else\ifnum #2>#1 1\else -1\fi\fi\space
- \expandafter\xint_stop_atfirstoftwo
- \or
- \expandafter\XINT_seq_p
- \else
- \expandafter\XINT_seq_n
- \fi
- {#2}{#1}%
+ \ifnum #1=#2 \xint_dothis\XINT_seq_e\fi
+ \ifnum #2>#1 \xint_dothis\XINT_seq_pa\fi
+ \xint_orthat\XINT_seq_na
+ #2.{#1}{#2}%
}%
-\def\XINT_seq_p #1#2%
+\def\XINT_seq_e#1.#2{}%
+\def\XINT_seq_pa {\expandafter\XINT_seq_p\the\numexpr-\xint_c_i+}%
+\def\XINT_seq_na {\expandafter\XINT_seq_n\the\numexpr\xint_c_i+}%
+\def\XINT_seq_p #1.#2%
{%
\ifnum #1>#2
- \expandafter\expandafter\expandafter\XINT_seq_p
+ \expandafter\XINT_seq_p\the
\else
\expandafter\XINT_seq_e
\fi
- \expandafter{\the\numexpr #1-\xint_c_i}{#2}{#1}%
+ \numexpr #1-\xint_c_i.{#2}{#1}%
}%
-\def\XINT_seq_n #1#2%
+\def\XINT_seq_n #1.#2%
{%
\ifnum #1<#2
- \expandafter\expandafter\expandafter\XINT_seq_n
+ \expandafter\XINT_seq_n\the
\else
\expandafter\XINT_seq_e
\fi
- \expandafter{\the\numexpr #1+\xint_c_i}{#2}{#1}%
+ \numexpr #1+\xint_c_i.{#2}{#1}%
}%
-\def\XINT_seq_e #1#2#3{ }%
+% \end{macrocode}
+% Note at time of the |1.4j| bug fix : I definitely should improve this branch
+% and diminish the number of expandafter's but no time this time.
+% \begin{macrocode}
\def\XINT_seq_opt [\xint_bye #1]#2#3%
{%
\expandafter\XINT_seqo\expandafter
@@ -22933,7 +22995,7 @@ mode) and will go ahead hoping repair\endcsname
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xintcore}%
- [2021/06/11 v1.4i Expandable arithmetic on big integers (JFB)]%
+ [2021/07/13 v1.4j Expandable arithmetic on big integers (JFB)]%
% \end{macrocode}
% \subsection{(WIP!) Error conditions and exceptions}
% \lverb|As per the Mike Cowlishaw/IBM's General Decimal Arithmetic Specification
@@ -26287,7 +26349,7 @@ mode) and will go ahead hoping repair\endcsname
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xint}%
- [2021/06/11 v1.4i Expandable operations on big integers (JFB)]%
+ [2021/07/13 v1.4j Expandable operations on big integers (JFB)]%
% \end{macrocode}
% \subsection{More token management}
% \begin{macrocode}
@@ -28866,7 +28928,7 @@ mode) and will go ahead hoping repair\endcsname
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xintbinhex}%
- [2021/06/11 v1.4i Expandable binary and hexadecimal conversions (JFB)]%
+ [2021/07/13 v1.4j Expandable binary and hexadecimal conversions (JFB)]%
% \end{macrocode}
% \subsection{Constants, etc...}
% \lverb|1.2n switches to \csname-governed expansion at various places.|
@@ -29538,7 +29600,7 @@ mode) and will go ahead hoping repair\endcsname
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xintgcd}%
- [2021/06/11 v1.4i Euclide algorithm with xint package (JFB)]%
+ [2021/07/13 v1.4j Euclide algorithm with xint package (JFB)]%
% \end{macrocode}
% \subsection{\csh{xintBezout}}
% \lverb|&
@@ -30138,7 +30200,7 @@ mode) and will go ahead hoping repair\endcsname
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xintfrac}%
- [2021/06/11 v1.4i Expandable operations on fractions (JFB)]%
+ [2021/07/13 v1.4j Expandable operations on fractions (JFB)]%
% \end{macrocode}
% \subsection{\csh{XINT_cntSgnFork}}
% \lverb|1.09i. Used internally, #1 must expand to \m@ne, \z@, or \@ne or
@@ -32971,7 +33033,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% See comments for |\xintGCDof|. \xintnameimp provides the integer only
% \csbxint{iiLCMof}.
%
-% \changes{1.4d}{}
+% \changed{1.4d}{}
% Sadly, although a public \xintfracnameimp macro, it did not (since |1.4|)
% sanitize its arguments like other \xintfracnameimp macros.
%
@@ -35606,7 +35668,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xintseries}%
- [2021/06/11 v1.4i Expandable partial sums with xint package (JFB)]%
+ [2021/07/13 v1.4j Expandable partial sums with xint package (JFB)]%
% \end{macrocode}
% \subsection{\csh{xintSeries}}
% \begin{macrocode}
@@ -36114,7 +36176,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xintcfrac}%
- [2021/06/11 v1.4i Expandable continued fractions with xint package (JFB)]%
+ [2021/07/13 v1.4j Expandable continued fractions with xint package (JFB)]%
% \end{macrocode}
% \subsection{\csh{xintCFrac}}
% \begin{macrocode}
@@ -37507,7 +37569,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% \begin{macrocode}
\XINT_providespackage
\ProvidesPackage{xintexpr}%
- [2021/06/11 v1.4i Expandable expression parser (JFB)]%
+ [2021/07/13 v1.4j Expandable expression parser (JFB)]%
\catcode`! 11
\let\XINT_Cmp \xintiiCmp
\def\XINTfstop{\noexpand\XINTfstop}%
@@ -38191,13 +38253,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% The None is here handled as nil, i.e. it is unpacked, which is fine
% as the documentations says nutples are unpacked.
%
-% This is somewhat complicated here due to the macro interfaces of
-% \xintFirstOne, \xintLastOne and \xintLength which used a braced
-% not a delimited argument, this forces here some re-grab which adds overhead.
-%
-% To avoid this one would like to move the check to inside {#2}, but then
-% there is a difficulty caused by the nil (or None), if we apply a string
-% technique as it will hit the closing brace.
%|
% \begin{macrocode}
\def\XINT:NEhook:f:LFL #1{\expandafter#1\expandafter}%
@@ -44532,10 +44587,10 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\expandafter\xint_secondoftwo
\fi
{\immediate\write-1{Reloading xinttrig library using Digits=\xinttheDigits.}}%
-{\expandafter\gdef\csname xintlibver@trig\endcsname{2021/06/11 v1.4i}%
+{\expandafter\gdef\csname xintlibver@trig\endcsname{2021/07/13 v1.4j}%
\XINT_providespackage
\ProvidesPackage{xinttrig}%
-[2021/06/11 v1.4i Trigonometrical functions for xintexpr (JFB)]%
+[2021/07/13 v1.4j Trigonometrical functions for xintexpr (JFB)]%
}%
% \end{macrocode}
% \subsection{Ensure used letters are dummy letters}
@@ -45852,10 +45907,10 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
\expandafter\xint_secondoftwo
\fi
{\immediate\write-1{Reloading xintlog library using Digits=\xinttheDigits.}}%
-{\expandafter\gdef\csname xintlibver@log\endcsname{2021/06/11 v1.4i}%
+{\expandafter\gdef\csname xintlibver@log\endcsname{2021/07/13 v1.4j}%
\XINT_providespackage
\ProvidesPackage{xintlog}%
-[2021/06/11 v1.4i Logarithms and exponentials for xintexpr (JFB)]%
+[2021/07/13 v1.4j Logarithms and exponentials for xintexpr (JFB)]%
}%
% \end{macrocode}
% \subsection{\csh{xintreloadxintlog}}
@@ -45988,7 +46043,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
% my software. I was not expecting anyone to use it so I did back then in 2019
% a bit too expeditively the \xintExp thing on top of 10^x.
%
-% The 1.4e \PoorManExpr replaces and amends deceased \xintExp.
+% The 1.4e \PoorManExp replaces and amends deceased \xintExp.
%
% Before using \xintRound we screen out the case of zero as \xintRound in this
% case outputs no fractional digits.
@@ -46237,7 +46292,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2%
%
% 1.4e had the following bug (for Digits>8): big integer exponents used the
% log10()/pow10() based approach rather than the legacy macro path which goes
-% via \xintFloatPower, as done by \xintfloateval! As a result powers very
+% via \xintFloatPower, as done by \xintfloateval! As a result powers with very
% large integer exponents were more precise in \xintfloateval than in \xinteval!
%
% 1.4f fixes this. Also, it handles Digits<=8 as Digits>8, bringing much
@@ -47942,8 +47997,8 @@ xinttrig.sty:64
\TeX\strut. Version {\xintbndlversion} of {\xintbndldate}.\par
}
-\CheckSum {38591}% 1.4i
-% 38427 pour 1.4h
+\CheckSum {38590}% 1.4j
+% 38591 pour 1.4i, 38427 pour 1.4h
% 38423 pour 1.4g, 38212 pour 1.4f, 38813 pour 1.4e, 35184 pour 1.4d
% 35109 pour 1.4c, 35103 pour 1.4b, 34648 pour 1.4a, 34575 pour 1.4
% 33497 pour 1.3f, 33274 pour 1.3e, 31601 pour 1.3d, 31122 pour 1.3c
diff --git a/macros/generic/xint/xint.pdf b/macros/generic/xint/xint.pdf
index aefccc2af7..f9d5b3bb03 100644
--- a/macros/generic/xint/xint.pdf
+++ b/macros/generic/xint/xint.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index 28934e5a5f..2070d0dfd9 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -28,7 +28,7 @@
%
% \title{\sffamily easybook 文档类手册}
% \author{瞿毅}
-% \date{2021/07/12\hskip\ccwd\relax v1.27c\thanks{\url{https://gitee.com/texl3/easybook}}}
+% \date{2021/07/13\hskip\ccwd\relax v1.27d\thanks{\url{https://gitee.com/texl3/easybook}}}
%
% \maketitle
% \begin{abstract}
@@ -90,7 +90,7 @@
%
% \section{文档类选项}
% \label{sec:document class options}
-% 标准 \cls{book} 文类与 \cls{ctexbook} 文类的选项同样适用于本文档。除此之外选项分为两类
+% 标准文档类与 \CTeX 文档类的选项和命令同样适用于本文档,除此之外选项分为两类:
% \begin{itemize}
% \item 带有 \rexptarget\rexpstar{} 号的选项,需要在引入文档类的时候设定。
% \item 带有 \exptarget\expstar{} 号的选项,需要通过 \CTeX 宏集提供的用户接口命令 \tn{ctexset} 或节 \ref{sec:interface options} 中此选项所属模块接口命令设定。
@@ -148,7 +148,7 @@
% cjkfont = <adobe|fandol|founder|mac|macnew|macold|ubuntu|windows|none>
% \end{syntax}
% 中文字体采用 \CTeX 宏集包含的字库并与其一致,具体配置方案可以查看 \CTeX 使用手册。它与 \opt{fontset} 选项是等效的,如果没有指定 \opt{cjkfont} 的值,将会自动检测用户的操作系统并选择相应的字体。
-% \changes{v1.27c}{2021/07/12}{新增 \opt{cjkfont} 选项设置中文字体,原 \opt{font} 选项设置英文字体,中文字体使用 \CTeX 的字库。}
+% \changes{v1.27d}{2021/07/12}{新增 \opt{cjkfont} 选项设置中文字体,原 \opt{font} 选项设置英文字体,中文字体使用 \CTeX 的字库。}
% \end{function}
%
% 如果需要使用其它中文字体,可以在启用选项 \opt{cjkfont = none} 后,再使用 \pkg{xeCJK} 宏包的相关命令设置字体以及声明字体族:
@@ -188,7 +188,7 @@
% \begin{syntax}
% class = <(book)|article>
% \end{syntax}
-% 使用 \cls{easybook} 文档类可以有两种模式,默认为 \cls{book} 模式。选用 \opt{article} 会变为 \opt{oneside} 单面排版,同时使文档编号、结构等与标准 \cls{article} 文档类的特性相似,可用于短篇幅的文章,不需要再使用 \tn{chapter} 命令,此时节 \ref{sec:document command} 中目录命令的 \opt{chapter} 选项会失效,将以 \opt{section} 标题级别输出目录。也可以使用 \opt{book} 或 \opt{article} 选项指定文档类型。如果使用 \cls{ctexart} 配合 \pkg{easybase} 宏包,则 \opt{book} 宏包选项会失效。
+% 使用 \cls{easybook} 文档类可以有两种模式,默认为 \cls{book} 模式。选用 \opt{article} 会变为 \opt{oneside} 单面排版,同时使文档编号、结构等与标准 \cls{article} 文档类的特性相似,可用于短篇幅的文章,不需要再使用 \tn{chapter} 命令,此时节 \ref{sec:document command} 中目录命令的 \opt{chapter} 选项会失效,将以 \opt{section} 标题级别输出目录。也可以使用 \opt{book} 或 \opt{article} 选项指定文档类型。如果使用 \cls{ctexart} 配合 \pkg{easybase} 宏包,则宏包选项 \opt{book} 会失效。
% \changes{v1.23}{2021/03/16}{增加 article 文章模式,可用于短篇幅的文章。}
% \end{function}
%
@@ -280,7 +280,7 @@
% \changes{v1.26}{2021/06/28}{增加可以调整相对位置和格式的上标和下标命令 \tn{super}、\tn{sub} 和 \tn{supersub}。}
% \end{function}
%
-% 垂直和水平偏移默认值都是 0 pt,\meta{对齐方式} 的参数与 \opt{supersubalign} 相同。\meta{格式代码} 用于格式化上标和下标,可以插入字体或颜色等命令。代码中的最后一个命令可以接受一个为上标或下标的参数。上标和下标命令还分别具有更简短的等价命令 \tn{sp}、\tn{sb} 和 \tn{spb}。
+% 默认没有垂直和水平偏移,\meta{对齐方式} 的参数与 \opt{supersubalign} 相同。\meta{格式代码} 用于格式化上标和下标,可以插入字体或颜色等命令。代码中的最后一个命令可以接受一个为上标或下标的参数。上标和下标命令还分别具有更简短的等价命令 \tn{sp}、\tn{sb} 和 \tn{spb}。
%
% \section{接口选项}
% \label{sec:interface options}
@@ -317,19 +317,19 @@
% \end{syntax}
% \ding{229} 以上选项路径为 \opt{style/...}
% \changes{v1.10}{2021/01/08}{更改颜色实现方式与选项名。}
-% \changes{v1.23}{2021/02/02}{noto风格的数学字体独立出来,可自定义设置。}
+% \changes{v1.23}{2021/02/02}{noto 风格的数学字体独立出来,可自定义设置。}
% \changes{v1.23}{2021/02/09}{增加控制页面横线粗细的选项 \opt{rulewidth}。}
% \end{function}
%
% \begin{optdesc}
% \item[color] 预置了四种主题颜色,默认主题 \opt{none} 为黑白页面,主题颜色不包括超链接。
-% \begin{function}{\DeclareThemeColor}
-% \begin{syntax}
-% \tn{DeclareThemeColor}\{<风格名称>,<ctex@frame>,<ctex@emph>,<ctex@verb>\}
-% \end{syntax}
-% 可以使用 \tn{DeclareThemeColor} 命令声明新的主题颜色,它的参数以英文逗号分隔,第一部分为颜色风格名称,后面三部分为 HTML 颜色代码,构成主题颜色。类似地更改超链接颜色见小节 \ref{subsec:hyperlinks}。
-% \changes{v1.26}{2021/07/03}{使用 \tn{DeclareThemeColor} 命令声明新的颜色风格。}
-% \end{function}
+% \begin{function}{\DeclareThemeColor}
+% \begin{syntax}
+% \tn{DeclareThemeColor}\{<风格名称>,<ctex@frame>,<ctex@emph>,<ctex@verb>\}
+% \end{syntax}
+% 可以使用 \tn{DeclareThemeColor} 命令声明新的主题颜色,它的参数以英文逗号分隔,第一部分为颜色风格名称,后面三部分为 HTML 颜色代码,构成主题颜色。类似地更改超链接颜色见小节 \ref{subsec:hyperlinks}。
+% \changes{v1.26}{2021/07/03}{使用 \tn{DeclareThemeColor} 命令声明新的颜色风格。}
+% \end{function}
% \item[color-all] 统一设置主题的各部分颜色,参数是 6 个十六进制数字组成的 HTML 颜色代码,任意颜色的代码可以在常见的图片处理工具拾色器中查看。
% \item[multoc] 开启多栏目录,与节 \ref{sec:document command} 中目录命令的同名选项有相同效果。
% \item[withpart] 使章跟随每一部分编号,默认不跟随。
@@ -388,13 +388,13 @@
% \begin{optdesc}
% \item[linktype] \opt{edge} 使超链接为边框形式,\opt{various} 使超链接变为彩色,预置了四种颜色样式。\opt{none} 关闭超链接边框与颜色,此时 \opt{linkcolor} 选项无效。
% \item[linkcolor] 超链接颜色样式。
-% \begin{function}{\DeclareLinkColor}
-% \begin{syntax}
-% \tn{DeclareLinkColor}\{<风格名称>,<ctex@link>,<ctex@url>,<ctex@cite>\}
-% \end{syntax}
-% 可以使用 \tn{DeclareLinkColor} 命令声明新的超链接颜色样式,它的参数以英文逗号分隔,第一部分为颜色风格名称,后面三部分为 HTML 颜色代码,构成超链接颜色。
-% \changes{v1.26}{2021/07/03}{使用 \tn{DeclareLinkColor} 命令声明新的超链接颜色。}
-% \end{function}
+% \begin{function}{\DeclareLinkColor}
+% \begin{syntax}
+% \tn{DeclareLinkColor}\{<风格名称>,<ctex@link>,<ctex@url>,<ctex@cite>\}
+% \end{syntax}
+% 可以使用 \tn{DeclareLinkColor} 命令声明新的超链接颜色样式,它的参数以英文逗号分隔,第一部分为颜色风格名称,后面三部分为 HTML 颜色代码,构成超链接颜色。
+% \changes{v1.26}{2021/07/03}{使用 \tn{DeclareLinkColor} 命令声明新的超链接颜色。}
+% \end{function}
% \item[linkcol-all] 统一设置超链接的各部分颜色,参数是 6 个十六进制数字组成的 HTML 颜色代码,任意颜色的代码可以在常见的图片处理工具拾色器中查看。
% \item[linktoc] 将目录中的超链接取消、置于标题上、置于页码上或置于标题和页码上。
% \end{optdesc}
@@ -434,7 +434,7 @@
% listing-cap = <(\tn{sffamily}\tn{small})>
% footnote = <(\tn{rmfamily})>
% marginpar = <(\tn{rmfamily}\tn{footnotesize})>
-% math = <times|(noto)|notosans|nc|stix|charter|garamond|libertine|none>
+% math = <(times)|noto|notosans|nc|stix|charter|garamond|libertine|none>
% \end{syntax}
% \ding{229} 以上选项路径为 \opt{subfont/...}
% \changes{v1.10}{2021/01/08}{加入自定义非正文字体选项。}
@@ -474,7 +474,7 @@
% \item[datafile] 参考文献数据库的文件名,可以是单个文件也可以是以括号包裹并以英文逗号分隔的文件列表,使用 \hologo{biber} 处理时要带有 \opt{bib} 后缀,若不在当前文件夹名称需要包含路径。只有设置数据库的文件名才会载入 \pkg{natbib} 或 \pkg{biblatex} 宏包,之后才可使用相关配置命令,否则需要手动载入相关宏包配置参考文献。
% \end{optdesc}
%
-% \begin{function}[added = 2021-01-11,updated = 2021-04-09]{\printbibliography,\BibtexPostset,\BiblatexPreset,\BiblatexPostset}
+% \begin{function}[added = 2021-01-11,updated = 2021-04-09]{\printbibliography,\BibtexPreSet,\BibtexPostSet,\BiblatexPreSet,\BiblatexPostSet}
% \begin{syntax}
% \tn{printbibliography}\oarg{键值列表}
% \end{syntax}
@@ -483,16 +483,17 @@
%
% \begin{optdesc}
% \item[\tn{printbibliography}] 两种方式 \textbf{均使用} 此命令打印参考文献,不同处理后端此命令的 \meta{键值列表} 不同。使用 \hologo{BibTeX} 处理时选项与节 \ref{sec:document command} 目录的选项相同,使用 \hologo{biber} 处理时常用的选项如下:
-% \begin{function}{heading,title}
-% \begin{syntax}
-% heading = <bibliography|subbibliography|(bibintoc)|subbibintoc>
-% title = <参考文献标题名>
-% \end{syntax}
-% \opt{heading} 为参考文献标题的处理方式,\opt{bibliography} 选项以 \opt{chapter} 级别输出参考文献,不加进目录,\opt{subbibliography} 选项以 \opt{section} 级别输出参考文献,不加进目录,\opt{bibintoc} 选项以 \opt{chapter} 级别输出参考文献,加进目录,\opt{subbibintoc} 选项以 \opt{section} 级别输出参考文献,加进目录。\opt{title} 选项覆盖由 \opt{heading} 选项提供的缺省标题名。除此之外其他支持选项可见 \pkg{biblatex} 宏包说明文档。
-% \end{function}
-% \item[\tn{BibtexPostset}] 这是 \pkg{natbib} 宏包的配置命令,需要与 \pkg{natbib} 配合并放在载入其之后使用,默认保存了参考文献风格和标题的设置。
-% \item[\tn{BiblatexPreset}] 这是 \pkg{biblatex} 宏包的前配置命令,需要与 \pkg{biblatex} 配合并放在载入其之前使用,默认保存了参考文献风格的设置。若重新定义可使用 \tn{PassOptionsToPackage} 命令向 \pkg{biblatex} 传递它支持的各种参考文献选项。
-% \item[\tn{BiblatexPostset}] 这是 \pkg{biblatex} 宏包的后配置命令,需要与 \pkg{biblatex} 配合并放在载入其之后使用,默认保存了参考文献标题的设置。
+% \begin{function}{heading,title}
+% \begin{syntax}
+% heading = <bibliography|subbibliography|(bibintoc)|subbibintoc>
+% title = <参考文献标题名>
+% \end{syntax}
+% \opt{heading} 为参考文献标题的处理方式,\opt{bibliography} 选项以 \opt{chapter} 级别输出参考文献,不加进目录,\opt{subbibliography} 选项以 \opt{section} 级别输出参考文献,不加进目录,\opt{bibintoc} 选项以 \opt{chapter} 级别输出参考文献,加进目录,\opt{subbibintoc} 选项以 \opt{section} 级别输出参考文献,加进目录。\opt{title} 选项覆盖由 \opt{heading} 选项提供的缺省标题名。除此之外其他支持选项可见 \pkg{biblatex} 宏包说明文档。
+% \end{function}
+% \item[\tn{BibtexPreSet}] 这是 \pkg{natbib} 宏包的前配置命令,需要与 \pkg{natbib} 配合并放在载入其之前使用,可以重新定义它向 \pkg{natbib} 传递宏包选项。
+% \item[\tn{BibtexPostSet}] 这是 \pkg{natbib} 宏包的后配置命令,需要与 \pkg{natbib} 配合并放在载入其之后使用,默认保存了参考文献风格和标题的设置。
+% \item[\tn{BiblatexPreSet}] 这是 \pkg{biblatex} 宏包的前配置命令,需要与 \pkg{biblatex} 配合并放在载入其之前使用,默认保存了参考文献风格的设置。若重新定义可使用 \tn{PassOptionsToPackage} 命令向 \pkg{biblatex} 传递它支持的各种参考文献选项。
+% \item[\tn{BiblatexPostSet}] 这是 \pkg{biblatex} 宏包的后配置命令,需要与 \pkg{biblatex} 配合并放在载入其之后使用,默认保存了参考文献标题的设置。
% \end{optdesc}
%
% \subsection{定理样式}
@@ -532,26 +533,27 @@
% \item[brackets] 设置行间公式编号标签的括号,以英文逗号分隔,分别为左右括号。
% \end{optdesc}
%
-% \begin{function}[added = 2021-01-12,updated = 2021-06-15]{\declaretheorem,\DeclareTheorem,\declaretheoremstyle}
+% \subsubsection{新建定理样式}
+% \begin{function}[added = 2021-01-12,updated = 2021-07-13]{\declaretheorem,\DeclareTheorem,\declaretheoremstyle}
% \begin{syntax}
-% \tn{declaretheorem}\oarg{键值列表}\marg{定理环境名}
+% \tn{declaretheorem}\oarg{键值列表}\marg{定理环境名}\oarg{键值列表}
% \tn{DeclareTheorem}\marg{定理环境名}\oarg{英文标题}\marg{中文标题}\parg{盒子样式|(tc-theorem)}\oarg{键值列表}
-% \tn{declaretheoremstyle}\oarg{键值列表}\marg{定理样式名}
+% \tn{declaretheoremstyle}\oarg{键值列表}\marg{定理样式名}\oarg{键值列表}
% \end{syntax}
-% 文档类已预置 8 个定理环境,环境名及对应的定理标题名见小节 \ref{subsec:theorem},如果需要新的定理标题名或定理样式可使用这两个命令,由 \pkg{thmtools} 提供支持,用法与它的同名命令一致。
+% 文档类已预置 8 个定理环境,环境名及对应的定理标题名见小节 \ref{subsec:theorem},如果需要新的定理标题名或定理样式可使用这三个命令,由 \pkg{thmtools} 提供支持,其中两个命令各自前后可选参数的 \meta{键值列表} 是等效的,用法与它们的同名命令一致。
% \changes{v1.23}{2021/03/12}{重新定义了新定理环境命令 \tn{newtheorem}。}
% \changes{v1.24}{2021/04/25}{增加定义定理环境命令 \tn{DeclareTheorem}。}
% \changes{v1.26}{2021/06/15}{定义新定理环境的命令调整为 \tn{declaretheorem}。}
% \end{function}
%
% \begin{optdesc}
-% \item[\tn{declaretheorem}] 定义新的定理类环境,\tn{newtheorem} 命令与它等效。\meta{键值列表} 中常用的选项如下
-% \begin{description}
-% \item[name] 定理的标题。默认值是环境的名称,并且首字母大写(英文标题)。
-% \item[numbered] 值为 \opt{no}、\opt{yes} 或 \opt{unless unique}。定理可以被编号、不被编号或者只有在文档中多次出现时才被编号。
-% \item[numberlike] 定理将使用此计数器进行编号,通常这是另一个定理环境的名称。
-% \item[style] 用 \tn{declaretheoremstyle} 定义的定理样式的名称,定理将使用这种样式的设置。
-% \end{description}
+% \item[\tn{declaretheorem}] 定义新的定理类环境,\tn{newtheorem} 命令与它等效。\meta{键值列表} 中常用的选项如下:
+% \begin{optdesc}
+% \item[name] 定理的标题。默认值是环境的名称,并且首字母大写(英文标题)。
+% \item[numbered] 值为 \opt{no}、\opt{yes} 或 \opt{unless unique}。定理可以被编号、不被编号或者只有在文档中多次出现时才被编号。
+% \item[numberlike] 定理将使用此计数器进行编号,通常这是另一个定理环境的名称。
+% \item[style] 用 \tn{declaretheoremstyle} 定义的定理样式的名称,定理将使用这种样式的设置。
+% \end{optdesc}
% \item[\tn{DeclareTheorem}] \tn{DeclareTheorem} 是更便捷的定理命令,它定义一个新的定理环境,\meta{键值列表} 支持的选项与 \tn{declaretheorem} 相同,但它们的区别有:
% \begin{itemize}
% \item 中英文模式下标题不同,英文标题为可选项,默认为首字母大写的环境名。
@@ -562,10 +564,9 @@
% \item[\tn{declaretheoremstyle}] 定义新的定理样式,\meta{键值列表} 中包括上述定理样式以及 \tn{declaretheorem} 的所有选项。
% \end{optdesc}
%
-% \subsubsection{新的定理样式}
-% 预置定理的样式为 \opt{easy-theorem},上述定理样式选项将对这个定理样式生效。如果使用这个样式而只是增加新的定理名称,可以这样:
+% 下面简单列举定理命令的用法,预置定理的样式为 \opt{easy-theorem},上述定理样式选项将对这个定理样式生效。如果使用这个样式而只是增加新的定理名称,可以这样:
% \begin{ctexexam}
-% \DeclareTheorem{定理环境名}{中文标题}[style = other theorem]
+% \DeclareTheorem{定理环境名}{中文标题}[style = easy-theorem]
% \declaretheorem[style = easy-theorem,name = 定理名]{定理环境名}
% \end{ctexexam}
% \tn{declaretheorem} 定义的定理环境需要手动增加盒子边框,可以如下进行设置:
@@ -667,21 +668,29 @@
% \subsubsection{脚注格式}
% \begin{function}[EXP,added = 2021-05-12]{fnmargin,fnparskip,fnparindent,fnhang,fnmark-pos,fnmark-num,fnmark-num,fnmark-form,afterfnmark}
% \begin{syntax}
-% fnmargin = <脚注首段缩进|(0.75\tn{ccwd})>
-% fnparskip = <脚注段落间距|(0ex)>
-% fnparindent = <脚注段落缩进|(2\tn{ccwd})>
+% fnmargin = <刚性长度|(0.75\tn{ccwd})>
+% fnparskip = <弹性长度|(0ex)>
+% fnparindent = <刚性长度|(2\tn{ccwd})>
% fnhang = <(true)|false>
% fnmark-pos = <normal|(super)>
% fnmark-num = <(plain)|pifont|pifont*|pifont-sans|pifont-sans*>
-% fnmark-form = <脚注标记格式>
-% afterfnmark = <脚注标记后的代码>
+% fnmark-form = <格式代码>
+% afterfnmark = <格式代码>
% \end{syntax}
% \ding{229} 以上选项路径为 \opt{hdrset/...} \\
-% 上面几个选项用于设置脚注格式,\opt{fnparskip} 和 \opt{fnparindent} 选项仅在 \opt{fnhang = true} 时有效。\opt{fnhang} 用于将脚注设置为悬挂缩进的格式,\opt{fnmark-pos} 选项设置脚注编号的位置,正常文本或是上标形式。\opt{fnmark-num} 选项设置脚注编号的格式,默认为原生样式 \opt{plain},还可以改为 \opt{pifont} 的各个版本,从左往右依次为普通版、阴文衬线版、阳文无衬线版和阴文无衬线版,缺点是它们的编号仅包括 1-10。
% \changes{v1.25}{2021/05/12}{增加脚注样式设置选项。}
% \end{function}
%
-% \opt{fnmark-form} 是脚注标记的格式,在此设置字体命令会覆盖 \opt{subfont/footnote} 的设置,最后一个格式命令可以带有一个参数,这个参数接受脚注编号,一般配合 \opt{fnmark-num = plain} 使用。\opt{afterfnmark} 是脚注标记后的代码,一般用于设置标记与文本间的距离。
+% \begin{optdesc}
+% \item[fnmargin] 脚注首段缩进距离,等于长度 \tn{footnotemargin} 的值。
+% \item[fnparskip] 脚注段落间距,仅在脚注为悬挂缩进时有效。
+% \item[fnparindent] 脚注段落缩进,仅在脚注为悬挂缩进时有效。
+% \item[fnhang] 脚注是否为悬挂缩进的格式,默认开启。
+% \item[fnmark-pos] 设置脚注编号的位置,正常文本或是上标形式。
+% \item[fnmark-num] 脚注编号的格式,默认为原生样式 \opt{plain},还可以改为 \opt{pifont} 的各个版本,从左往右依次为普通版、阴文衬线版、阳文无衬线版和阴文无衬线版,缺点是它们的编号仅包括 1-10。
+% \item[fnmark-form] 脚注标记的格式,在此设置字体命令会覆盖 \opt{subfont/footnote} 的设置,最后一个格式命令可以带有一个参数,这个参数接受脚注编号,一般配合 \opt{fnmark-num = plain} 使用。
+% \item[afterfnmark] 脚注标记后的代码,由于脚注标记处于水平盒子中,它一般用于设置标记与文本间的距离。
+% \end{optdesc}
%
% \subsection{目录样式}
% \label{subsec:catalog style}
@@ -694,7 +703,7 @@
% numsep = <编号后间距|(\tn{ccwd})>
% \end{syntax}
% \ding{229} 以上选项路径为 \opt{tocset/(level)/...} \\
-% \opt{tocset} 将目录样式交给 \pkg{titletoc} 处理,\opt{(level)} 代表 part、chapter、section、subsection、figure、table 和 lstlisting 级别的目录,而使用 \opt{list} 级别可以统一设置图片、表格和代码目录的样式。
+% \opt{tocset} 将目录样式交给 \pkg{titletoc} 处理,\opt{(level)} 代表 part、chapter、section、subsection、figure、table 和 lstlisting 级别的目录,而使用 list 级别可以统一设置图片、表格和代码目录的样式。
% \changes{v1.21}{2021/01/13}{增加配置目录样式的选项。}
% \changes{v1.24}{2021/04/20}{增加目录中编号与标题的间距选项 \opt{numsep}。}
% \changes{v1.25}{2021/05/14}{可以分别设置图片、表格和代码目录的格式。}
@@ -794,40 +803,19 @@
% \ \tn{item} <列表内容>
% \tn{end}\marg{环境名}
% \end{syntax}
-% \pkg{enumitem} 宏包为系统预置的列表环境 \env{enumerate}、\env{itemize}和 \env{description} 提供了更灵活的标签以及间距的控制,可使用 \tn{setlist} 命令设置原有的三种列表格式,也可以直接使用可选参数的 \meta{键值列表},具体选项见 \pkg{enumitem} 宏包文档。已为三种列表预置了三个级别的格式可相互嵌套,默认标签与 \cls{book} 文档类相同,若自定义标签可例如:
+% \pkg{enumitem} 宏包为系统预置的三种列表环境即排序列表 \env{enumerate}、常规列表 \env{itemize} 和 主题列表 \env{description} 提供了更灵活的标签以及间距的控制,可使用 \tn{setlist} 命令设置三种列表格式,或者直接使用可选参数的 \meta{键值列表},具体选项见 \pkg{enumitem} 宏包文档。
+%
+% 已为三种列表预置了三个级别,同种列表或不同种列表间的不同级别可相互嵌套,带有星号的环境为行内列表。默认列表标签与标准 \cls{book} 文档类一致,下面举几个更改列表标签以及其它格式的例子:
% \changes{v1.24}{2021/04/08}{重新优化列表环境的配置。}
% \end{function}
%
% \begin{ctexexam}
+% \setlist{nosep} % 取消所有列表额外的垂直间距
% \begin{enumerate}[label = \arabic*(a),leftmargin = 1cm,resume]
% \begin{itemize}[label = \textbullet]
% \begin{description}[font = \sffamily\bfseries,style = nextline]
% \end{ctexexam}
%
-% \subsubsection{排序列表}
-% \label{subsec:sort list}
-% 使用 \opt{enumerate} 环境可创建排序列表,使用 \env{enumerate*} 环境产生行内部列表,可以使用 \textbf{A、a、I、i和1} 作为可选项为 \env{enumerate} 与 \env{enumerate*} 格式化标签。若生成 \textbf{Item I、Item II、Item III} 格式可以这样:
-% \begin{ctexexam}
-% \begin{enumerate*}[(a)]
-% \begin{enumerate}[\bfseries{Item} I]
-% \end{ctexexam}
-%
-% \subsubsection{常规列表}
-% 使用 \env{itemize} 环境可创建不计数列表,列表环境中若换行不缩进,若在列表中分段后则缩进两字符。 \opt{itemize*} 为行内常规列表,举一个用$\star$取代默认的符号的例子:
-% \begin{ctexexam}
-% \begin{itemize*}[$\star$]
-% \begin{itemize}[$\star$]
-% \end{ctexexam}
-%
-% \subsubsection{主题列表}
-% 使用 \env{description} 环境可创建带有主题词的列表:
-% \begin{ctexexam}
-% \begin{description}
-% \item[主题一] 内容一
-% \item[主题二] 内容二
-% \end{description}
-% \end{ctexexam}
-%
% \subsection{定理}
% \label{subsec:theorem}
% \begin{function}[added = 2021-01-05,updated = 2021-01-08]{theorem,definition,lemma,corollary,proposition,example,remark,proof}
@@ -856,7 +844,7 @@
% \tn{end}\{hangparas\}
% \end{syntax}
% \tn{hangpara} 命令使其后的一个段落保持悬挂缩进,\env{hangparas} 环境使其中的段落均保持悬挂缩进。缩进将以 \meta{缩进长度} 从每个段落的 \meta{缩进开始行数} 开始。
-% \changes{v1.27c}{2021/07/11}{增加悬挂缩进段落命令 \tn{hangpara} 和环境 \env{hangparas}。}
+% \changes{v1.27d}{2021/07/11}{增加悬挂缩进段落命令 \tn{hangpara} 和环境 \env{hangparas}。}
% \end{function}
%
% \subsection{代码}
@@ -906,8 +894,8 @@
% \tcphanifname{\markright{\UseCounter{tcbcounter}{\quad 习题}}}{}
% \exerprologue{习题前的一段文本}
% \begin{exercise}+[color = LightSkyBlue](after skip = 3.75ex)[itemsep = 1ex]
-% \item 习题内容
-% \item 习题内容
+% \item 第一题
+% \item 第二题
% \end{exercise}
% \end{ctexexam}
%
@@ -944,9 +932,9 @@
%
% \begin{ctexexam}
% \begin{easybox}*[DarkCyan](段落标题)
-% 盒子内容
-% \tcblower % 盒子上下部分分界线
-% 盒子内容
+% 上半盒子内容
+% \tcblower % 盒子上下部分分界线
+% 下半盒子内容
% \end{easybox}
% \end{ctexexam}
%
@@ -956,17 +944,18 @@
% \ <盒子内容>
% \tn{end}\{ebparbox\}
% \end{syntax}
-% 环境 \env{ebparbox} 与 \env{easybox} 类似,同样带有三个可选参数。当使用星号参数时盒子左边带有一条竖线,\meta{颜色名} 选项可以自定义竖线颜色,使用不带有星号的环境则盒子带有竖线颜色的浅色背景。\meta{段落标题} 选项可以设置标题,默认无标题。
+% 环境 \env{ebparbox} 与 \env{easybox} 类似,同样带有三个可选参数。当使用星号参数时盒子左边带有一条竖线,\meta{颜色名} 选项可以自定义竖线颜色,使用带有星号的环境则盒子带有竖线颜色的浅色背景。\meta{段落标题} 选项可以设置标题,默认无标题。
% \changes{v1.24}{2021/04/19}{优化盒子环境的选项,增加可带有标题的扁平盒子 \env{ebparbox}。}
% \end{function}
%
% \subsubsection{行内盒子}
-% \begin{function}[added = 2021-03-13,updated = 2021-04-21]{\eblink,\ebemph}
+% \begin{function}[added = 2021-03-13,updated = 2021-07-13]{\eblink,\ebemph,\ebfbox}
% \begin{syntax}
% \tn{eblink}\oarg{颜色名|(Aqua)}\marg{内容}\oarg{配置选项}
% \tn{ebemph}\oarg{颜色名|(DarkSeaGreen)}\marg{内容}\oarg{配置选项}
+% \tn{ebfbox}\oarg{颜色名|(Lime)}\marg{内容}\oarg{配置选项}
% \end{syntax}
-% 设置了两个参数选项相同的行内盒子,盒子 \opt{eblink} 为抄录盒子有三个参数,行内盒子内容是必选参数其他可选。盒子 \opt{ebemph} 也是抄录盒子,具有模糊边缘类似高亮的效果。
+% 使用 \pkg{tcolorbox} 预置了三个参数选项相同的行内盒子,它们均为抄录命令。盒子 \opt{eblink} 具有类似超链接边框的效果,盒子 \opt{ebemph} 具有模糊边缘类似高亮的效果,盒子 \opt{ebfbox} 则有直角边缘并带有上下框线。
% \end{function}
%
% \section{更多用法}
@@ -1043,11 +1032,11 @@
% \subsubsection{自定义脚注}
% \begin{function}[added = 2021-01-05]{\Footnote,\Footnotetext,\Footnotemark}
% \begin{syntax}
-% \tn{Footnote}\marg{标记}\marg{插入文本}
-% \tn{Footnotetext}\marg{标记}\marg{插入文本}
+% \tn{Footnote}\marg{标记}\marg{脚注文本}
+% \tn{Footnotetext}\marg{标记}\marg{脚注文本}
% \tn{Footnotemark}\marg{标记}
% \end{syntax}
-% 自定义标记且不影响正常编号的脚注命令。
+% 这些是自定义 \meta{标记} 且不影响正常编号的脚注命令,用法与它们对应首字母小写的命令类似。如果 \meta{标记} 为空,那么将会使用上一个脚注标记。
% \end{function}
%
% \begin{ctexexam}
@@ -1102,7 +1091,7 @@
%
% \section{载入的宏包}
% 以下为 \cls{easybook} 直接调用的关键宏包,带有 \ding{75} 符号的宏包并未载入它们,仅做了预配置和兼容性处理,可根据需要在导言区手动载入以实现相关的功能。
-% \begin{description}
+% \begin{description}[font = \normalfont\sffamily]
% \item[ctex] 提供中文排版的通用框架。
% \item[xcolor] 提供任意颜色的设定与混合,已载入了 \opt{svgnames} 颜色库。
% \item[footmisc] 更改脚注排版的方法的集合。
@@ -1185,7 +1174,7 @@
%<*class>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2021/07/12}{1.27c}
+\ProvidesExplClass{easybook}{2021/07/13}{1.27d}
{Typeset Chinese theses or books}
\bool_set_false:N \l__eb_compile_draft_bool
@@ -1480,7 +1469,7 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplPackage{easybase}{2021/07/12}{1.27c}
+\ProvidesExplPackage{easybase}{2021/07/13}{1.27d}
{Typeset Chinese theses or books}
\cs_generate_variant:Nn \ctex_define:nn { nx }
@@ -1585,8 +1574,8 @@
\bool_set_false:N \l__eb_page_twoside_bool
},
class .initial:n = book,
- book .meta:n = { class = #1 },
- article .meta:n = { class = #1 },
+ book .meta:n = { class = book },
+ article .meta:n = { class = article },
unknown .code:n =
{ \clist_gput_right:NV \g__eb_ctex_options_clist \CurrentOption }
@@ -1725,7 +1714,7 @@
headruleskip .tl_set:N = \headruleskip,
headruleskip .initial:n = 1.5pt,
footruleskip .tl_set:N = \footruleskip,
- unknown .code:n =
+ unknown .code:n =
{
\clist_gput_right:Nx \g__eb_geometry_clist
{
@@ -2419,8 +2408,8 @@
\cs_new_protected:Npn \eb_biber_title_level_bool:n #1
{
\bool_if:NTF \l__eb_class_book_bool
- { \bichapter*{#1}{\l__eb_bib_bitoc_title} }
- { \bisection*{#1}{\l__eb_bib_bitoc_title} }
+ { \bichapter*{#1}{\l__eb_bib_en_bitoc_title_tl} }
+ { \bisection*{#1}{\l__eb_bib_en_bitoc_title_tl} }
\eb@level@section@mark{#1}
}
\cs_new_protected:Npn \eb_toc_start_multicol_bool:n #1
@@ -2575,7 +2564,7 @@
\l__eb_subfont_math_choice_tl \l_keys_choice_tl
},
math .value_required:n = true,
- math .initial:n = noto
+ math .initial:n = times
}
\cs_new_protected:Npn \eb_put_newtxmath:n #1
@@ -2753,30 +2742,32 @@
{ \tl_const:cn { c__eb_name_#1_tl } {#3} }
{ \tl_const:cn { c__eb_name_#1_tl } {#2} }
}
+\cs_set_eq:NN \eb@declaretheorem@save \declaretheorem
+\cs_set_eq:NN \eb@declaretheoremsyle@save \declaretheoremstyle
+\RenewDocumentCommand{\declaretheorem}{O{}mO{}}
+ {\AfterPreamble{\eb@declaretheorem@save[#1,#3]{#2}}}
+\cs_new_protected:Npn \eb@declaretheorem #1#2
+ { \declaretheorem[#2]{#1} }
+\RenewDocumentCommand{\declaretheoremstyle}{O{}mO{}}
+ {\eb@declaretheoremsyle@save[#1,#3]{#2}}
+\cs_set_eq:NN \newtheorem \declaretheorem
\NewDocumentCommand{\DeclareTheorem}
{mO{\text_titlecase_first:n {#1}}mD(){tc-theorem}O{}}
{
- \ctex_at_end_preamble:n
+ \eb_thm_name_set:nnn {#1} {#2} {#3}
+ \eb@declaretheorem{#1}
{
- \eb_thm_name_set:nnn {#1} {#2} {#3}
- \exp_args:No \declaretheorem@i
- {
- name = \tl_use:c { c__eb_name_#1_tl },
- style = easy-theorem,#5
- }{#1}[]
- \bool_if:NT \l__eb_thmbox_bool
- {
- \@ifpackageloaded{tcolorbox}
- {\tcolorboxenvironment{#1}{#4}}{}
- }
- \labelformat{#1}{\tl_use:c { c__eb_name_#1_tl }~##1}
+ name = \tl_use:c { c__eb_name_#1_tl },
+ style = easy-theorem,#5
+ }
+ \bool_if:NT \l__eb_thmbox_bool
+ {
+ \@ifpackageloaded{tcolorbox}
+ {\tcolorboxenvironment{#1}{#4}}{}
}
+ \labelformat{#1}{\tl_use:c { c__eb_name_#1_tl }~##1}
}
\cs_set_eq:NN \EBNewTheorem \DeclareTheorem
-\cs_set_eq:NN \eb@declare@theorem@save \declaretheorem
-\RenewDocumentCommand{\declaretheorem}{O{}m}
- {\AfterPreamble{\eb@declare@theorem@save[#1]{#2}}}
-\cs_set_eq:NN \newtheorem \declaretheorem
\prop_new:N \l__eb_thmtools_entry_prop
\clist_const:Nn \c__eb_thmtools_entry_clist
{
@@ -2928,58 +2919,48 @@
}
\bool_set_true:N \l__eb_backend_bibtex_bool
-\tl_new:N \l__eb_bib_style_tl
-\tl_new:N \l__eb_bib_otherstyle_tl
-\tl_new:N \l__eb_bib_citestyle_tl
+\tl_new:N \l__eb_bib_all_style_tl
+\tl_new:N \l__eb_bib_cite_style_tl
\clist_new:N \l__eb_bib_datafile_clist
\ctex_define:nn { bibset }
{
backend .choice:,
- backend .value_required:n = true,
- backend/bibtex .code:n = { },
- backend/biblatex .code:n =
+ backend .value_required:n = true,
+ backend/bibtex .code:n = { },
+ backend/biblatex .code:n =
{ \bool_set_false:N \l__eb_backend_bibtex_bool },
- bib-style .choice:,
- bib-style .value_required:n = true,
- bib-style/numerical .code:n =
- {
- \tl_set:Nn \l__eb_bib_style_tl {#1}
- \tl_clear:N \l__eb_bib_otherstyle_tl
- },
- bib-style/authoryear .code:n =
- {
- \tl_set:Nn \l__eb_bib_style_tl {#1}
- \tl_clear:N \l__eb_bib_otherstyle_tl
- },
- bib-style/unknown .code:n =
- { \tl_set_eq:NN \l__eb_bib_otherstyle_tl \l_keys_value_tl },
- bib-style .initial:n = numerical,
+ bib-style .code:n =
+ { \tl_set:Nn \l__eb_bib_all_style_tl {#1} },
+ bib-style .value_required:n = true,
+ bib-style .initial:n = numerical,
cite-style .code:n =
- { \tl_set:Nn \l__eb_bib_citestyle_tl {#1} },
+ { \tl_set:Nn \l__eb_bib_cite_style_tl {#1} },
datafile .clist_set:N = \l__eb_bib_datafile_clist,
- bitoc-title .tl_set:N = \l__eb_bib_bitoc_title,
+ bitoc-title .tl_set:N = \l__eb_bib_en_bitoc_title_tl,
bitoc-title .initial:n = Reference
}
-\cs_new_protected:Npn \BibtexPostset
+\cs_new_protected:Npn \BibtexPreSet
+ { \PassOptionsToPackage{sort&compress}{natbib} }
+\cs_new_protected:Npn \BibtexPostSet
{
- \tl_if_empty:NTF \l__eb_bib_otherstyle_tl
+ \str_case:VnTF \l__eb_bib_all_style_tl
{
- \tl_if_eq:NnT \l__eb_bib_style_tl { numerical }
- {
- \bibliographystyle{gbt7714-numerical}
- \setcitestyle{comma,square,super}
- }
- \tl_if_eq:NnT \l__eb_bib_style_tl { authoryear }
- { \bibliographystyle{gbt7714-author-year} }
- \cs_set_eq:NN \cite \citep
+ { numerical }
+ {
+ \bibliographystyle{gbt7714-numerical}
+ \setcitestyle{comma,square,super}
+ }
+ { authoryear }
+ { \bibliographystyle{gbt7714-author-year} }
}
+ { \cs_set_eq:NN \cite \citep }
{ \exp_args:NV \bibliographystyle \l__eb_bib_otherstyle_tl }
- \tl_if_empty:NF \l__eb_bib_citestyle_tl
- { \exp_args:NV \setcitestyle \l__eb_bib_citestyle_tl }
+ \tl_if_empty:NF \l__eb_bib_cite_style_tl
+ { \exp_args:NV \setcitestyle \l__eb_bib_cite_style_tl }
\skip_zero:N \bibsep
\AtEndEnvironment{thebibliography}
{\bool_if:NT \l__eb_toc_multi_column_bool { \end{multicols} }}
@@ -3000,21 +2981,22 @@
}
\cs_new_protected:Npn \eb_put_biblatex:n #1
{ \PassOptionsToPackage{#1}{biblatex} }
-\cs_new_protected:Npn \BiblatexPreset
+\cs_new_protected:Npn \BiblatexPreSet
{
- \tl_if_empty:NTF \l__eb_bib_otherstyle_tl
+ \str_case:VnF \l__eb_bib_all_style_tl
{
- \tl_if_eq:NnT \l__eb_bib_style_tl { numerical }
- { \eb_put_biblatex:n { style = gb7714-2015 } }
- \tl_if_eq:NnT \l__eb_bib_style_tl { authoryear }
- { \eb_put_biblatex:n { style = gb7714-2015ay } }
+ { numerical } { \use_i:nnn }
+ { authoryear } { \use_ii:nnn }
}
- { \eb_put_biblatex:n { style = \l__eb_bib_otherstyle_tl } }
- \tl_if_empty:NF \l__eb_bib_citestyle_tl
- { \eb_put_biblatex:n { citestyle = \l__eb_bib_citestyle_tl } }
+ { \use_iii:nnn }
+ { \eb_put_biblatex:n { style = gb7714-2015 } }
+ { \eb_put_biblatex:n { style = gb7714-2015ay } }
+ { \eb_put_biblatex:n { style = \l__eb_bib_all_style_tl } }
+ \tl_if_empty:NF \l__eb_bib_cite_style_tl
+ { \eb_put_biblatex:n { citestyle = \l__eb_bib_cite_style_tl } }
\eb_put_biblatex:n { backend = biber }
}
-\cs_new_protected:Npn \BiblatexPostset
+\cs_new_protected:Npn \BiblatexPostSet
{
\clist_map_function:NN \l__eb_bib_datafile_clist \addbibresource
\tl_gset:Nn \blx@default@theheading { bibintoc }
@@ -3028,43 +3010,33 @@
{
\bool_if:NTF \l__eb_backend_bibtex_bool
{
- \LoadPackage[sort&compress]{natbib}
- \BibtexPostset
+ \BibtexPreSet
+ \LoadPackage{natbib}
+ \BibtexPostSet
}
{
- \BiblatexPreset
+ \BiblatexPreSet
\LoadPackage{biblatex}
- \BiblatexPostset
+ \BiblatexPostSet
}
}
}
+\cs_new:Npn \eb@lst@if@display #1#2
+ { \lst@ifdisplaystyle #1\else #2\fi }
\lstdefinestyle{easy-listings}
{
language = [LaTeX]TeX,
- texcsstyle =
- {
- *\lst@ifdisplaystyle
- \bfseries\color{ctex@verb}
- \else
- \color{ctex@verb}
- \fi
- },
+ texcsstyle = {*},
basicstyle =
{
- \ttfamily\lst@ifdisplaystyle
- \small
- \else
- \color{ctex@verb}
- \fi
+ \ttfamily
+ \eb@lst@if@display{\small}{\color{ctex@verb}}
},
keywordstyle =
{
- \lst@ifdisplaystyle
- \bfseries\color{ctex@verb}
- \else
- \color{ctex@verb}
- \fi
+ \color{ctex@verb}
+ \eb@lst@if@display{\bfseries}{}
},
framexleftmargin = 0pt,
framexrightmargin = 0pt,
@@ -3075,12 +3047,7 @@
frame = single,
rulecolor = \color{ctex@frame},
commentstyle = \color{SlateGray},
- emphstyle = \color{ctex@emph},
- % emph = {},
- morekeywords =
- {
- includegraphics,setmainfont,setsansfont,setmonofont,setCJKmainfont,setCJKsansfont,setCJKmonofont,setCJKfamilyfont,RequirePackage
- }
+ emphstyle = \color{ctex@emph}
}
\lstset
{
@@ -3203,7 +3170,7 @@
\clist_map_function:nN
{
{ none, 000000,000000,000000 },
- { seaside, 4169e1,007130,9932cc },
+ { seaside, 4169e1,9932cc,eb6100 },
{ energy, f39800,00a0e9,893895 },
{ cyberpunk, 601986,eb6877,a4005b }
}
@@ -3215,10 +3182,11 @@
\cs_new:Npn \eb_allow_urlbreak:
{
- \cs_new:Npn \eb_add_urlbreak_points:
- { \tl_map_function:NN \c__eb_urlbreak_points_tl \do }
\eb_appto_cmd:Nn \UrlBreaks
- { \UrlOrds\eb_add_urlbreak_points: }
+ {
+ \UrlOrds
+ \tl_map_function:NN \c__eb_urlbreak_points_tl \do
+ }
}
\tl_const:Nn \c__eb_urlbreak_points_tl
{
@@ -3274,7 +3242,7 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2021/07/12}{1.27c}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2021/07/13}{1.27d}
{Customization of tcolorbox for easybook}
\cs_new_protected:Npn \eb_tcb_theorem_set:n #1
@@ -3283,13 +3251,17 @@
{ \tcbset{tc-outline/.style = {#1}} }
\cs_new_protected:Npn \eb_tcb_exercise_set:n #1
{ \tcbset{tc-exercise/.style = {#1}} }
+\tl_gset:Nn \eb@tc@line@skip { 0.5\baselineskip }
\eb_tcb_theorem_set:n
{
enhanced~jigsaw,pad~at~break* = 3pt,
opacityback = 0,
colframe = ctex@emph,
sharpish~corners,
- left = 6pt,right = 6pt,top = 8pt,bottom = 8pt,middle= 8pt
+ beforeafter~skip = 1.75ex plus .2ex minus .1ex,
+ left = 8pt,right = 8pt,
+ top = \eb@tc@line@skip,bottom = \eb@tc@line@skip,
+ middle = \eb@tc@line@skip
}
\eb_tcb_outline_set:n
{
@@ -3300,7 +3272,8 @@
fonttitle = \large\sffamily,fontupper = \itshape,
boxed~title~style = {size = normal,opacityframe = 0,boxrule = 0pt},
attach~boxed~title~to~top~center = {yshift = -\tcboxedtitleheight/2},
- after~skip = 3ex,arc = 3pt,
+ after~skip = 3ex plus .2ex minus .1ex,
+ arc = 3pt,
left = 2pc,right = 2pc,top = 1.5pc,bottom = 1pc
}
\eb_tcb_exercise_set:n
@@ -3308,7 +3281,7 @@
blank,on~line,center,
sharpish~corners,
fontupper = \Large\sffamily,
- before~skip = 3.75ex,
+ before~skip = 3.75ex plus.2ex minus .1ex,
after~skip = 3ex\tl_if_empty:NF \eb@tc@list@prologue { + 0.75ex }
}
\tcbset
@@ -3404,16 +3377,20 @@
{
enhanced~jigsaw,pad~at~break* = 3pt,
IfBooleanTF = {#1}
- {toptitle = 8pt,top = 8pt}
- {frame~hidden,boxrule = 0pt,toptitle = 8pt,top = 0pt},
+ {toptitle = \eb@tc@line@skip,top = \eb@tc@line@skip}
+ {
+ frame~hidden,boxrule = 0pt,
+ toptitle = \eb@tc@line@skip,top = 0pt
+ },
IfValueT = {#3}{title = #3},
colback = #2,colbacktitle = #2,
opacityback = 0.2,opacitybacktitle = 0.2,
coltitle = black,colframe = black,
sharpish~corners,
- left = 6pt,right = 6pt,bottom = 8pt,middle= 8pt,
- bottomtitle = 8pt,
- beforeafter~skip = 2ex,
+ left = 8pt,right = 8pt,
+ bottom = \eb@tc@line@skip,middle = \eb@tc@line@skip,
+ bottomtitle = \eb@tc@line@skip,
+ beforeafter~skip = 1.75ex plus .2ex minus .1ex,
halign~upper = left,halign~lower = left,
center~title,#4
}
@@ -3425,33 +3402,37 @@
borderline~west = {3pt}{0pt}{#2},
IfBooleanTF = {#1}
{
- colback = white,
- IfValueT = {#3}{title = #3},
- top = 0pt,bottom = 0pt,toptitle = 0pt
- }{
colback = #2,colbacktitle = #2,
opacityback = 0.2,opacitybacktitle = 0.2,
- IfValueTF = {#3}{title = #3,top = 0pt}{top = 8pt},
- bottom = 8pt,toptitle = 8pt
+ IfValueTF = {#3}{title = #3,top = 0pt}{top = \eb@tc@line@skip},
+ bottom = \eb@tc@line@skip,toptitle = \eb@tc@line@skip,
+ right = 8pt
+ }{
+ colback = white,
+ IfValueT = {#3}{title = #3},
+ top = 0pt,bottom = 0pt,right = 0pt,toptitle = 0pt
},
- left = 8pt,right = 8pt,middle= 8pt,
sharpish~corners,
- bottomtitle = 8pt,
- beforeafter~skip = 2ex,
+ left = 8pt,
+ middle = \eb@tc@line@skip,bottomtitle = \eb@tc@line@skip,
+ beforeafter~skip = 1.75ex plus .2ex minus .1ex,
colframe = #2,coltitle = #2,#4
}
\DeclareTotalTCBox{\ebemph}{O{DarkSeaGreen}vO{}}
- {
- nobeforeafter,tcbox~raise~base,
- blank,fuzzy~halo = 2pt~with~#1,#3
- }{#2}
+ {on~line,blank,fuzzy~halo = 2pt~with~#1,#3}{#2}
\DeclareTotalTCBox{\eblink}{O{Aqua}vO{}}
{
- standard~jigsaw,
- nobeforeafter,tcbox~raise~base,
- top = 1.25pt,bottom = 1.25pt,left = 1.25pt,right = 1.25pt,
+ standard~jigsaw,on~line,
+ top = 1.5pt,bottom = 1.5pt,left = 1.5pt,right = 1.5pt,
boxrule = 0.75pt,arc = 1pt,
colback = #1,opacityback = 0.2,colframe = #1,#3
}{#2}
+\DeclareTotalTCBox{\ebfbox}{O{Lime}vO{}}
+ {
+ on~line,sharpish~corners,
+ top = 2pt,bottom = 2pt,left = 1pt,right = 1pt,
+ leftrule = 0pt,rightrule = 0pt,
+ colback = #1!10!white,colframe = #1!50!black,#3
+ }{#2}
%</tcolorbox>
\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index 9126c42467..017c449994 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/etoc/README.md b/macros/latex/contrib/etoc/README.md
index 555755615d..b6fd46940a 100644
--- a/macros/latex/contrib/etoc/README.md
+++ b/macros/latex/contrib/etoc/README.md
@@ -1,13 +1,13 @@
<!-- -->
- Source: etoc.dtx (v1.09c-2020/05/15)
+ Source: etoc.dtx (v1.09d)
Author: Jean-Francois Burnol
Author: Christine Roemer et al. (German tranlation)
Info: Completely customisable TOCs
License: LPPL 1.3c
- Copyright (C) 2012-2020 Jean-Francois Burnol.
- Copyright (C) 2014-2020 Christine Roemer and collaborators for
- the translation into German of the documentation.
+ Copyright (C) 2012-2021 Jean-Francois Burnol.
+ Copyright (C) 2014-2015 Christine Roemer and collaborators
+ (translation into German of the documentation)
<jfbu at free dot fr> <Christine_Roemer at t-online dot de>
ABSTRACT
@@ -107,7 +107,20 @@ etoc.pdf, etoc-DE.pdf, etoc.dvi, etoc-DE.dvi.
RECENT CHANGES
==============
-v1.09c \[2020/05/05\]
+v1.09d \[2021/07/13\]
+-------------------------
+
+Some minor synching with tableof 1.4c.
+
+Add `\etockeeporiginaltableofcontents` to provide a work-around to a
+compatibility issue with listings's `\lstlistoflistings`, which abuses
+`\tableofcontents` for doing something unrelated to the actual contents.
+Thanks to Denis Bitouzé for report.
+
+Usage: `\usepackage{etoc}\etockeeporiginaltableofcontents`, then
+however you must employ `\etoctableofcontents`, not `\tableofcontents`.
+
+v1.09c \[2020/05/15\]
---------------------
Syncs with KOMA-script deprecation of `\iftocfeature`.
@@ -131,123 +144,6 @@ Note to hackers: internal control sequence `\Etoc@localtop` is gone.
etoc now requires e-TeX (`\numexpr`, `\unless`).
-v1.08p \[2018/07/04\]
----------------------
-
-Fixed bug surfacing in case of `linktoc=page` option of hyperref.
-Thanks to Denis Bitouzé for report (cf.
-https://github.com/ho-tex/hyperref/issues/65,
-https://github.com/dbitouze/yathesis/issues/61).
-
-v1.08o \[2018/06/15\]
----------------------
-
-Fixed bug showing up if an unnumbered TOC entry starts with a brace,
-and document uses hyperref. Caused by a typo in a macro name at
-previous release.
-
-v1.08n \[2018/02/23\]
----------------------
-
-Refactoring of core macros detecting `\numberline` and its variants.
-
-v1.08m \[2018/02/07\]
----------------------
-
-Fix to `1.08k`'s introduced incompatibility with KOMA-script
-and tocbasic's `\nonumberline`.
-
-v1.08l \[2017/10/23\]
----------------------
-
-Workaround an issue with `Emacs/AUCTeX` wrongly reporting about
-actually non-existent LaTeX errors, which was triggered by some
-strings written (indirectly) to log file by etoc under some
-circumstances.
-
-v1.08k \[2017/09/28\]
----------------------
-
-Adds `\etocsetlocaltop.toc`. See corresponding manual section for
-details.
-
-Adds `\etocsavedparttocline`, `\etocsavedchaptertocline`,
-`\etocsavedsectiontocline`, ... They can be used in the context of
-the technique explained in section "Another compatibility mode".
-
-Formerly, etoc redefined for the duration of the TOC the memoir
-macro `\chapternumberline` and its likes to have same meaning as
-`\numberline` (of course, not when executed in compatibility mode),
-for the sake of extraction of `\etocnumber`.
-
-New method detects presence of any `\<foo>numberline` macro without
-any change to originals; they can thus be used as is when applying
-the approach of "Another compatibility mode" section from manual.
-
-v1.08j \[2017/09/21\]
----------------------
-
-Since `1.08a-2015/03/13` `\etocname`, `\etocnumber`, `\etocpage`
-contain, if hyperref is present and configured for using
-hyperlinks in the TOC, the link destination in already expanded
-form. This means one can use them even if the style closes a
-group (for example from a `&` in a tabular), if `\etocglobaldefs`
-was issued; also one can save their meaning for delayed usage
-(with for example `\LetLtxMacro` as they are robust).
-
-But for some legacy reason `\etoclink`, contrarily to
-`\etocthelink`, was handled differently. Now, `\etoclink` also
-contains the link destination in already expanded form, and can
-thus be used even if the line style issues a `&`, as long as
-`\etocglobaldefs` is issued.
-
-Also, bugs dating back to the early days of the package, but
-surfacing only under relatively rare conditions such as usage
-of hyperref with its option "linktoc=page" got fixed.
-
-v1.08i \[2016/09/29\]
----------------------
-
-This fixes an issue dating back to `1.08e-2015/04/17`: under
-`\etocchecksemptiness` regime, some circumstances (such as adding to
-an already compiled document a `\localtableofcontents` before the
-main `\tableofcontents`) created an "`Undefined control sequence`
-`\Etoc@localtop`" error. Thanks to Denis Bitouzé for reporting the
-problem.
-
-On this occasion, `\etocdoesnotcheckemptiness` has been
-added to unset the flag.
-
-A rather more exotic issue was fixed: the emptiness check for
-local tocs could get confused if the `tocdepth` counter was varying
-in some specific ways from inside the `toc` file.
-
-After adding to a document a `\localtableofcontents`, two LaTeX
-passes are needed for etoc to get a chance to print the
-correct local contents. Formerly, etoc issued a Warning on
-the first pass; it now also induces LaTeX into
-announcing "There were undefined references", as this is nearer
-to the end of the log file and console output.
-
-v1.08h \[2016/09/25\]
----------------------
-
-New functioning of `\etocsetnexttocdepth`: the tocdepth counter is
-modified only at the time of the table of contents, not before. This
-fixes an issue which arose when `\etocsetnexttocdepth` was used
-multiple times with no intervening table of contents. Thanks to
-Denis Bitouzé for reporting the problem.
-
-The PDF documentation includes about 25 LaTeX code snippets also
-as file attachment annotations, additionally to their verbatim
-typesetting. The ordering of the documentation contents has been
-slightly re-organized.
-
-A previous documentation-only update on 2016/09/09 added a new
-section with the (approximate) translation into etoc lingua of the
-book class toc style, for easy customizability.
-
-The latest translation into German of the additions made to the
-documentation dates back to v1.08d \[2015/04/09\].
-
-Thanks to Christine Römer!
+Note: the German version of the documentation was last updated
+at the time of the v1.08d \[2015/04/09\] release. Since then
+all additions to it have been left in English language.
diff --git a/macros/latex/contrib/etoc/etoc-DE.pdf b/macros/latex/contrib/etoc/etoc-DE.pdf
index 57f8f97060..6a2b623e0f 100644
--- a/macros/latex/contrib/etoc/etoc-DE.pdf
+++ b/macros/latex/contrib/etoc/etoc-DE.pdf
Binary files differ
diff --git a/macros/latex/contrib/etoc/etoc.dtx b/macros/latex/contrib/etoc/etoc.dtx
index 6809655d29..9a0fc5716a 100644
--- a/macros/latex/contrib/etoc/etoc.dtx
+++ b/macros/latex/contrib/etoc/etoc.dtx
@@ -2,27 +2,26 @@
% N.B.: this dtx file is NOT for use with \DocInput. The latex source of the
% user manual is not prefixed with percent signs.
%<*none>
-\def\etocdtxtimestamp {Time-stamp: <15-05-2020 at 19:18:31 CEST>}%
+\def\etocdtxtimestamp {Time-stamp: <13-07-2021 at 10:15:28 CEST>}%
%</none>
%<*!readme>
%%
%% Package: etoc
-%% Version: 1.09c-2020/05/15
+%% Version: 1.09d
%% License: LPPL 1.3c
-%% Copyright (C) 2012-2020 Jean-Francois Burnol
+%% Copyright (C) 2012-2021 Jean-Francois Burnol
%% <jfbu at free dot fr>
-%% Copyright (C) 2014-2020 Christine Roemer
+%% Copyright (C) 2014-2015 Christine Roemer and collaborators
%% <Christine_Roemer at t-online dot de>
-%% and collaborators for the translation into German of the documentation
-%%
+%% (translation into German of the documentation)
%</!readme>
%<*none>
-\def\etocpkgdate {2020/05/15}
-\def\etocdocdate {2020/05/15}
-\def\etocpkgversion {v1.09c}
+\def\etocpkgdate {2021/07/13}
+\def\etocdocdate {2021/07/13}
+\def\etocpkgversion {v1.09d}
\def\etocpkgdescription {Completely customisable TOCs (JFB)}
-\def\etocDEpkgdate {15.05.2020}% METTRE À JOUR À CHAQUE BUMP!
-\def\etocDEdocdate {15.05.2020}
+\def\etocDEpkgdate {13.07.2021}% METTRE À JOUR À CHAQUE BUMP!
+\def\etocDEdocdate {13.07.2021}
\def\etocDEDEdocdate {09.04.2015}%
\def\etocDEDEpkgversion {v1.08d}%
% Definition of \etocLicense
@@ -33,11 +32,12 @@
\catcode32=13\catcode`\\=12^^Brelax^^A
^^Bfirstofone{^^Bendgroup^^Bdef^^BetocLicense^^A
{% Package: etoc
-% Version: 1.09c-2020/05/15
+% Version: 1.09d
% License: LPPL 1.3c
-% Copyright (C) 2012-2020 Jean-Francois Burnol <jfbu at free dot fr>
-% Copyright (C) 2014-2020 Christine Roemer <Christine_Roemer at t-online dot de>
-% and collaborators for the translation into German of the documentation
+% Copyright (C) 2012-2021 Jean-Francois Burnol <jfbu at free dot fr>
+% Copyright (C) 2014-2015 Christine Roemer and collaborators
+% <Christine_Roemer at t-online dot de>
+% (translation into German of the documentation)
%
% This Work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, in its
@@ -67,14 +67,14 @@
%<*readme>
<!-- -->
- Source: etoc.dtx (v1.09c-2020/05/15)
+ Source: etoc.dtx (v1.09d)
Author: Jean-Francois Burnol
Author: Christine Roemer et al. (German tranlation)
Info: Completely customisable TOCs
License: LPPL 1.3c
- Copyright (C) 2012-2020 Jean-Francois Burnol.
- Copyright (C) 2014-2020 Christine Roemer and collaborators for
- the translation into German of the documentation.
+ Copyright (C) 2012-2021 Jean-Francois Burnol.
+ Copyright (C) 2014-2015 Christine Roemer and collaborators
+ (translation into German of the documentation)
<jfbu at free dot fr> <Christine_Roemer at t-online dot de>
ABSTRACT
@@ -174,7 +174,20 @@ etoc.pdf, etoc-DE.pdf, etoc.dvi, etoc-DE.dvi.
RECENT CHANGES
==============
-v1.09c \[2020/05/05\]
+v1.09d \[2021/07/13\]
+-------------------------
+
+Some minor synching with tableof 1.4c.
+
+Add `\etockeeporiginaltableofcontents` to provide a work-around to a
+compatibility issue with listings's `\lstlistoflistings`, which abuses
+`\tableofcontents` for doing something unrelated to the actual contents.
+Thanks to Denis Bitouzé for report.
+
+Usage: `\usepackage{etoc}\etockeeporiginaltableofcontents`, then
+however you must employ `\etoctableofcontents`, not `\tableofcontents`.
+
+v1.09c \[2020/05/15\]
---------------------
Syncs with KOMA-script deprecation of `\iftocfeature`.
@@ -198,136 +211,9 @@ Note to hackers: internal control sequence `\Etoc@localtop` is gone.
etoc now requires e-TeX (`\numexpr`, `\unless`).
-
-v1.08p \[2018/07/04\]
----------------------
-
-Fixed bug surfacing in case of `linktoc=page` option of hyperref.
-Thanks to Denis Bitouzé for report (cf.
-https://github.com/ho-tex/hyperref/issues/65,
-https://github.com/dbitouze/yathesis/issues/61).
-
-
-v1.08o \[2018/06/15\]
----------------------
-
-Fixed bug showing up if an unnumbered TOC entry starts with a brace,
-and document uses hyperref. Caused by a typo in a macro name at
-previous release.
-
-
-v1.08n \[2018/02/23\]
----------------------
-
-Refactoring of core macros detecting `\numberline` and its variants.
-
-
-v1.08m \[2018/02/07\]
----------------------
-
-Fix to `1.08k`'s introduced incompatibility with KOMA-script
-and tocbasic's `\nonumberline`.
-
-
-v1.08l \[2017/10/23\]
----------------------
-
-Workaround an issue with `Emacs/AUCTeX` wrongly reporting about
-actually non-existent LaTeX errors, which was triggered by some
-strings written (indirectly) to log file by etoc under some
-circumstances.
-
-
-v1.08k \[2017/09/28\]
----------------------
-
-Adds `\etocsetlocaltop.toc`. See corresponding manual section for
-details.
-
-Adds `\etocsavedparttocline`, `\etocsavedchaptertocline`,
-`\etocsavedsectiontocline`, ... They can be used in the context of
-the technique explained in section "Another compatibility mode".
-
-Formerly, etoc redefined for the duration of the TOC the memoir
-macro `\chapternumberline` and its likes to have same meaning as
-`\numberline` (of course, not when executed in compatibility mode),
-for the sake of extraction of `\etocnumber`.
-
-New method detects presence of any `\<foo>numberline` macro without
-any change to originals; they can thus be used as is when applying
-the approach of "Another compatibility mode" section from manual.
-
-
-v1.08j \[2017/09/21\]
----------------------
-
-Since `1.08a-2015/03/13` `\etocname`, `\etocnumber`, `\etocpage`
-contain, if hyperref is present and configured for using
-hyperlinks in the TOC, the link destination in already expanded
-form. This means one can use them even if the style closes a
-group (for example from a `&` in a tabular), if `\etocglobaldefs`
-was issued; also one can save their meaning for delayed usage
-(with for example `\LetLtxMacro` as they are robust).
-
-But for some legacy reason `\etoclink`, contrarily to
-`\etocthelink`, was handled differently. Now, `\etoclink` also
-contains the link destination in already expanded form, and can
-thus be used even if the line style issues a `&`, as long as
-`\etocglobaldefs` is issued.
-
-Also, bugs dating back to the early days of the package, but
-surfacing only under relatively rare conditions such as usage
-of hyperref with its option "linktoc=page" got fixed.
-
-
-v1.08i \[2016/09/29\]
----------------------
-
-This fixes an issue dating back to `1.08e-2015/04/17`: under
-`\etocchecksemptiness` regime, some circumstances (such as adding to
-an already compiled document a `\localtableofcontents` before the
-main `\tableofcontents`) created an "`Undefined control sequence`
-`\Etoc@localtop`" error. Thanks to Denis Bitouzé for reporting the
-problem.
-
-On this occasion, `\etocdoesnotcheckemptiness` has been
-added to unset the flag.
-
-A rather more exotic issue was fixed: the emptiness check for
-local tocs could get confused if the `tocdepth` counter was varying
-in some specific ways from inside the `toc` file.
-
-After adding to a document a `\localtableofcontents`, two LaTeX
-passes are needed for etoc to get a chance to print the
-correct local contents. Formerly, etoc issued a Warning on
-the first pass; it now also induces LaTeX into
-announcing "There were undefined references", as this is nearer
-to the end of the log file and console output.
-
-
-v1.08h \[2016/09/25\]
----------------------
-
-New functioning of `\etocsetnexttocdepth`: the tocdepth counter is
-modified only at the time of the table of contents, not before. This
-fixes an issue which arose when `\etocsetnexttocdepth` was used
-multiple times with no intervening table of contents. Thanks to
-Denis Bitouzé for reporting the problem.
-
-The PDF documentation includes about 25 LaTeX code snippets also
-as file attachment annotations, additionally to their verbatim
-typesetting. The ordering of the documentation contents has been
-slightly re-organized.
-
-A previous documentation-only update on 2016/09/09 added a new
-section with the (approximate) translation into etoc lingua of the
-book class toc style, for easy customizability.
-
-
-The latest translation into German of the additions made to the
-documentation dates back to v1.08d \[2015/04/09\].
-
-Thanks to Christine Römer!
+Note: the German version of the documentation was last updated
+at the time of the v1.08d \[2015/04/09\] release. Since then
+all additions to it have been left in English language.
%</readme>
%<*tex>-------------------------------------------------------------------------
%% run pdflatex thrice on this file etoc.tex to produce the documentation
@@ -1150,6 +1036,7 @@ etoc-right-rule-col-or-cmd
etoc-bot-tom-rule-col-or-cmd
etoc-bkg-col-or-cmd
etoc-framed-mp-hook
+etoc-keep-orig-i-nal-table-of-con-tents
}
\hyphenation{next-toc-with-tags}
@@ -1372,7 +1259,17 @@ etoc-framed-mp-hook
based on a multi-column format, with, optionally, a ruled title or framed
contents.
- The \csa{tableofcontents} command may be used arbitrarily many times and it
+ The \csa{tableofcontents} command may be used arbitrarily many times%
+%
+\footnote{Except if \texttt{\string\etockeeporiginaltableofcontents}
+ (\textcolor{Green}{\bfseries New with 1.09d}) is issued in the preamble
+ after package loading. Then the macro \texttt{\string\etoctableofcontents},
+ not \texttt{\string\tableofcontents}, must be used if the \etoc features
+ are to apply to the global TOC. This was added to fix a compatiblity issue
+ with \texttt{listings}'s \texttt{\string\lstlistoflistings}, as it needs the
+ \texttt{\string\tableofcontents} macro to keep its original meaning.}
+%
+ and it
has a variant \csa{localtableofcontents} which prints tables of contents
`local' to the current surrounding document unit. An extension of the
\csa{label}/\csa{ref} syntax allows to reproduce (with another layout) a local
@@ -6102,7 +5999,17 @@ version is \texttt{\etocpkgversion}, of \texttt{\etocpkgdate}.
vordefinierte Stile, die auf der Mehrspaltenansicht mit optionalen,
unterstrichenen Titeln oder eingerahmten Inhalten basieren.
- Der \csa{tableofcontents}"=Befehl kann beliebig mehrfach benutzt werden. Er hat
+ Der \csa{tableofcontents}"=Befehl kann beliebig mehrfach benutzt werden.%
+%
+\footnote{Except if \texttt{\string\etockeeporiginaltableofcontents}
+ (\textcolor{Green}{\bfseries New with 1.09d}) is issued in the preamble
+ after package loading. Then the macro \texttt{\string\etoctableofcontents},
+ not \texttt{\string\tableofcontents}, must be used if the \etoc features
+ are to apply to the global TOC. This was added to fix a compatiblity issue
+ with \texttt{listings}'s \texttt{\string\lstlistoflistings}, as it needs the
+ \texttt{\string\tableofcontents} macro to keep its original meaning.}
+%
+ Er hat
die Variante \csa{localtableofcontents}, welche die Inhaltsangabe 'local' zur
aktuellen Dokumenten"=Sektion ausgibt. Eine Erweiterung der
\csa{label}/\csa{ref}-Syntax erlaubt die Reproduktion (mit anderem Layout)
@@ -10724,7 +10631,19 @@ Dokumentation erzeugt von der Quelldatei mit dem Stempel
\begin{multicols}{2}
\begin{jfverbatim}
-v1.09c [2020/05/05]^
+v1.09d [2021/07/13]^
+
+ Some minor synching with tableof 1.4c.
+
+ Add \etockeeporiginaltableofcontents to provide a work-around to a
+ compatibility issue with listings's \lstlistoflistings, which abuses
+ \tableofcontents for doing something unrelated to the actual contents.
+ Thanks to Denis Bitouzé for report.
+
+ Usage: \usepackage{etoc}\etockeeporiginal-tableofcontents, then
+ however you must employ \etoctableofcontents, not \tableofcontents.
+
+~v1.09c [2020/05/15]^
Syncs with KOMA-script deprecation of \iftocfeature.
@@ -12692,15 +12611,12 @@ v1.09c [2020/05/05]^
\Etoc@tocdepthset % new with 1.08h (\etocsetnexttocdepth)
\begingroup % closed in \Etoc@t@bleofcontents or \Etoc@localtableofcontents
% \end{macrocode}
-% No need for the |tableof| extra group level, even it is better to get rid of
-% it. I don't globally cancel |\tof@begingroup| and |\tof@endgroup| to leave
-% open for the user the (dubious) possibility of using directly |\tableof|,
-% |\tablenotof| (rather than only the reasonable thing which is
-% |\nexttocwithtags{}{}|).
-% \begin{macrocode}
- \let\tof@begingroup\@empty
- \let\tof@endgroup \@empty
-% \end{macrocode}
+% Prior to its release |1.4c|, |tableof| added a group pair via |\tof@begin|
+% and |\tof@finish|. This was removed at |1.4c|. So no need to do anything now
+% here about silencing |\tof@begingroup| and |\tof@endgroup|: they are
+% inserted only in the |tableof| private copy of the |.toc| file which is
+% used by its own table of contents typesetting command.
+%
% |1.08i| removes definition of |\etoc@startlocaltoc| from here. It is done
% in |\Etoc@localtableofcontents| or uses its default of |\@gobble|.
%
@@ -12712,13 +12628,19 @@ v1.09c [2020/05/05]^
{\let\Etoc@aftertitlehook\@empty\Etoc@table@fcontents}
{\def\Etoc@aftertitlehook{\etocaftertitlehook}\Etoc@table@fcontents}%
}% \etoctableofcontents
+% \end{macrocode}
+% See at end of this file for the explanation of this |1.09d| added saving
+% of original meaning at package loading time.
+% \begin{macrocode}
+\let\etocoriginaltableofcontents\tableofcontents
\let\tableofcontents\etoctableofcontents
\newcommand*\localtableofcontents{%
\Etoc@openouttoc
\Etoc@tocdepthset % new with 1.08h (\etocsetnexttocdepth)
\begingroup % closed in \Etoc@t@bleofcontents or \Etoc@localtableofcontents
- \let\tof@begingroup\@empty
- \let\tof@endgroup \@empty
+% \end{macrocode}
+% Same comment relative to |tableof|. No need to do anything here.
+% \begin{macrocode}
\@ifstar
{\let\Etoc@aftertitlehook\@empty\Etoc@localtable@fcontents}
{\def\Etoc@aftertitlehook{\etocaftertitlehook}\Etoc@localtable@fcontents}%
@@ -12823,15 +12745,36 @@ v1.09c [2020/05/05]^
#2\@nobreakfalse % 1.07d: \@nobreakfalse moved here
\Etoc@restoretocdepth % 1.07g. moved here from before #2 by 1.08
% \end{macrocode}
-% |1.08|: necessary if |tableof 1.4a| has been used in global mode and thus
-% was forced to modify globally |\contentsline|. The collateral effect is that
-% \etoc is now forced to reset globally |\contentsline|.
+% |\contentsline| was set to |\Etoc@etoccontentsline| by a non-global |\let|,
+% and it will recover its normal value from exiting a scope limiting group.
+% But |tableof| (since |1.4a|) under |\etocglobaldefstrue| does a global
+% redefinition of |\contentsline|. Its |\tof@finish| then does a global
+% restore of |\contentsline|, but it will be to the \etoc set
+% value. |\tof@finish| is active only if either the table of contents was
+% typeset using |\tableof|, |\tablenotof|, |\tableoftaggedcontents|, or
+% |\nextocwithtags| was used. If not active it is either undefined (no
+% package |tableof|) or |\@empty|. Prior to |tableof| |1.4c|, the
+% |\tof@finish| closed a group and could be undefined as well, but not if
+% |\etocglobaldefstrue|.
+%
+% \etoc |1.09c| tested here only equality to |\@empty| to decide if it is
+% needed to globally restore |\contentsline| but this meant the global restore
+% was done systematically in case of absence of package |tableof|.
+%
+% If rather than |\@empty| the |\tof@finish| fall-back was |\relax| we could
+% use here |\@ifundefined| to check in one go (matters of speaking because
+% expansion of |\@ifundefined| is not in "one-go"). Maybe I should update
+% |tableof|, but for time being I will simply add an extra test. All this is
+% probably lots of time on irrelevant issue.
% \begin{macrocode}
\ifx\Etoc@global\global
- \ifx\tof@finish\@empty
- \else
+ \@ifundefined{tof@finish}
+ {}
+ {\ifx\tof@finish\@empty
+ \else
\global\let\contentsline\Etoc@savedcontentsline
- \fi
+ \fi
+ }%
\fi
\@gobble\etoc@
}% end of \Etoc@tableofcontents definition by \etocsettocstyle
@@ -13765,6 +13708,14 @@ v1.09c [2020/05/05]^
\etocobeydepthtags
\let\etocaftertochook \@empty % public for end user.
\let\etocbeforetitlehook \@empty % new with 1.07m
+% \end{macrocode}
+% |listings| abuses |\tableofcontents| for its |\lstlistoflistings|. It
+% doesn't seem worth to let my version of |\tableofcontents| have to check for
+% this special circumstance. So at |1.09d|, simply add this (and induced
+% annoying updates to documentation at at least two locations):
+% \begin{macrocode}
+\def\etockeeporiginaltableofcontents
+ {\let\tableofcontents\etocoriginaltableofcontents}%
\endinput
% \end{macrocode}
% \MakePercentComment
@@ -13784,7 +13735,7 @@ v1.09c [2020/05/05]^
Grave accent \` Left brace \{ Vertical bar \|
Right brace \} Tilde \~}
-\CheckSum{3516}%
+\CheckSum{3513}%
\csname check@checksum\endcsname
\Finale
diff --git a/macros/latex/contrib/etoc/etoc.pdf b/macros/latex/contrib/etoc/etoc.pdf
index 929e58aea3..7ed8db0803 100644
--- a/macros/latex/contrib/etoc/etoc.pdf
+++ b/macros/latex/contrib/etoc/etoc.pdf
Binary files differ
diff --git a/macros/latex/contrib/ifallfalse/README.md b/macros/latex/contrib/ifallfalse/README.md
index cddfa35cd3..925d98f471 100644
--- a/macros/latex/contrib/ifallfalse/README.md
+++ b/macros/latex/contrib/ifallfalse/README.md
@@ -1,4 +1,4 @@
-# The LaTeX package ifallfalse - version 1.0.0 (2021/07/01)
+# The LaTeX package ifallfalse - version 1.0.1 (2021/07/12)
> Copyright (C) 2021 Dennis Chen <proofprogram@gmail.com>
>
@@ -11,12 +11,14 @@
> and version 1.3 or later is part of all distributions of LaTeX
> version 2005/12/01 or later.
-`ifallfalse` provides an environment that can compare a string against a set of another strings, and if it matches none of them, it executes some action.
+`ifallfalse` provides an `allfalse` environment that can compare a string against a set of another strings, and if it matches none of them, it executes some action.
+
+Note that this package does not work with the `lualatex` engine.
## Package contents
- `README.md` this file
-- `ifallfalse.pdf` documentation PDF with implementation details
+- `ifallfalse.pdf` documentation PDF with implementation details
- `ifallfalse.dtx` contains package and documentation code
- `ifallfalse.ins` generates .sty from .dtx
@@ -34,4 +36,4 @@ Run
pdflatex ifallfalse.dtx
-to generate `ifallfalse.pdf`, which contains the package documentation. \ No newline at end of file
+to generate `ifallfalse.pdf`, which contains the package documentation.
diff --git a/macros/latex/contrib/ifallfalse/ifallfalse.dtx b/macros/latex/contrib/ifallfalse/ifallfalse.dtx
index 23bbbedd0d..9d5e630f73 100644
--- a/macros/latex/contrib/ifallfalse/ifallfalse.dtx
+++ b/macros/latex/contrib/ifallfalse/ifallfalse.dtx
@@ -15,7 +15,7 @@
% \iffalse
%<package>
%<package>\NeedsTeXFormat{LaTeX2e}
-%<package>\ProvidesPackage{ifallfalse}[2021/07/01 v1.0.0 Compare string against set of other strings]
+%<package>\ProvidesPackage{ifallfalse}[2021/07/12 v1.0.1 Compare string against set of other strings]
%<*driver>
\documentclass{ltxdoc}
@@ -30,6 +30,7 @@
%</driver>
% \fi
%
+% \changes{v.1.0.1}{2021/07/12}{Fix errant references to allfalse environment and add limitations}
% \changes{v1.0.0}{2021/07/01}{Initial version}
%
% \GetFileInfo{ifallfalse.sty}
@@ -46,40 +47,40 @@
%
% \section{Usage}
%
-% The package provides an \textsf{ifallfalse} environment and a macro |\orcheck| to be used inside the \textsf{ifallfalse} environment.
+% The package provides an \textsf{allfalse} environment and a macro |\orcheck| to be used inside the \textsf{allfalse} environment.
%
-% \DescribeEnv{ifallfalse}
-% To set up an ifallfalse environment, simply write
+% \DescribeEnv{allfalse}
+% To set up an allfalse environment, simply write
% \begin{verbatim}
-%\begin{ifallfalse}{string}{action}
+%\begin{allfalse}{string}{action}
%
-%\end{ifallfalse}
+%\end{allfalse}
% \end{verbatim}
% \textsf{string} will be compared to the set of strings (which we will declare via |\orcheck|), and if \textsf{string} does not match the set of strings, \textsf{action} will be executed.
%
% \DescribeMacro{\orcheck}
%
-% To add strings to the set that \textsf{string} will be compared to, we must write |\orcheck{setstring}| inside the corresponding \textsf{ifallfalse} environment. Then, \textsf{action} will not execute if \textsf{string} matches \textsf{setstring} or any arguments of previous |\orcheck| declarations.
+% To add strings to the set that \textsf{string} will be compared to, we must write |\orcheck{setstring}| inside the corresponding \textsf{allfalse} environment. Then, \textsf{action} will not execute if \textsf{string} matches \textsf{setstring} or any arguments of previous |\orcheck| declarations.
%
% If no |\orcheck| declarations exist, then \textsf{action} will always be executed.
%
% \subsection{Error Checking}
%
-% The package checks whether the macro |\orcheck| is used inside an \textsf{ifallfalse} environment. If it is not, the package throws an error.
+% The package checks whether the macro |\orcheck| is used inside an \textsf{allfalse} environment. If it is not, the package throws an error.
%
% \section{Example}
%
-% Here is a simple example to demonstrate how \textsf{ifallfalse} is used.
+% Here is a simple example to demonstrate how \textsf{allfalse} is used.
% \begin{verbatim}
%\documentclass{minimal}
%
%\begin{document}
%
-%\begin{ifallfalse}{purple}{This color is not red, blue, or green!}
+%\begin{allfalse}{purple}{This color is not red, blue, or green!}
% \orcheck{red}
% \orcheck{blue}
% \orcheck{green}
-%\end{ifallfalse}
+%\end{allfalse}
%
%\end{document}
% \end{verbatim}
@@ -88,10 +89,10 @@
%
% \section{Implementation}
%
-% These are the implementation details of package \textsf{ifallfalse}. Because the package is so short, we can explain everything.
+% These are the implementation details of package \textsf{allfalse}. Because the package is so short, we can explain everything.
%
-% \begin{environment}{ifallfalse}
-% When setting up ifallfalse, we locally define the |\comparedstring| macro with the first argument that the environment takes in. This is what will be compared against all the strings passed in through the |\orcheck| declarations inside the environment.
+% \begin{environment}{allfalse}
+% When setting up allfalse, we locally define the |\comparedstring| macro with the first argument that the environment takes in. This is what will be compared against all the strings passed in through the |\orcheck| declarations inside the environment.
%
% Then, we define our body of logic (which we will be adding onto through |\orcheck|) to just initially consist of the action we would like to perform if |\comparedstring| matches none of the strings passed in through |\orcheck|.
% \begin{macrocode}
@@ -139,5 +140,9 @@
% \end{macrocode}
% \end{macro}
%
+% \section{Limitations}
+%
+% This package cannot be used in the \textsf{lualatex} engine.
+%
% \Finale
-\endinput \ No newline at end of file
+\endinput
diff --git a/macros/latex/contrib/ifallfalse/ifallfalse.pdf b/macros/latex/contrib/ifallfalse/ifallfalse.pdf
index 6793c7799b..44df77fa26 100644
--- a/macros/latex/contrib/ifallfalse/ifallfalse.pdf
+++ b/macros/latex/contrib/ifallfalse/ifallfalse.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3backend/CHANGELOG.md b/macros/latex/contrib/l3backend/CHANGELOG.md
index 1ec53b4d8b..fae21bb66f 100644
--- a/macros/latex/contrib/l3backend/CHANGELOG.md
+++ b/macros/latex/contrib/l3backend/CHANGELOG.md
@@ -6,6 +6,12 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2021-07-12]
+
+### Fixed
+- GoTo link formation for Distiller-based workflows (issue #957)
+- Support transparency with Distiller
+
## [2021-05-07]
### Changed
@@ -180,7 +186,8 @@ this project uses date-based 'snapshot' version identifiers.
- Include `l3backend` in file names
- Moved backend code to internal for each 'parent' module
-[Unreleased]: https://github.com/latex3/latex3/compare/2021-05-07...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2021-07-12...HEAD
+[2021-07-12]: https://github.com/latex3/latex3/compare/2021-05-07...2021-07-12
[2021-05-07]: https://github.com/latex3/latex3/compare/2021-03-18...2021-05-07
[2021-03-18]: https://github.com/latex3/latex3/compare/2021-03-02...2021-03-18
[2021-03-02]: https://github.com/latex3/latex3/compare/2021-02-18...2021-03-02
diff --git a/macros/latex/contrib/l3backend/README.md b/macros/latex/contrib/l3backend/README.md
index b4b156dee9..fa022b27e6 100644
--- a/macros/latex/contrib/l3backend/README.md
+++ b/macros/latex/contrib/l3backend/README.md
@@ -1,7 +1,7 @@
LaTeX3 Backend Drivers
======================
-Release 2021-05-07
+Release 2021-07-12
This package forms parts of `expl3`, and contains the code used to interface
with backends (drivers) across the `expl3` codebase. The functions here are
diff --git a/macros/latex/contrib/l3backend/l3backend-basics.dtx b/macros/latex/contrib/l3backend/l3backend-basics.dtx
index 446178138e..ef02b741e0 100644
--- a/macros/latex/contrib/l3backend/l3backend-basics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-07}
+% \date{Released 2021-07-12}
%
% \maketitle
%
@@ -70,27 +70,27 @@
% \begin{macrocode}
\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-dvipdfmx.def}{2021-05-07}{}
+ {l3backend-dvipdfmx.def}{2021-07-12}{}
{L3 backend support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-dvips.def}{2021-05-07}{}
+ {l3backend-dvips.def}{2021-07-12}{}
{L3 backend support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-dvisvgm.def}{2021-05-07}{}
+ {l3backend-dvisvgm.def}{2021-07-12}{}
{L3 backend support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-luatex.def}{2021-05-07}{}
+ {l3backend-luatex.def}{2021-07-12}{}
{L3 backend support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-pdftex.def}{2021-05-07}{}
+ {l3backend-pdftex.def}{2021-07-12}{}
{L3 backend support: PDF output (pdfTeX)}
%</pdftex>
%<*xetex>
- {l3backend-xetex.def}{2021-05-07}{}
+ {l3backend-xetex.def}{2021-07-12}{}
{L3 backend support: XeTeX}
%</xetex>
% \end{macrocode}
@@ -156,7 +156,14 @@
% most up-to-date method,
% \begin{macrocode}
\cs_if_exist:NTF \@ifl@t@r
- { \cs_new_eq:NN \__kernel_backend_first_shipout:n \AtBeginDvi }
+ {
+ \@ifl@t@r \fmtversion { 2020-10-01 }
+ {
+ \cs_new_protected:Npn \__kernel_backend_first_shipout:n #1
+ { \hook_gput_code:nnn { shipout / firstpage } { l3backend } {#1} }
+ }
+ { \cs_new_eq:NN \__kernel_backend_first_shipout:n \AtBeginDvi }
+ }
{ \cs_new_eq:NN \__kernel_backend_first_shipout:n \use:n }
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/l3backend/l3backend-box.dtx b/macros/latex/contrib/l3backend/l3backend-box.dtx
index e45df7604b..7724aa7104 100644
--- a/macros/latex/contrib/l3backend/l3backend-box.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-07}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-code.pdf b/macros/latex/contrib/l3backend/l3backend-code.pdf
index c87ef2dc38..e86f472ae4 100644
--- a/macros/latex/contrib/l3backend/l3backend-code.pdf
+++ b/macros/latex/contrib/l3backend/l3backend-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3backend/l3backend-color.dtx b/macros/latex/contrib/l3backend/l3backend-color.dtx
index 7979b2d8e6..ad3075dff5 100644
--- a/macros/latex/contrib/l3backend/l3backend-color.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-07}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-draw.dtx b/macros/latex/contrib/l3backend/l3backend-draw.dtx
index 449b7f9c93..5a896469bd 100644
--- a/macros/latex/contrib/l3backend/l3backend-draw.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-draw.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-07}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-graphics.dtx b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
index 1448ecddc1..e1bd1e0921 100644
--- a/macros/latex/contrib/l3backend/l3backend-graphics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-07}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-header.dtx b/macros/latex/contrib/l3backend/l3backend-header.dtx
index 1d01b18928..b5ab577892 100644
--- a/macros/latex/contrib/l3backend/l3backend-header.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-header.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-07}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-opacity.dtx b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
index a600defcc0..6017403ea0 100644
--- a/macros/latex/contrib/l3backend/l3backend-opacity.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-07}
+% \date{Released 2021-07-12}
%
% \maketitle
%
@@ -72,7 +72,14 @@
% \end{macrocode}
%
% \begin{macro}{\@@_backend_select:n,\@@_backend_select_aux:n}
-% No stack so set values directly.
+% \begin{macro}{\@@_backend_fill:n, \@@_backend_stroke:n}
+% \begin{macro}{\@@_backend:nnn, \@@_backend:xnn}
+% No stack so set values directly. The need to deal with Distiller and
+% Ghostscript separately means we use a common auxiliary: the two
+% systems require different PostScript for transparency. This is
+% of course not quite as efficient as doing one test for setting all
+% transparency, but it keeps things clearer here. Thanks to Alex Grahn
+% for the detail on testing for GhostScript.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_select:n #1
{
@@ -81,29 +88,47 @@
}
\cs_new_protected:Npn \@@_backend_select_aux:n #1
{
- \__kernel_backend_postscript:n
- { #1 ~ .setfillconstantalpha ~ #1 ~ .setstrokeconstantalpha }
+ \@@_backend:nnn {#1} { fill } { ca }
+ \@@_backend:nnn {#1} { stroke } { CA }
}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_backend_fill:n, \@@_backend_stroke:n}
-% \begin{macro}{\@@_backend:nn, \@@_backend:xn}
-% Similar to the above but with no stack and only adding to one or other of
-% the entries.
-% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_fill:n #1
- { \@@_backend:xn { \fp_eval:n { min(max(0,#1),1) } } { fill } }
+ {
+ \@@_backend:xnn
+ { \fp_eval:n { min(max(0,#1),1) } }
+ { fill }
+ { ca }
+ }
\cs_new_protected:Npn \@@_backend_stroke:n #1
- { \@@_backend:xn { \fp_eval:n { min(max(0,#1),1) } } { stroke } }
-\cs_new_protected:Npn \@@_backend:nn #1#2
{
- \__kernel_backend_postscript:n { #1 ~ .set #2 constantalpha }
+ \@@_backend:xnn
+ { \fp_eval:n { min(max(0,#1),1) } }
+ { stroke }
+ { CA }
}
-\cs_generate_variant:Nn \@@_backend:nn { x }
+\cs_new_protected:Npn \@@_backend:nnn #1#2#3
+ {
+ \__kernel_backend_postscript:n
+ {
+ product ~ (Ghostscript) ~ search
+ {
+ pop ~ pop ~ pop ~
+ #1 ~ .set #2 constantalpha
+ }
+ {
+ pop ~
+ mark ~
+ /#3 ~ #1
+ /SetTransparency ~
+ pdfmark
+ }
+ ifelse
+ }
+ }
+\cs_generate_variant:Nn \@@_backend:nnn { x }
% \end{macrocode}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macrocode}
%</dvips>
diff --git a/macros/latex/contrib/l3backend/l3backend-pdf.dtx b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
index 11456302a2..5c7fa3b565 100644
--- a/macros/latex/contrib/l3backend/l3backend-pdf.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-07}
+% \date{Released 2021-07-12}
%
% \maketitle
%
@@ -392,8 +392,8 @@
% {
% pdf.linkdp.pad ,
% pdf.linkht.pad ,
-% pdf.llx, pdf.lly ,
-% pdf.ury, pdf.ury ,
+% pdf.llx, pdf.lly ,
+% pdf.ury, pdf.ury ,
% pdf.link.dict ,
% pdf.outerbox ,
% pdf.baselineskip
@@ -403,6 +403,10 @@
% grab the link content as a box which can then unbox: this allows the same
% interface as for \pdfTeX{}.
%
+% Notice that the link setup here uses |/Action| not |/A|. That is because
+% Distiller \emph{requires} this trigger word, rather than a \enquote{raw}
+% PDF dictionary key (Ghostscript can handle either form).
+%
% Taking the idea of |evenboxes| from \pkg{hypdvips}, we implement a minimum
% box height and depth for link placement. This means that \enquote{underlining}
% with a hyperlink will generally give an even appearance. However, to ensure
@@ -417,10 +421,13 @@
% as taken from \pkg{hypdvips}.
%
% Getting the outer dimensions of the text area may be better using a two-pass
-% approach and |\tex_savepos:D|. That plus format mode are still to re-examine.
+% approach and |\tex_savepos:D|. That plus generic mode are still to re-examine.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_link_begin_goto:nnw #1#2
- { \@@_backend_link_begin:nw { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
+ {
+ \@@_backend_link_begin:nw
+ { #1 /Subtype /Link /Action << /S /GoTo /D ( #2 ) >> }
+ }
\cs_new_protected:Npn \@@_backend_link_begin_user:nnw #1#2
{ \@@_backend_link_begin:nw {#1#2} }
\cs_new_protected:Npn \@@_backend_link_begin:nw #1
@@ -428,6 +435,11 @@
\bool_if:NF \g_@@_backend_link_bool
{ \@@_backend_link_begin_aux:nw {#1} }
}
+% \end{macrocode}
+% The definition of |pdf.link.dict| here is needed as there is code in the
+% PostScript headers for breaking links, and that can only work with this
+% available.
+% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_link_begin_aux:nw #1
{
\bool_gset_true:N \g_@@_backend_link_bool
@@ -1377,7 +1389,7 @@
width ~ \dim_eval:n {#1} ~
height ~ \dim_eval:n {#2} ~
depth ~ \dim_eval:n {#3} ~
- <</Type/Annot #4 >>
+ << /Type /Annot #4 >>
}
}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3backend/l3backend.ins b/macros/latex/contrib/l3backend/l3backend.ins
index 5bba632ffb..8e316be0f0 100644
--- a/macros/latex/contrib/l3backend/l3backend.ins
+++ b/macros/latex/contrib/l3backend/l3backend.ins
@@ -35,7 +35,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 1990-2021 The LaTeX Project
+Copyright (C) 2019-2021 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/CHANGELOG.md b/macros/latex/contrib/l3experimental/CHANGELOG.md
index 75d0cd7458..5ad7f3d183 100644
--- a/macros/latex/contrib/l3experimental/CHANGELOG.md
+++ b/macros/latex/contrib/l3experimental/CHANGELOG.md
@@ -7,6 +7,11 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2021-07-12]
+
+### Added
+- Module `l3opacity`
+
## [2021-05-27]
### Added
@@ -210,7 +215,8 @@ this project uses date-based 'snapshot' version identifiers.
- New `l3color` module using `xcolor`-like expression syntax
- New `l3draw` module, based on `pgf` layer of the TikZ system
-[Unreleased]: https://github.com/latex3/latex3/compare/2021-05-27...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2021-07-12...HEAD
+[2021-07-12]: https://github.com/latex3/latex3/compare/2021-05-27...2021-07-12
[2021-05-27]: https://github.com/latex3/latex3/compare/2021-02-18...2021-05-27
[2021-02-18]: https://github.com/latex3/latex3/compare/2021-02-06...2021-02-18
[2021-02-06]: https://github.com/latex3/latex3/compare/2021-01-29...2021-02-06
diff --git a/macros/latex/contrib/l3experimental/README.md b/macros/latex/contrib/l3experimental/README.md
index eb62a10b04..ebb812c17d 100644
--- a/macros/latex/contrib/l3experimental/README.md
+++ b/macros/latex/contrib/l3experimental/README.md
@@ -1,7 +1,7 @@
Experimental LaTeX3 Concepts
============================
-Release 2021-05-27
+Release 2021-07-12
Overview
--------
@@ -24,7 +24,7 @@ bundles:
* `l3benchmark`
* `l3draw`
* `l3graphics`
-* `l3pdf`
+* `l3opacity`
* `l3str`
* `l3sys-shell`
* `xcoffins`
@@ -48,18 +48,17 @@ TikZ system.
This module provides interfaces for the inclusion of graphics files
in documents, similar to the `graphics` package.
-`l3pdf`
+`l3opacity`
-------
-This module provides support for core PDF concepts such compression, objects,
-PDF version and so on.
+This module provides support for opacity in PDF output.
`l3str`
-------
A 'string' in TeX terms is a token list in which all of the tokens have
category code 12 ('other'), with the exception of spaces which have the
-category code 10 ('space'). The `l3strf-format` module provides methods
+category code 10 ('space'). The `l3str-format` module provides methods
for formatting such strings.
`l3sys-shell`
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.dtx b/macros/latex/contrib/l3experimental/l3benchmark.dtx
index 3cb4fa0880..71c12d8920 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.dtx
+++ b/macros/latex/contrib/l3experimental/l3benchmark.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
%
@@ -122,7 +122,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3benchmark}{2021-05-27}{}
+\ProvidesExplPackage{l3benchmark}{2021-07-12}{}
{L3 Experimental benchmarking}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.pdf b/macros/latex/contrib/l3experimental/l3benchmark.pdf
index f70e4ce170..e7b04df65e 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.pdf
+++ b/macros/latex/contrib/l3experimental/l3benchmark.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3bitset.dtx b/macros/latex/contrib/l3experimental/l3bitset.dtx
index fd7f59b562..0021241628 100644
--- a/macros/latex/contrib/l3experimental/l3bitset.dtx
+++ b/macros/latex/contrib/l3experimental/l3bitset.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
% \begin{documentation}
@@ -264,7 +264,7 @@
%<@@=bitset>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesExplPackage{l3bitset}{2021-05-27}{}
+\ProvidesExplPackage{l3bitset}{2021-07-12}{}
{L3 Experimental bitset support}
% \end{macrocode}
% A bitset is a string variable.
diff --git a/macros/latex/contrib/l3experimental/l3bitset.pdf b/macros/latex/contrib/l3experimental/l3bitset.pdf
index 1bc1fbb3a6..04e300fe46 100644
--- a/macros/latex/contrib/l3experimental/l3bitset.pdf
+++ b/macros/latex/contrib/l3experimental/l3bitset.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3draw-boxes.dtx b/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
index cd3ac24744..45c6b0a16a 100644
--- a/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-code.pdf b/macros/latex/contrib/l3experimental/l3draw-code.pdf
index 074a30ee1f..68c0490580 100644
--- a/macros/latex/contrib/l3experimental/l3draw-code.pdf
+++ b/macros/latex/contrib/l3experimental/l3draw-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3draw-layers.dtx b/macros/latex/contrib/l3experimental/l3draw-layers.dtx
index 8f1fd9253b..57238ab2f1 100644
--- a/macros/latex/contrib/l3experimental/l3draw-layers.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-layers.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-paths.dtx b/macros/latex/contrib/l3experimental/l3draw-paths.dtx
index f0569e5603..043f9a5926 100644
--- a/macros/latex/contrib/l3experimental/l3draw-paths.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-paths.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-points.dtx b/macros/latex/contrib/l3experimental/l3draw-points.dtx
index 71633ca740..527194b8ee 100644
--- a/macros/latex/contrib/l3experimental/l3draw-points.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-points.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-scopes.dtx b/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
index 6fcb544eb6..7065afd267 100644
--- a/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-softpath.dtx b/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
index fc7fac00db..dd4104a689 100644
--- a/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-state.dtx b/macros/latex/contrib/l3experimental/l3draw-state.dtx
index 046a3a7944..81f992f29d 100644
--- a/macros/latex/contrib/l3experimental/l3draw-state.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-state.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
index de39ce257d..ff23ae4db0 100644
--- a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw.dtx b/macros/latex/contrib/l3experimental/l3draw.dtx
index 9a9e670cce..a713774f8c 100644
--- a/macros/latex/contrib/l3experimental/l3draw.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw.dtx
@@ -110,7 +110,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
%
@@ -1136,7 +1136,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2021-05-27}{}
+\ProvidesExplPackage{l3draw}{2021-07-12}{}
{L3 Experimental core drawing support}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3draw.pdf b/macros/latex/contrib/l3experimental/l3draw.pdf
index 0edae24d33..d63d703791 100644
--- a/macros/latex/contrib/l3experimental/l3draw.pdf
+++ b/macros/latex/contrib/l3experimental/l3draw.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3galley.dtx b/macros/latex/contrib/l3experimental/l3galley.dtx
index 8d0291d1b1..ba662b097f 100644
--- a/macros/latex/contrib/l3experimental/l3galley.dtx
+++ b/macros/latex/contrib/l3experimental/l3galley.dtx
@@ -61,7 +61,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
%
@@ -686,7 +686,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2021-05-27}{}
+\ProvidesExplPackage{l3galley}{2021-07-12}{}
{L3 Experimental galley code}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3galley.pdf b/macros/latex/contrib/l3experimental/l3galley.pdf
index a5519755d2..2b407e61d9 100644
--- a/macros/latex/contrib/l3experimental/l3galley.pdf
+++ b/macros/latex/contrib/l3experimental/l3galley.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3graphics.dtx b/macros/latex/contrib/l3experimental/l3graphics.dtx
index 89a9410016..5101c9ae71 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.dtx
+++ b/macros/latex/contrib/l3experimental/l3graphics.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
%
@@ -240,7 +240,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3graphics}{2021-05-27}{}
+\ProvidesExplPackage{l3graphics}{2021-07-12}{}
{L3 Experimental graphics inclusion support}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3graphics.pdf b/macros/latex/contrib/l3experimental/l3graphics.pdf
index 82a0c5dc3c..a59d1f86e3 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.pdf
+++ b/macros/latex/contrib/l3experimental/l3graphics.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3opacity.dtx b/macros/latex/contrib/l3experimental/l3opacity.dtx
new file mode 100644
index 0000000000..4b1e7ea64f
--- /dev/null
+++ b/macros/latex/contrib/l3experimental/l3opacity.dtx
@@ -0,0 +1,140 @@
+% \iffalse meta-comment
+%
+%% File: l3opacity.dtx
+%
+% Copyright (C) 2021 The LaTeX Project
+%
+% It may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License (LPPL), either version 1.3c of this
+% license or (at your option) any later version. The latest version
+% of this license is in the file
+%
+% http://www.latex-project.org/lppl.txt
+%
+% This file is part of the "l3experimental bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver|package>
+\RequirePackage{expl3}
+%</driver|package>
+%<*driver>
+\documentclass[full]{l3doc}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% The \textsf{l3opacity} package\\ Experimental opacity (transparency) support^^A
+% }
+%
+% \author{^^A
+% The \LaTeX{} Project\thanks
+% {^^A
+% E-mail:
+% \href{mailto:latex-team@latex-project.org}
+% {latex-team@latex-project.org}^^A
+% }^^A
+% }
+%
+% \date{Released 2021-07-12}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \section{Selecting opacity}
+%
+% Opacity (transparency) shares many characteristics with color. However,
+% limitations in terms of backends mean that it is not always possible
+% to use a dedicated stack for tracking opacity. The best results when
+% breaking pages are therefore likely to result using direct PDF output
+% (\pdfTeX{}, \LuaTeX{}) or with recent versions of \texttt{(x)dvipdfmx}:
+% these backends do offer the necessary support.
+%
+% For users of PostScript-based routes, note that there are security
+% restrictions which can prevent opacity being available in output. In
+% particular, using Adobe Distiller, you will need to enable transparency
+% in the (text-based) configuration: this is not selectable from the GUI.
+%
+% \begin{function}[added = 2021-07-01]{\opacity_select:n}
+% \begin{syntax}
+% \cs{opacity_select:n} \Arg{expression}
+% \end{syntax}
+% Evaluates the \meta{expression}, which should yield a value in the range $[0,1]$.
+% This is then activated as an opacity for both filling and stroking.
+% \end{function}
+%
+% \begin{function}[added = 2021-07-01]{\opacity_fill:n, \opacity_stroke:n}
+% \begin{syntax}
+% \cs{opacity_fill:n} \Arg{expression}
+% \end{syntax}
+% Evaluates the \meta{expression}, which should yield a value in the range $[0,1]$.
+% This is then activated as an opacity for filling or stroking, respectively.
+% \end{function}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3opacity} Implementation}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=opacity>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ProvidesExplPackage{l3opacity}{2021-07-12}{}
+ {L3 Experimental opacity support}
+% \end{macrocode}
+%
+% \begin{macro}{\opacity_select:n, \opacity_fill:n, \opacity_stroke:n}
+% \begin{macro}{\@@_select:nN, \@@_select_aux:nN}
+% Thin wrapper with error checking.
+% \begin{macrocode}
+\cs_new_protected:Npn \opacity_select:n #1
+ { \@@_select:nN {#1} \@@_backend_select:n }
+\cs_new_protected:Npn \opacity_fill:n #1
+ { \@@_select:nN {#1} \@@_backend_fill:n }
+\cs_new_protected:Npn \opacity_stroke:n #1
+ { \@@_select:nN {#1} \@@_backend_stroke:n }
+\cs_new_protected:Npn \@@_select:nN #1#2
+ { \exp_args:Ne \@@_select_aux:nN { \fp_eval:n {#1} } #2 }
+\cs_new_protected:Npn \@@_select_aux:nN #1#2
+ {
+ \bool_lazy_or:nnTF
+ { \fp_compare_p:nNn {#1} < { 0 } }
+ { \fp_compare_p:nNn {#1} > { 1 } }
+ { \msg_error:nnn { opacity } { out-of-range } {#1} }
+ { #2 {#1} }
+ }
+\msg_new:nnnn { opacity } { out-of-range }
+ { Opacity~value~out~of~range. }
+ {
+ LaTeX~was~asked~to~set~opacity~of~#1,~but~only~values~in~the~range~
+ 0~to~1~are~supported.
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex
diff --git a/macros/latex/contrib/l3experimental/l3opacity.ins b/macros/latex/contrib/l3experimental/l3opacity.ins
new file mode 100644
index 0000000000..15d87c8f95
--- /dev/null
+++ b/macros/latex/contrib/l3experimental/l3opacity.ins
@@ -0,0 +1,58 @@
+\iffalse meta-comment
+
+File: l3opacity.ins
+
+Copyright (C) 2021 The LaTeX Project
+
+It may be distributed and/or modified under the conditions of the
+LaTeX Project Public License (LPPL), either version 1.3c of this
+license or (at your option) any later version. The latest version
+of this license is in the file
+
+ http://www.latex-project.org/lppl.txt
+
+This file is part of the "l3experimental bundle" (The Work in LPPL)
+and all files in that bundle must be distributed together.
+
+-----------------------------------------------------------------------
+
+The development version of the bundle can be found at
+
+ https://github.com/latex3/latex3
+
+for those people who are interested.
+
+-----------------------------------------------------------------------
+
+Any modification of this file should ensure that the copyright and
+license information is placed in the derived files.
+
+\fi
+
+\input docstrip %
+\askforoverwritefalse
+
+\preamble
+
+Copyright (C) 2021 The LaTeX Project
+
+It may be distributed and/or modified under the conditions of
+the LaTeX Project Public License (LPPL), either version 1.3c of
+this license or (at your option) any later version. The latest
+version of this license is in the file:
+
+ http://www.latex-project.org/lppl.txt
+
+This file is part of the "l3experimental bundle" (The Work in LPPL)
+and all files in that bundle must be distributed together.
+
+\endpreamble
+% stop docstrip adding \endinput
+\postamble
+\endpostamble
+
+\keepsilent
+
+\generate{\file{l3opacity.sty}{\from{l3opacity.dtx}{package}}}
+
+\endbatchfile
diff --git a/macros/latex/contrib/l3experimental/l3opacity.pdf b/macros/latex/contrib/l3experimental/l3opacity.pdf
new file mode 100644
index 0000000000..afde835c29
--- /dev/null
+++ b/macros/latex/contrib/l3experimental/l3opacity.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3str-format.dtx b/macros/latex/contrib/l3experimental/l3str-format.dtx
index 34ccffbb5b..669d198790 100644
--- a/macros/latex/contrib/l3experimental/l3str-format.dtx
+++ b/macros/latex/contrib/l3experimental/l3str-format.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
%
@@ -166,7 +166,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2021-05-27}{}
+\ProvidesExplPackage{l3str-format}{2021-07-12}{}
{L3 Experimental string formatting}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3str-format.pdf b/macros/latex/contrib/l3experimental/l3str-format.pdf
index 3e909d02f2..d070a93856 100644
--- a/macros/latex/contrib/l3experimental/l3str-format.pdf
+++ b/macros/latex/contrib/l3experimental/l3str-format.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.dtx b/macros/latex/contrib/l3experimental/l3sys-shell.dtx
index cf3e3f1405..56f5ccf610 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.dtx
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
%
@@ -151,7 +151,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3sys-shell}{2021-05-27}{}
+\ProvidesExplPackage{l3sys-shell}{2021-07-12}{}
{L3 Experimental system shell functions}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.pdf b/macros/latex/contrib/l3experimental/l3sys-shell.pdf
index d0cde462c2..f7db627adf 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.pdf
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/xcoffins.dtx b/macros/latex/contrib/l3experimental/xcoffins.dtx
index f8f10fc063..afd086567b 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.dtx
+++ b/macros/latex/contrib/l3experimental/xcoffins.dtx
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
%
@@ -672,7 +672,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2021-05-27}{}
+\ProvidesExplPackage{xcoffins}{2021-07-12}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/xcoffins.pdf b/macros/latex/contrib/l3experimental/xcoffins.pdf
index 8cd96a0ad1..4847b73a25 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.pdf
+++ b/macros/latex/contrib/l3experimental/xcoffins.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/xgalley.dtx b/macros/latex/contrib/l3experimental/xgalley.dtx
index f23d7c5f48..b75c45ee2d 100644
--- a/macros/latex/contrib/l3experimental/xgalley.dtx
+++ b/macros/latex/contrib/l3experimental/xgalley.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-05-27}
+% \date{Released 2021-07-12}
%
% \maketitle
%
@@ -731,7 +731,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2021-05-27}{}
+\ProvidesExplPackage{xgalley}{2021-07-12}{}
{L3 Experimental galley}
\RequirePackage{xtemplate,l3galley}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/xgalley.pdf b/macros/latex/contrib/l3experimental/xgalley.pdf
index 02a99f8eb8..52cb016046 100644
--- a/macros/latex/contrib/l3experimental/xgalley.pdf
+++ b/macros/latex/contrib/l3experimental/xgalley.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md
index ba547574c8..903d491f24 100644
--- a/macros/latex/contrib/l3kernel/CHANGELOG.md
+++ b/macros/latex/contrib/l3kernel/CHANGELOG.md
@@ -7,6 +7,14 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2021-07-12]
+
+### Fixed
+- Handling of multiple color models (issue #962)
+
+### Removed
+- Functions marked for removal end-2020
+
## [2021-06-18]
### Fixed
@@ -939,7 +947,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2021-06-18...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2021-07-12...HEAD
+[2021-07-12]: https://github.com/latex3/latex3/compare/2021-06-18...2021-07-12
[2021-06-18]: https://github.com/latex3/latex3/compare/2021-06-01...2021-06-18
[2021-06-01]: https://github.com/latex3/latex3/compare/2021-05-27...2021-06-01
[2021-05-27]: https://github.com/latex3/latex3/compare/2021-05-25...2021-05-27
diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md
index fb9ac4b35e..b674bc603f 100644
--- a/macros/latex/contrib/l3kernel/README.md
+++ b/macros/latex/contrib/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2021-06-18
+Release 2021-07-12
Overview
--------
diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx
index bf5d002f00..5bc448a208 100644
--- a/macros/latex/contrib/l3kernel/expl3.dtx
+++ b/macros/latex/contrib/l3kernel/expl3.dtx
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2021-06-18}%
+\def\ExplFileDate{2021-07-12}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf
index 2f6c765002..8f944b1fd2 100644
--- a/macros/latex/contrib/l3kernel/expl3.pdf
+++ b/macros/latex/contrib/l3kernel/expl3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf
index 4b8b052652..75613a8cb1 100644
--- a/macros/latex/contrib/l3kernel/interface3.pdf
+++ b/macros/latex/contrib/l3kernel/interface3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex
index 910481e48e..20d24e0d91 100644
--- a/macros/latex/contrib/l3kernel/interface3.tex
+++ b/macros/latex/contrib/l3kernel/interface3.tex
@@ -54,7 +54,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2021-06-18}
+\date{Released 2021-07-12}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx
index 6c1d3438dd..46401b132e 100644
--- a/macros/latex/contrib/l3kernel/l3basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
index aa17ea4fe9..8bfa4f1c20 100644
--- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx
index 348b4a4891..d0142d1aab 100644
--- a/macros/latex/contrib/l3kernel/l3box.dtx
+++ b/macros/latex/contrib/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx
index d086571aab..639d7e5a8e 100644
--- a/macros/latex/contrib/l3kernel/l3candidates.dtx
+++ b/macros/latex/contrib/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx
index c3fc4bf154..33b11e5060 100644
--- a/macros/latex/contrib/l3kernel/l3cctab.dtx
+++ b/macros/latex/contrib/l3kernel/l3cctab.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx
index 3634c4cfeb..84bf84e518 100644
--- a/macros/latex/contrib/l3kernel/l3clist.dtx
+++ b/macros/latex/contrib/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx
index df743b97c2..7be4e07ddb 100644
--- a/macros/latex/contrib/l3kernel/l3coffins.dtx
+++ b/macros/latex/contrib/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3color.dtx b/macros/latex/contrib/l3kernel/l3color.dtx
index a6b1b11262..3a8efd6ea3 100644
--- a/macros/latex/contrib/l3kernel/l3color.dtx
+++ b/macros/latex/contrib/l3kernel/l3color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
@@ -1339,7 +1339,7 @@
% \begin{macro}{\@@_set:nnn}
% \begin{macro}{\@@_set:nn}
% \begin{macro}{\@@_set:nnw}
-% \begin{macro}{\color_set:nnn}
+% \begin{macro}{\color_set:nnn, \@@_set_aux:nnn}
% \begin{macro}{\@@_set_colon:nnw}
% \begin{macro}{\@@_set_loop:nw}
% \begin{macro}{\color_set_eq:nn}
@@ -1403,16 +1403,21 @@
}
}
}
-\cs_new_protected:Npx \color_set:nnn #1#2#3
+\cs_new_protected:Npn \color_set:nnn #1#2#3
{
- \exp_not:N \str_if_eq:nnF {#1} { . }
+ \str_if_eq:nnF {#1} { . }
{
\tl_clear_new:c { l_@@_named_ #1 _tl }
\prop_clear_new:c { l_@@_named_ #1 _prop }
- \exp_not:N \@@_set_colon:nnw {#1} {#3}
- #2 \c_colon_str \c_colon_str \exp_not:N \s_@@_stop
+ \exp_args:Ne \@@_set_aux:nnn { \tl_to_str:n {#2} }
+ {#1} {#3}
}
}
+\cs_new_protected:Npx \@@_set_aux:nnn #1#2#3
+ {
+ \exp_not:N \@@_set_colon:nnw {#2} {#3}
+ #1 \c_colon_str \c_colon_str \exp_not:N \s_@@_stop
+ }
\use:x
{
\cs_new_protected:Npn \exp_not:N \@@_set_colon:nnw
diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx
index b8d89381d9..d654974767 100644
--- a/macros/latex/contrib/l3kernel/l3debug.dtx
+++ b/macros/latex/contrib/l3kernel/l3debug.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx
index 569153fb6a..276c4d08fd 100644
--- a/macros/latex/contrib/l3kernel/l3deprecation.dtx
+++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
@@ -617,49 +617,6 @@
\ProvidesExplFile{l3deprecation.def}{2019-04-06}{}{L3 Deprecated functions}
% \end{macrocode}
%
-% \subsection{Deprecated \pkg{l3box} functions}
-%
-% \begin{macro}[deprecated = 2021-07-01]
-% {
-% \box_set_eq_clear:NN, \box_set_eq_clear:cN,
-% \box_set_eq_clear:Nc, \box_set_eq_clear:cc
-% }
-% \begin{macro}[deprecated = 2021-07-01]
-% {
-% \box_gset_eq_clear:NN, \box_gset_eq_clear:cN,
-% \box_gset_eq_clear:Nc, \box_gset_eq_clear:cc
-% }
-% \begin{macrocode}
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \box_set_eq_drop:N }
-\cs_gset_protected:Npn \box_set_eq_clear:NN #1#2
- { \tex_setbox:D #1 \tex_box:D #2 }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \box_gset_eq_drop:N }
-\cs_gset_protected:Npn \box_gset_eq_clear:NN #1#2
- { \tex_global:D \tex_setbox:D #1 \tex_box:D #2 }
-\cs_generate_variant:Nn \box_set_eq_clear:NN { c , Nc , cc }
-\cs_generate_variant:Nn \box_gset_eq_clear:NN { c , Nc , cc }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}[deprecated = 2021-07-01]{\hbox_unpack_clear:N, \hbox_unpack_clear:c}
-% \begin{macrocode}
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \hbox_unpack_drop:N }
-\cs_gset_protected:Npn \hbox_unpack_clear:N
- { \hbox_unpack_drop:N }
-\cs_generate_variant:Nn \hbox_unpack_clear:N { c }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[deprecated = 2021-07-01]{\vbox_unpack_clear:N, \vbox_unpack_clear:c}
-% \begin{macrocode}
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \vbox_unpack_drop:N }
-\cs_gset_protected:Npn \vbox_unpack_clear:N
- { \vbox_unpack_drop:N }
-\cs_generate_variant:Nn \vbox_unpack_clear:N { c }
-% \end{macrocode}
-% \end{macro}
-%
% \subsection{Deprecated \pkg{l3str} functions}
%
% \begin{macrocode}
@@ -720,51 +677,6 @@
%<@@=tl>
% \end{macrocode}
%
-% \begin{macro}[deprecated = 2021-07-01]
-% {
-% \tl_set_from_file:Nnn, \tl_set_from_file:cnn,
-% \tl_gset_from_file:Nnn, \tl_gset_from_file:cnn,
-% \tl_set_from_file_x:Nnn, \tl_set_from_file_x:cnn,
-% \tl_gset_from_file_x:Nnn, \tl_gset_from_file_x:cnn
-% }
-% \begin{macrocode}
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \file_get:nnN }
-\cs_gset_protected:Npn \tl_set_from_file:Nnn #1#2#3
- { \file_get:nnN {#3} {#2} #1 }
-\cs_generate_variant:Nn \tl_set_from_file:Nnn { c }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \file_get:nnN }
-\cs_gset_protected:Npn \tl_gset_from_file:Nnn #1#2#3
- {
- \group_begin:
- \file_get:nnN {#3} {#2} \l_@@_internal_a_tl
- \tl_gset_eq:NN #1 \l_@@_internal_a_tl
- \group_end:
- }
-\cs_generate_variant:Nn \tl_gset_from_file:Nnn { c }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \file_get:nnN }
-\cs_gset_protected:Npn \tl_set_from_file_x:Nnn #1#2#3
- {
- \group_begin:
- \file_get:nnN {#3} {#2} \l_@@_internal_a_tl
- #2 \scan_stop:
- \__kernel_tl_set:Nx \l_@@_internal_a_tl { \l_@@_internal_a_tl }
- \exp_args:NNNo \group_end:
- \tl_set:Nn #1 \l_@@_internal_a_tl
- }
-\cs_generate_variant:Nn \tl_set_from_file_x:Nnn { c }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \file_get:nnN }
-\cs_gset_protected:Npn \tl_gset_from_file_x:Nnn #1#2#3
- {
- \group_begin:
- \file_get:nnN {#3} {#2} \l_@@_internal_a_tl
- #2 \scan_stop:
- \__kernel_tl_gset:Nx #1 { \l_@@_internal_a_tl }
- \group_end:
- }
-\cs_generate_variant:Nn \tl_gset_from_file_x:Nnn { c }
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}[deprecated = 2022-07-01]
% {
% \tl_lower_case:n, \tl_lower_case:nn,
@@ -795,22 +707,6 @@
%
% \subsection{Deprecated \pkg{l3token} functions}
%
-% \begin{macro}[EXP, deprecated = 2021-07-01]
-% {
-% \token_get_prefix_spec:N,
-% \token_get_arg_spec:N,
-% \token_get_replacement_spec:N
-% }
-% \begin{macrocode}
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \cs_prefix_spec:N }
-\cs_gset:Npn \token_get_prefix_spec:N { \cs_prefix_spec:N }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \cs_argument_spec:N }
-\cs_gset:Npn \token_get_arg_spec:N { \cs_argument_spec:N }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \cs_replacement_spec:N }
-\cs_gset:Npn \token_get_replacement_spec:N { \cs_replacement_spec:N }
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}[EXP, deprecated = 2022-07-01]
% {
% \char_lower_case:N, \char_upper_case:N,
@@ -838,15 +734,6 @@
% \end{macrocode}
% \end{macro}
%
-% \subsection{Deprecated \pkg{l3file} functions}
-%
-% \begin{macro}[EXP, deprecated = 2021-07-01]{\c_term_ior}
-% \begin{macrocode}
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { -1 }
-\cs_gset_protected:Npn \c_term_ior { -1 \scan_stop: }
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macrocode}
%</patches>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx
index 1a3dbbeb90..5f98e21825 100644
--- a/macros/latex/contrib/l3kernel/l3doc.dtx
+++ b/macros/latex/contrib/l3kernel/l3doc.dtx
@@ -79,7 +79,7 @@ and all files in that bundle must be distributed together.
%
% \title{The \cls{l3doc} class}
% \author{\Team}
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
% \maketitle
% \tableofcontents
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx
index 045e32f4cb..39aa374428 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.dtx
+++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf
index b6e64a7b3e..e1d85cc04d 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.pdf
+++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx
index 9b031db812..ab9c7df678 100644
--- a/macros/latex/contrib/l3kernel/l3expan.dtx
+++ b/macros/latex/contrib/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx
index 4962f58d17..2b85b49dfa 100644
--- a/macros/latex/contrib/l3kernel/l3file.dtx
+++ b/macros/latex/contrib/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx
index a9e02e1619..bcf1c5f645 100644
--- a/macros/latex/contrib/l3kernel/l3flag.dtx
+++ b/macros/latex/contrib/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
index 144308f9ef..59007556d5 100644
--- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
index 0e975f1dcb..679036fa86 100644
--- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
index 2bcfe264d9..35d2d50039 100644
--- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
index 9586c12f4f..64290bb1b2 100644
--- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
index a2bf913bb0..850bde051d 100644
--- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
index 06a7018065..ff64954a67 100644
--- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
index fe505475db..5e79cff9e9 100644
--- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
index 2300d319d3..e73eadf6d1 100644
--- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx
index 7dd2dfbc37..809ba5a8d9 100644
--- a/macros/latex/contrib/l3kernel/l3fp-random.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx
index 62bdc91e6f..dbbd3683ee 100644
--- a/macros/latex/contrib/l3kernel/l3fp-round.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
index c7a9296ba8..776955fb9c 100644
--- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
index 8bcea37b09..aa76dc356a 100644
--- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx
index 62e370d78f..202a784b10 100644
--- a/macros/latex/contrib/l3kernel/l3fp.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx
index 1f50538909..21a8fb490a 100644
--- a/macros/latex/contrib/l3kernel/l3fparray.dtx
+++ b/macros/latex/contrib/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx
index 3e1b6ae796..35871da7db 100644
--- a/macros/latex/contrib/l3kernel/l3int.dtx
+++ b/macros/latex/contrib/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx
index 7913bb33a3..87eafe5a0c 100644
--- a/macros/latex/contrib/l3kernel/l3intarray.dtx
+++ b/macros/latex/contrib/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
index ba5fb07e64..095718793f 100644
--- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx
index 911dca1c4a..af7ed2f1e5 100644
--- a/macros/latex/contrib/l3kernel/l3keys.dtx
+++ b/macros/latex/contrib/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx
index eec217d33e..adc82af2f9 100644
--- a/macros/latex/contrib/l3kernel/l3legacy.dtx
+++ b/macros/latex/contrib/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx
index d5f01e9703..37f55d4247 100644
--- a/macros/latex/contrib/l3kernel/l3luatex.dtx
+++ b/macros/latex/contrib/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx
index b2341a9034..d08550273e 100644
--- a/macros/latex/contrib/l3kernel/l3msg.dtx
+++ b/macros/latex/contrib/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx
index 0d306a533c..13904fbbaf 100644
--- a/macros/latex/contrib/l3kernel/l3names.dtx
+++ b/macros/latex/contrib/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf
index fb6b613b01..d22238c0dd 100644
--- a/macros/latex/contrib/l3kernel/l3news.pdf
+++ b/macros/latex/contrib/l3kernel/l3news.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf
index bc846306df..70073206a0 100644
--- a/macros/latex/contrib/l3kernel/l3news01.pdf
+++ b/macros/latex/contrib/l3kernel/l3news01.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf
index 0d20678a7d..64d37bc644 100644
--- a/macros/latex/contrib/l3kernel/l3news02.pdf
+++ b/macros/latex/contrib/l3kernel/l3news02.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf
index 43c14de35d..77b6bb2243 100644
--- a/macros/latex/contrib/l3kernel/l3news03.pdf
+++ b/macros/latex/contrib/l3kernel/l3news03.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf
index 4261a77e79..62cda66f24 100644
--- a/macros/latex/contrib/l3kernel/l3news04.pdf
+++ b/macros/latex/contrib/l3kernel/l3news04.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf
index 2f293cee60..85b9f321cd 100644
--- a/macros/latex/contrib/l3kernel/l3news05.pdf
+++ b/macros/latex/contrib/l3kernel/l3news05.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf
index 08b5622507..b08dc9a31a 100644
--- a/macros/latex/contrib/l3kernel/l3news06.pdf
+++ b/macros/latex/contrib/l3kernel/l3news06.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf
index 303ba407c1..e014af8e0f 100644
--- a/macros/latex/contrib/l3kernel/l3news07.pdf
+++ b/macros/latex/contrib/l3kernel/l3news07.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf
index a7dc4778e4..4aa1dbfe54 100644
--- a/macros/latex/contrib/l3kernel/l3news08.pdf
+++ b/macros/latex/contrib/l3kernel/l3news08.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf
index f247028b93..72c6f8c483 100644
--- a/macros/latex/contrib/l3kernel/l3news09.pdf
+++ b/macros/latex/contrib/l3kernel/l3news09.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf
index 3ba552665b..08f15c074e 100644
--- a/macros/latex/contrib/l3kernel/l3news10.pdf
+++ b/macros/latex/contrib/l3kernel/l3news10.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf
index e84613d4ca..333a1835d1 100644
--- a/macros/latex/contrib/l3kernel/l3news11.pdf
+++ b/macros/latex/contrib/l3kernel/l3news11.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf
index 85287d2fe1..2f7c4c8b94 100644
--- a/macros/latex/contrib/l3kernel/l3news12.pdf
+++ b/macros/latex/contrib/l3kernel/l3news12.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3pdf.dtx b/macros/latex/contrib/l3kernel/l3pdf.dtx
index f5bed9f426..e58d87f648 100644
--- a/macros/latex/contrib/l3kernel/l3pdf.dtx
+++ b/macros/latex/contrib/l3kernel/l3pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.csv b/macros/latex/contrib/l3kernel/l3prefixes.csv
index 9bf91296d0..3330c62273 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.csv
+++ b/macros/latex/contrib/l3kernel/l3prefixes.csv
@@ -141,6 +141,7 @@ namedef,namedef,Phelype Oleinik,https://github.com/PhelypeOleinik/namedef,https:
nan,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
nicematrix,nicematrix,François Pantigny,,,,2019-12-19,2019-12-19,
nil,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
+nmc,numerica,Andrew Parsloe,,,,2021-06-30,2021-06-30,
no,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
notestobib,notes2bib,Joseph Wright,https://github.com/josephwright/notes2bib,https://github.com/josephwright/notes2bib.git,https://github.com/josephwright/notes2bib/issues,2012-11-07,2012-11-07,
novalue,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf
index cf725f6a8e..03c390a8d6 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.pdf
+++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx
index a581d8c058..1053097c6f 100644
--- a/macros/latex/contrib/l3kernel/l3prg.dtx
+++ b/macros/latex/contrib/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx
index 15cd20f78b..5cdd55d178 100644
--- a/macros/latex/contrib/l3kernel/l3prop.dtx
+++ b/macros/latex/contrib/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx
index 50ec219874..40923da37b 100644
--- a/macros/latex/contrib/l3kernel/l3quark.dtx
+++ b/macros/latex/contrib/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx
index a26b1c0b2c..5005284d33 100644
--- a/macros/latex/contrib/l3kernel/l3regex.dtx
+++ b/macros/latex/contrib/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx
index 278dcc521e..a04c6dc27c 100644
--- a/macros/latex/contrib/l3kernel/l3seq.dtx
+++ b/macros/latex/contrib/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx
index d3b338f664..fdbd36427d 100644
--- a/macros/latex/contrib/l3kernel/l3skip.dtx
+++ b/macros/latex/contrib/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx
index 2c82f521aa..1cf74d0e40 100644
--- a/macros/latex/contrib/l3kernel/l3sort.dtx
+++ b/macros/latex/contrib/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx
index a49d2d7f11..904f84fc31 100644
--- a/macros/latex/contrib/l3kernel/l3str-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx
index 72bf49b062..ae1715761b 100644
--- a/macros/latex/contrib/l3kernel/l3str.dtx
+++ b/macros/latex/contrib/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf
index 91877e934c..b6697e9949 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.pdf
+++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex
index e81b8cd899..786296bd3a 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.tex
+++ b/macros/latex/contrib/l3kernel/l3styleguide.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2021-06-18}
+\date{Released 2021-07-12}
\begin{document}
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
index 90bc87c2aa..a1f156a8bd 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
index f1237177f6..7159309d36 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2021-06-18}
+\date{Released 2021-07-12}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index 3dc310fdca..1c1ad4b0d9 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
index 93dbdcb147..915031ea1a 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex
index b2b77851b9..5830f4e7c3 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.tex
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2021-06-18}
+\date{Released 2021-07-12}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx
index 691d6a8f06..64b7401e51 100644
--- a/macros/latex/contrib/l3kernel/l3text-case.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-case.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx
index b215f68953..35a5f67a31 100644
--- a/macros/latex/contrib/l3kernel/l3text-purify.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx
index c7ced6efbf..5f35a92972 100644
--- a/macros/latex/contrib/l3kernel/l3text.dtx
+++ b/macros/latex/contrib/l3kernel/l3text.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
index adf4218a35..1b79732fde 100644
--- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index fa2d4780ea..cbbb122adb 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx
index 86882d5944..173b866dfb 100644
--- a/macros/latex/contrib/l3kernel/l3token.dtx
+++ b/macros/latex/contrib/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx
index e185bc71a6..e439c55069 100644
--- a/macros/latex/contrib/l3kernel/l3unicode.dtx
+++ b/macros/latex/contrib/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-06-18}
+% \date{Released 2021-07-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf
index c57ab4d98b..447e74fb34 100644
--- a/macros/latex/contrib/l3kernel/source3.pdf
+++ b/macros/latex/contrib/l3kernel/source3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex
index f1364e89d0..ca9255d6e4 100644
--- a/macros/latex/contrib/l3kernel/source3.tex
+++ b/macros/latex/contrib/l3kernel/source3.tex
@@ -53,7 +53,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2021-06-18}
+\date{Released 2021-07-12}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/macrolist/README.md b/macros/latex/contrib/macrolist/README.md
new file mode 100644
index 0000000000..ee73093939
--- /dev/null
+++ b/macros/latex/contrib/macrolist/README.md
@@ -0,0 +1,37 @@
+# The LaTeX package macrolist - version 1.0.0 (2021/07/12)
+
+> Copyright (C) 2021 Dennis Chen <proofprogram@gmail.com>
+>
+> This file may be distributed and/or modified under
+> the conditions the LaTeX Project Public License (LPPL),
+> either version 1.3 of this license or (at your option)
+> any later version. The latest version of this license
+> can be found in
+> http://www.latex-project.org/lppl.txt
+> and version 1.3 or later is part of all distributions of LaTeX
+> version 2005/12/01 or later.
+
+`macrolist` provides lists and common list functions, such as `add`, `remove`, `foreach`, as well as `removelast` and `join`.
+
+## Package contents
+
+- `README.md` this file
+- `macrolist.pdf` documentation PDF with implementation details
+- `macrolist.dtx` contains package and documentation code
+- `macrolist.ins` generates .sty from .dtx
+
+## File generation
+
+A working TeX installation is required.
+
+Run
+
+ tex macrolist.ins
+
+to generate `macrolist.sty`. To use it, you need to put `macrolist.sty` into a directory searched by TeX.
+
+Run
+
+ pdflatex macrolist.dtx
+
+to generate `macrolist.pdf`, which contains the package documentation.
diff --git a/macros/latex/contrib/macrolist/macrolist.dtx b/macros/latex/contrib/macrolist/macrolist.dtx
new file mode 100644
index 0000000000..9c0ee6eb62
--- /dev/null
+++ b/macros/latex/contrib/macrolist/macrolist.dtx
@@ -0,0 +1,325 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2021 Dennis Chen <proofprogram@gmail.com>
+%
+% This file may be distributed and/or modified under
+% the conditions the LaTeX Project Public License (LPPL),
+% either version 1.3 of this license or (at your option)
+% any later version. The latest version of this license
+% can be found in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+% \fi
+%
+% \iffalse
+%<*package>
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{macrolist}[2021/07/09 v1.0.0 Create lists of macros and perform operations on them]
+
+\RequirePackage{pgffor}
+%</package>
+
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{macrolist}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{macrolist.dtx}
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+% \changes{v1.0.0}{2021/07/01}{Initial version}
+%
+% \GetFileInfo{macrolist.sty}
+%
+% \title{\textsf{macrolist} -- Create lists of macros and manipulate them}
+% \author{Dennis Chen \\ proofprogram@gmail.com}
+% \date{\fileversion, v. \filedate\thanks{\url{https://github/com/chennisden/macrolist}}}
+%
+% \maketitle
+%
+% \begin{abstract}
+% The \textsf{macrolist} package allows you to create lists and manipulate them, with utilities such as |\listforeach| and an implementation of arr.join() from Javascript. Contrary to the name of the package, non-macros and groups of macros can be put into an item of the list.
+% \end{abstract}
+%
+% \section{Usage}
+%
+% \DescribeMacro{\newlist}
+% To create a list, pass in |\newlist{listname}| to create a list with the name \textsf{listname}.
+%
+% The package checks that \textsf{listname} is not the name of another list, and will throw an error if another list \textsf{listname} has already been defined.
+%
+% \iffalse
+\newcommand{\newlist}[1]{
+ \ifcsname c@macrolist@list@#1\endcsname
+ \PackageError{macrolist}{The list '#1' is already defined}{}
+ \else
+ \newcounter{macrolist@list@#1}
+ \setcounter{macrolist@list@#1}{0}
+ \fi
+}
+% \fi
+%
+% \DescribeMacro{\listelement}
+%
+% To execute the \textsf{i}th element of \textsf{listname}, write |\listelement{listname}{i}|. Note that \textit{lists are 1-indexed}, meaning the first element is numbered 1, the second element numbered 2, and so on.
+%
+% An error will be thrown if \textsf{listname} is not a defined list, if \textsf{i} is empty, or if \textsf{i} is greater than the size of the list.
+%
+% \iffalse
+\newcommand{\listelement}[2]{%
+ \macrolist@inbounds{#1}{#2}%
+ \csname macrolist@list@#1\the\numexpr #2\relax\endcsname%
+}
+% \fi
+%
+% \DescribeMacro{\listadd}
+%
+% To add something to the list \textsf{listname}, pass in |\listadd{listname}[position]{element}|, where \textsf{position} is an optional argument. If nothing is passed in for \textsf{position}, then by default \textsf{element} will be added to the end of the list.
+%
+% \iffalse
+\newcommand{\listadd}[1]{
+ \macrolist@exists{#1}
+ \def\macrolist@currlist{#1}
+ \macrolist@listadd
+}
+%% We write \listadd this way such that the optional argument will be positioned correctly
+\newcommand{\macrolist@listadd}[2][]{
+ \stepcounter{macrolist@list@\macrolist@currlist}
+
+ \if\relax\detokenize{#1}\relax
+ \expandafter\def\csname macrolist@list@\macrolist@currlist\listsize{\macrolist@currlist}\endcsname{#2}
+ \else
+ \expandafter\ifnum\csname themacrolist@list@\macrolist@currlist\endcsname=#1
+ \expandafter\def\csname macrolist@list@\macrolist@currlist\listsize{\macrolist@currlist}\endcsname{#2}
+ \else
+ \macrolist@inbounds{\macrolist@currlist}{#1}
+ \foreach \macrolist@index in {\listsize{\macrolist@currlist}, ...,\the\numexpr #1+1\relax} {
+ \global\expandafter\let\csname macrolist@list@\macrolist@currlist\macrolist@index\expandafter\endcsname\csname macrolist@list@\macrolist@currlist\the\numexpr\macrolist@index-1\relax\endcsname
+ }
+ \expandafter\def\csname macrolist@list@\macrolist@currlist#1\endcsname{#2}
+ \fi
+ \fi
+}
+% \fi
+%
+% \DescribeMacro{\listremove}
+%
+% To remove an element in a list, write |\listremove{listname}{index}|.
+%
+% \iffalse
+\newcommand{\listremove}[2]{
+ \macrolist@inbounds{#1}{#2}
+
+ \ifnum\numexpr#2\relax=\listsize{#1}
+ \else
+ \foreach \macrolist@index in {#2, ..., \the\numexpr\listsize{#1}-1\relax} {
+ \global\expandafter\let\csname macrolist@list@#1\macrolist@index\expandafter\endcsname\csname macrolist@list@#1\the\numexpr\macrolist@index+1\endcsname
+ }
+ \fi
+
+ \expandafter\let\csname macrolist@list@#1\listsize{#1}\endcsname\relax
+ \addtocounter{macrolist@list@#1}{-1}
+}
+% \fi
+%
+% \DescribeMacro{\listremovelast}
+%
+% To remove the last element in a list, write |\listremovelast{listname}|. This behaves like C++'s |pop_back|.
+%
+% \iffalse
+\newcommand{\listremovelast}[1]{
+ \macrolist@exists{#1}
+ \expandafter\let\csname macrolist@list@#1\listsize{#1}\endcsname\relax
+ \addtocounter{macrolist@list@#1}{-1}
+}
+% \fi
+%
+% \DescribeMacro{\listclear}
+%
+% To clear a list, write |\listclear{listname}|.
+%
+% \iffalse
+\newcommand{\listclear}[2]{
+ \macrolist@inbounds{#1}{#2}
+
+ \foreach \macrolist@index in {1, ..., \listsize{#1}} {
+ \expandafter\let\csname \macrolist@list@#1\macrolist@index\endcsname\relax
+ }
+
+ \setcounter{macrolist@list@#1}{0}
+}
+% \fi
+%
+% \DescribeMacro{\listsize}
+%
+% To get the size of a list, write |\listsize{listname}|.
+%
+% \iffalse
+\newcommand*{\listsize}[1]{%
+ \macrolist@exists{#1}%
+ \csname themacrolist@list@#1\endcsname
+}
+% \fi
+%
+% \DescribeMacro{\listforeach}
+%
+% To write a for each loop, write
+% \begin{verbatim}
+%\begin{listforeach}{listname}{\element}[begin][end]{action}
+% \end{verbatim}
+%
+%
+% Note that begin and end are optional arguments, and by default, they take the values \textsf{1} and |\listsize{listname}|. If you pass in \textsf{begin}, you must also pass in \textsf{end}.
+%
+% \iffalse
+\newcommand{\listforeach}[2]
+{
+ \def\macrolist@foreachstart{0} % Reset
+ % This is used to make optional arguments line up correctly
+
+ \def\macrolist@start{1}
+ \def\macrolist@end{\listsize{#1}}
+ \def\macrolist@listname{#1}
+ \def\macrolist@element{#2}
+ \macrolist@listforeachi
+}
+
+\newcommand{\macrolist@listforeachi}[1][]{
+ \if\relax\detokenize{#1}\relax
+ \else
+ \def\macrolist@start{#1}
+ \def\macrolist@foreachstart{1}
+ \fi
+ \macrolist@listforeachii
+}
+
+\newcommand{\macrolist@listforeachii}[1][]{
+ \if\relax\detokenize{#1}\relax
+ \ifnum\macrolist@foreachstart=1
+ \PackageError{macrolist}{You must either pass in both a starting and ending position or neither}{}
+ \fi
+ \else
+ \def\macrolist@end{#1}
+ \fi
+ \macrolist@listforeachaction
+}
+
+\newcommand{\macrolist@listforeachaction}[1]{
+
+ \macrolist@exists{\macrolist@listname}
+
+ \ifnum\numexpr\macrolist@start\relax>\listsize{\macrolist@listname}%
+ \PackageError{macrolist}{The starting index of the loop is out of the bounds of list '\macrolist@listname'}{}
+ \fi
+
+ \ifnum\numexpr\macrolist@end\relax>\listsize{\macrolist@listname}
+ \PackageError{macrolist}{The ending index of the loop is out of the bounds of list '\macrolist@listname'}{}
+ \fi
+
+ \foreach \macrolist@index in {\the\numexpr\macrolist@start\relax, ..., \the\numexpr\macrolist@end\relax} {%
+ \expandafter\expandafter\expandafter\let\expandafter\expandafter\macrolist@element\csname macrolist@list@\macrolist@listname\macrolist@index\endcsname
+ #1%
+ }%
+}
+% \fi
+%
+% \DescribeMacro{\listjoin}
+%
+% Executing |\listjoin{listname}{joiner}| returns all of the elements separated by \textsf{joiner}. This behaves like Javascript's \textsf{arr.join()}.
+%
+% \iffalse
+\newcommand{\listjoin}[2]{%
+ \ifnum\listsize{#1}>1
+ \listforeach{#1}{\macrolist@joinelement}[1][\listsize{#1}-1]{\macrolist@joinelement#2}%
+ \fi
+ \ifnum\listsize{#1}>0
+ \listelement{#1}{\listsize{#1}}%
+ \fi
+}
+% \fi
+%
+% \section{Example}
+% Here is the source code for a small document using \textsf{macrolist}.
+%
+% \begin{verbatim}
+%\documentclass{article}
+%\usepackage{macrolist}
+%
+%\begin{document}
+%
+%\newlist{mylist}
+%\listadd{mylist}{Some text}
+%% List: Some text
+%
+%\newcommand\macro{This is a macro}
+%
+%\listadd{mylist}{\macro}
+%% List: Some text, \macro
+%
+%\listelement{mylist}{1}
+%% Prints out "Some text"
+%
+%\listadd{mylist}[1]{Element inserted into beginning}
+%% List: Element inserted into beginning, Some text, \macro
+%
+%\listremove{mylist}{1}
+%% List: Some text, \macro
+%
+%\listforeach{mylist}{\element}{We're printing out \textbf{\element}. }
+%% We're printing out \textbf{Some text}. We're printing out \textbf{\macro}.
+%
+%\listjoin{mylist}{, }
+%% Some text, \macro
+%
+%\end{document}
+% \end{verbatim}
+%
+% \section{Implementation details}
+%
+% All internal macros are namespaced to prevent package conflicts.
+%
+% \begin{macro}{\macrolist@exists}
+% One internal macro we use is |\macrolist@exists{listname}|, which checks that \textsf{listname} exists. It throws an error otherwise.
+%
+% \begin{macrocode}
+\newcommand*{\macrolist@exists}[1]{%
+ \ifcsname c@macrolist@list@#1\endcsname
+ \else
+ \PackageError{macrolist}
+ {The first argument is not a defined list}
+ {Make sure you have defined the list before trying to operate on it.}
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\macrolist@inbounds}
+% We use |\macrolist@inbounds{listname}{index}| to check that first, \textsf{listname} is a defined list using |\macrolist@exists|, and second, that \textsf{index} is within bounds. It throws an error otherwise.
+% \begin{macrocode}
+\newcommand*{\macrolist@inbounds}[2]{%
+ \macrolist@exists{#1}%
+ %
+ \if\relax\detokenize{#2}
+ \PackageError{macrolist}
+ {No number has been passed into the second argument of your command
+ }{Pass in a number to the second argument of your command.}
+ \fi
+ %
+ \ifnum\numexpr#2 \relax>\listsize{#1}
+ \PackageError{macrolist}
+ {Index out of bounds}
+ {The number you have passed in to the second argument of your command\MessageBreak
+ is out of the bounds of list '#1'.}
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/macrolist/macrolist.ins b/macros/latex/contrib/macrolist/macrolist.ins
new file mode 100644
index 0000000000..df2ac1265d
--- /dev/null
+++ b/macros/latex/contrib/macrolist/macrolist.ins
@@ -0,0 +1,45 @@
+%% Copyright (C) 2021 Dennis Chen <proofprogram@gmail.com>
+%%
+%% This work may be distributed and/or modified under
+%% the conditions the LaTeX Project Public License (LPPL),
+%% either version 1.3 of this license or (at your option)
+%% any later version. The latest version of this license
+%% can be found in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+
+\input docstrip.tex
+\keepsilent
+
+\usedir{tex/latex/macrolist}
+
+\preamble
+This work may be distributed and/or modified under
+the conditions the LaTeX Project Public License (LPPL),
+either version 1.3 of this license or (at your option)
+any later version. The latest version of this license
+can be found in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+\endpreamble
+
+\generate{\file{macrolist.sty}{\from{macrolist.dtx}{package}}}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* files into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* macrolist.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation, run the file *}
+\Msg{* macrolist.dtx through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile \ No newline at end of file
diff --git a/macros/latex/contrib/macrolist/macrolist.pdf b/macros/latex/contrib/macrolist/macrolist.pdf
new file mode 100644
index 0000000000..c3e16e2634
--- /dev/null
+++ b/macros/latex/contrib/macrolist/macrolist.pdf
Binary files differ
diff --git a/macros/latex/contrib/minimalist/minimalist-doc.pdf b/macros/latex/contrib/minimalist/minimalist-doc.pdf
index 3d851d2c4f..ad039de16c 100644
--- a/macros/latex/contrib/minimalist/minimalist-doc.pdf
+++ b/macros/latex/contrib/minimalist/minimalist-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/minimalist/minimalist-doc.tex b/macros/latex/contrib/minimalist/minimalist-doc.tex
index 92bf11fcd8..102ba87759 100644
--- a/macros/latex/contrib/minimalist/minimalist-doc.tex
+++ b/macros/latex/contrib/minimalist/minimalist-doc.tex
@@ -1,8 +1,7 @@
-%! TEX program = xelatex
-\documentclass[English,French,puretext]{minimart}
+\documentclass[English,Chinese,French,puretext]{minimart}
\CreateTheorem{definition}<highest>
-\CreateTheorem{theorem}<highest>
+\CreateTheorem{theorem}[definition]
\linenumbers % Enable line numbers
@@ -12,9 +11,14 @@
\usepackage{ProjLib}
\usepackage{longtable} % breakable tables
\usepackage{hologo} % more TeX logo
+\usetikzlibrary{calc}
+
+\usepackage{blindtext}
+
+\UseLanguage{English}
%%================================
-%% For typestting code
+%% For typesetting code
%%================================
\usepackage{listings}
\definecolor{maintheme}{RGB}{70,130,180}
@@ -33,19 +37,24 @@
escapeinside={(*}{*)},
% numbers=left,
numberstyle=\scriptsize, stepnumber=1, numbersep=5pt,
- firstnumber=last,
-}
+ % firstnumber=last,
+}
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
- {linenumbers,nolinenumbers,subsection,subsubsection,href,
+ {linenumbers,nolinenumbers,part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
color,NameTheorem,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,ProjLib,qedhere
}
}
-\lstnewenvironment{code}%
-{\LocallyStopLineNumbers%
+\lstnewenvironment{code}%
+{\setstretch{1.07}\LocallyStopLineNumbers%
\setkeys{lst}{columns=fullflexible,keepspaces=true}%
}
{\ResumeLineNumbers}
+\lstnewenvironment{code*}%
+{\setstretch{1.07}\LocallyStopLineNumbers%
+\setkeys{lst}{numbers=left,columns=fullflexible,keepspaces=true}%
+}
+{\ResumeLineNumbers}
%%================================
%% tip
@@ -79,72 +88,304 @@
\providecommand{\simplivre}{\textsf{simplivre}}
%%================================
+%% Titles
+%%================================
+\let\LevelOneTitle\section
+\let\LevelTwoTitle\subsection
+\let\LevelThreeTitle\subsubsection
+
+%%================================
%% Main text
%%================================
\begin{document}
\title{\minimalist{}, write your articles or books in a simple and clear way}
\author{Jinwen XU}
-\thanks{Corresponding to: \texttt{\minimalist{} 2021/07/05}}
+\thanks{Corresponding to: \texttt{\minimalist{} 2021/07/13}}
+\email{\href{mailto:ProjLib@outlook.com}{ProjLib@outlook.com}}
\date{July 2021, Beijing}
\maketitle
\begin{abstract}
- \minimalist{} is a series of styles and classes for you to typeset your articles or books in a simple and clear manner. My original intention in designing this series was to write drafts and notes that look simple yet not shabby.
-
- The entire collection includes \verb|minimalist.sty|, which is the main style shared by all of the following classes; \verb|minimart.cls| for typesetting articles and \verb|minimbook.cls| for typesetting books. They compile with any major \TeX{} engine, with native support to English, French, German, Italian, Portuguese (European and Brazilian) and Spanish typesetting via \lstinline|\UseLanguage| (see the instruction below for detail).
+ \minimalist{} is a series of styles and classes for you to typeset your articles or books in a simple and clear manner. The original intention in designing this series was to write drafts and notes that look simple yet not shabby. With the help of the \ProjLib{} toolkit, also developed by the author, the classes provided here have multi-language support, preset theorem-like environments with clever reference support, and many other functionalities. Notably, using these classes, one can organize the author information in the \AmS{} fashion, makes it easy to switch to journal classes later for publication.
- You can also found \einfart{} and \simplivre{} on CTAN. They are the enhanced version of \minimart{} and \minimbook{} with unicode support. With this, they can access to more beautiful fonts, and also have native support for Chinese, Japanese and Russian typesetting. On the other hand, they need to be compiled with \hologo{XeLaTeX} or \hologo{LuaLaTeX} (not pdf\LaTeX).
-
- This documentation is typeset using \minimart{}. You can think of it as a short introduction and demonstration.
+ Finally, this documentation is typeset using the \minimart{} class. You can think of it as a short introduction and demonstration.
\end{abstract}
+
+\setcounter{tocdepth}{2}
\tableofcontents
\medskip
-\begin{tip}
- Multi-language support, theorem-like environments, draft marks and some other features are provided by the \ProjLib{} toolkit. Here we only briefly discuss how to use it with this document class. For more detailed information, you can refer to the documentation of \ProjLib{}.
-\end{tip}
+\LevelOneTitle*{Before you start}
+\addcontentsline{toc}{section}{Before you start}
+In order to use the package or classes described here, you need to:
+\begin{itemize}
+ \item install TeX Live or MikTeX of the latest possible version, and make sure that \texttt{minimalist} and \texttt{projlib} are correctly installed in your \TeX{} system.
+ \item be familiar with the basic usage of \LaTeX{}, and knows how to compile your document with \hologo{pdfLaTeX}, \hologo{XeLaTeX} or \hologo{LuaLaTeX}.
+\end{itemize}
-\clearpage
-\section{Initialization}
+\LevelOneTitle{Introduction}
+
+\minimalist{} is a series of styles and classes for you to typeset your articles or books in a simple and clear manner. The original intention in designing this series was to write drafts and notes that look simple yet not shabby.
-\subsection{How to load it}
+The entire collection includes \verb|minimalist.sty|, which is the main style shared by all of the following classes; \verb|minimart.cls| for typesetting articles and \verb|minimbook.cls| for typesetting books. They compile with any major \TeX{} engine, with native support to English, French, German, Italian, Portuguese (European and Brazilian) and Spanish typesetting via \lstinline|\UseLanguage| (see the instruction below for detail).
+
+You can also found \einfart{} and \simplivre{} on CTAN. They are the enhanced version of \minimart{} and \minimbook{} with unicode support. With this, they can access to more beautiful fonts, and additionally have native support for Chinese, Japanese and Russian typesetting. On the other hand, they need to be compiled with \hologo{XeLaTeX} or \hologo{LuaLaTeX} (not \hologo{pdfLaTeX}).
+
+With the help of the \ProjLib{} toolkit, also developed by the author, the classes provided here have multi-language support, preset theorem-like environments with clever reference support, and many other functionalities such as draft marks, enhanced author information block, mathematical symbols and shortcuts, etc. Notably, using these classes, one can organize the author information in the \AmS{} fashion, makes it easy to switch to journal classes later for publication. For more detailed information, you can refer to the documentation of \ProjLib{} by running \lstinline|texdoc projlib| in the command line.
+
+\LevelOneTitle{Usage and examples}
+
+\LevelTwoTitle{How to load it}
You can directly use \minimart{} or \minimbook{} as your document class. In this way, you can directly begin writing your document, without having to worry about the configurations.
\begin{code}
\documentclass{minimart} (*{\normalfont or}*) \documentclass{minimbook}
\end{code}
-And of course, you can also use the default classes \textsf{article} or \textsf{book}, and load the \minimalist{} package. This way, only the basic styles are set, and you can thus use your preferred fonts and page layout. All the features mentioned in this article are provided.
+\begin{tip}
+ You may wish to use \einfart{} or \simplivre{} instead, which should produce better result. All the examples later using \minimart{} or \minimbook{} can be adopted to \einfart{} and \simplivre{} respectively, without further modification.
+\end{tip}
+
+You can also use the default classes \textsf{article} or \textsf{book}, and load the \minimalist{} package. This way, only the basic styles are set, and you can thus use your preferred fonts and page layout. All the features mentioned in this article are provided.
\begin{code}
+ \documentclass{article} (*{\normalfont or}*) \documentclass{book}
\usepackage{minimalist}
\end{code}
-\subsection{Options}
+\LevelTwoTitle{Example - \minimart}
+
+Let's first look at a complete example of \minimart{} (the same works for \einfart{}).
+
+\begin{code*}
+\documentclass{minimart}
+\usepackage{ProjLib}
+
+\UseLanguage{French}
+
+\begin{document}
+
+\title{(*\meta{title}*)}
+\author{(*\meta{author}*)}
+\date{\PLdate{2022-04-01}}
+
+\maketitle
+
+\begin{abstract}
+ Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
+\end{abstract}
+\begin{keyword}
+ AAA, BBB, CCC, DDD, EEE
+\end{keyword}
+
+\section{Un théorème}
+
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+Référence du théorème: \cref{thm:abc}
+
+\end{document}
+\end{code*}
+
+
+If you find this example a little complicated, don't worry. Let's now look at this example piece by piece.
+
+\LevelThreeTitle{Initialization}
+
+\medskip
+\begin{code}
+\documentclass{minimart}
+\usepackage{ProjLib}
+\end{code}
+
+Initialization is straightforward. The first line loads the document class \minimart{}, and the second line loads the \ProjLib{} toolkit to obtain some additional functionalities.
+
+\LevelThreeTitle{Set the language}
+
+\medskip
+\begin{code}
+\UseLanguage{French}
+\end{code}
+
+This line indicates that French will be used in the document (by the way, if only English appears in your article, then there is no need to set the language). You can also switch the language in the same way later in the middle of the text. Supported languages include Simplified Chinese, Traditional Chinese, Japanese, English, French, German, Spanish, Portuguese, Brazilian Portuguese and Russian%
+\footnote{The language Simplified Chinese, Traditional Chinese, Japanese and Russian requires Unicode support, thus the classes \einfart{} or \simplivre{}.}%
+.%
+
+For detailed description of this command and more related commands, please refer to the section on the multi-language support.
+
+\LevelThreeTitle{Title, author information, abstract and keywords}
+
+\medskip
+\begin{code}
+\title{(*\meta{title}*)}
+\author{(*\meta{author}*)}
+\date{\PLdate{2022-04-01}}
+\maketitle
+
+\begin{abstract}
+ (*\meta{abstract}*)
+\end{abstract}
+\begin{keyword}
+ (*\meta{keywords}*)
+\end{keyword}
+\end{code}
+
+This part begins with the title and author information block. The example shows the basic usage, but in fact, you can also write:
+
+\begin{code}
+\author{(*\meta{author 1}*)}
+\address{(*\meta{address 1}*)}
+\email{(*\meta{email 1}*)}
+\author{(*\meta{author 2}*)}
+\address{(*\meta{address 2}*)}
+\email{(*\meta{email 2}*)}
+...
+\end{code}
+
+In addition, you may also write in the \AmS{} fashion, i.e.:
+
+\begin{code}
+\title{(*\meta{title}*)}
+\author{(*\meta{author 1}*)}
+\address{(*\meta{address 1}*)}
+\email{(*\meta{email 1}*)}
+\author{(*\meta{author 2}*)}
+\address{(*\meta{address 2}*)}
+\email{(*\meta{email 2}*)}
+\date{\PLdate{2022-04-01}}
+\subjclass{*****}
+\keywords{(*\meta{keywords}*)}
+
+\begin{abstract}
+ (*\meta{abstract}*)
+\end{abstract}
+
+\maketitle
+\end{code}
+
+\LevelThreeTitle{Draft marks}
+
+\medskip
+\begin{code}
+\dnf<(*\meta{some hint}*)>
+\end{code}
+
+When you have some places that have not yet been finished yet, you can mark them with this command, which is especially useful during the draft stage.
+
+\LevelThreeTitle{Theorem-like environments}
+
+\medskip
+\begin{code}
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+Référence du théorème: \cref{thm:abc}
+\end{code}
+
+Commonly used theorem-like environments have been pre-defined. Also, when referencing a theorem-like environment, it is recommended to use \lstinline|\cref{|\meta{label}\texttt{\}} --- in this way, there is no need to explicitly write down the name of the corresponding environment every time.
+
+\begin{tip}
+If you wish to switch to the standard class later, just replace the first two lines with:
+
+\begin{code}
+\documentclass{article}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino,amsfashion]{ProjLib}
+\end{code}
+
+or to use the \AmS{} class:
+
+\begin{code}
+\documentclass{amsart}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{ProjLib}
+\end{code}
+
+\end{tip}
+
+\begin{tip}
+If you like the current document class, but want a more ``plain'' style, then you can use the option \texttt{classical}, like this:
+
+\begin{code}
+\documentclass[classical]{minimart}
+\end{code}
+\end{tip}
+
+\clearpage
+\LevelTwoTitle{Example - \minimbook}
+
+Now let's look at an example of \minimbook{} (the same works for \simplivre{}).
+
+\begin{code*}
+\documentclass{minimbook}
+\usepackage{ProjLib}
+
+\UseLanguage{French}
+
+\begin{document}
+
+\frontmatter
+
+\begin{titlepage}
+ (*\meta{code for titlepage}*)
+\end{titlepage}
+
+\tableofcontents
+
+\mainmatter
+
+\part{(*\meta{part title}*)}
+\parttext{(*\meta{text after part title}*)}
+
+\chapter{(*\meta{chapter title}*)}
+
+\section{(*\meta{section title}*)}
+
+...
+
+\backmatter
+
+...
-\minimalist{} offers the following options:
+\end{document}
+\end{code*}
+
+There is no much differences with \minimart{}, only that the title and author information should be typeset within the \texttt{titlepage} environment. Currently no default titlepage style is given, since the design of the title page is a highly personalized thing, and it is difficult to achieve a result that satisfies everyone.
+
+\bigskip
+In the next section, we will go through the options available.
+\clearpage
+
+
+\LevelOneTitle{The options}
+
+\minimalist{} offers the following options:
\begin{itemize}
\item The language options \texttt{EN} / \texttt{english} / \texttt{English}, \texttt{FR} / \texttt{french} / \texttt{French}, etc.
\begin{itemize}
\item For the option names of a specific language, please refer to \meta{language name} in the next section. The first specified language will be used as the default language.
+ \item The language options are optional, mainly for increasing the compilation speed. Without them the result would be the same, only slower.
\end{itemize}
\item \texttt{draft} or \texttt{fast}
\begin{itemize}
\item The option \verb|fast| enables a faster but slightly rougher style, main differences are:
\begin{itemize}
- \item Use simpler math font configuration;
- \item Do not use \textsf{hyperref};
+ \item Use simpler math font configuration;
+ \item Do not use \textsf{hyperref};
\item Enable the fast mode of \ProjLib{} toolkit.
\end{itemize}
\end{itemize}
- \begin{tip}
- During the draft stage, it is recommended to use the \verb|fast| option to speed up compilation. When in \verb|fast| mode, there will be a watermark ``DRAFT'' to indicate that you are currently in the draft mode.
- \end{tip}
+ \begin{tip}
+ During the draft stage, it is recommended to use the \verb|fast| option to speed up compilation. When in \verb|fast| mode, there will be a watermark ``DRAFT'' to indicate that you are currently in the draft mode.
+ \end{tip}
\item \texttt{allowbf}
\begin{itemize}
\item Allow boldface. When this option is enabled, the main title, the titles of all levels and the names of theorem-like environments will be bolded.
@@ -153,9 +394,9 @@ And of course, you can also use the default classes \textsf{article} or \textsf{
\begin{itemize}
\item Classic mode. When this option is enabled, the style will become more regular: paragraphs are indented, the use of underlines are reduced, heading styles are changed, and the theorem styles will be much closer to common styles.
\end{itemize}
- \begin{tip}
- \texttt{allowbf} + \texttt{classical} is probably a good choice if you prefer traditional style.
- \end{tip}
+ \begin{tip}
+ \texttt{allowbf} + \texttt{classical} is probably a good choice if you prefer traditional style.
+ \end{tip}
\item \texttt{runin}
\begin{itemize}
\item Use the ``runin'' style for \lstinline|\subsubsection|
@@ -170,8 +411,7 @@ And of course, you can also use the default classes \textsf{article} or \textsf{
\end{itemize}
\end{itemize}
-% \clearpage
-Additionally, \minimart{} and \minimbook{} offers the following options:
+Additionally, \minimart{} and \minimbook{} offers the following options:
\begin{itemize}
\item \texttt{a4paper} or \texttt{b5paper}
\begin{itemize}
@@ -179,7 +419,7 @@ Additionally, \minimart{} and \minimbook{} offers the following options:
\end{itemize}
\item \texttt{palatino}, \texttt{times}, \texttt{garamond}, \texttt{biolinum} ~$|$~ \texttt{useosf}
\begin{itemize}
- \item Font options. As the name suggest, font with corresponding name will be loaded.
+ \item Font options. As the name suggest, font with corresponding name will be loaded.
\item The \texttt{useosf} option is used to enable the old-style figures.
\end{itemize}
\item \texttt{useindent}
@@ -188,12 +428,10 @@ Additionally, \minimart{} and \minimbook{} offers the following options:
\end{itemize}
\end{itemize}
+\clearpage
+\LevelOneTitle{Instructions by topic}
-\section{Instructions}
-
-Many of the features described next are provided by the \ProjLib{} toolkit. Only the basic usage is mentioned here. For more details, please refer to its user documentation.
-
-\subsection{Language configuration}
+\LevelTwoTitle{Language configuration}
\minimart{} has multi-language support, including English, French, German, Italian, Portuguese (European and Brazilian) and Spanish. The language can be selected by the following macros:
@@ -231,12 +469,11 @@ In addition, you can also add new settings to selected language:
\end{itemize}
For example, \lstinline|\AddLanguageSetting(German){\color{orange}}| can make all German text displayed in orange (of course, one then need to add \lstinline|\AddLanguageSetting{\color{black}}| in order to correct the color of the text in other languages).
+\LevelTwoTitle{Theorems and how to reference them}
-\subsection{Theorems and how to reference them}
-
-Environments such as \texttt{definition} and \texttt{theorem} have been pre-defined and can be used directly.
+Environments such as \texttt{definition} and \texttt{theorem} have been preset and can be used directly.
-More specifically, preset environments include:
+More specifically, preset environments include:
\texttt{assumption}, \texttt{axiom}, \texttt{conjecture}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{definition-proposition}, \texttt{definition-theorem}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{notation}, \texttt{observation}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{remark}, \texttt{theorem}, and the corresponding unnumbered version with an asterisk \lstinline|*| in the name. The titles will change with the current language. For example, \texttt{theorem} will be displayed as ``Theorem" in English mode and ``Théorème" in French mode.
When referencing a theorem-like environment, it is recommended to use \lstinline|\cref{|\meta{label}\texttt{\}}. In this way, there is no need to explicitly write down the name of the corresponding environment every time.
@@ -265,8 +502,7 @@ By default, when referenced, the name of the theorem always matches the language
\UseLanguage{English}
-
-\subsection{Define a new theorem-like environment}
+\LevelTwoTitle{Define a new theorem-like environment}
If you need to define a new theorem-like environment, you must first define the name of the environment in the language to use:
\begin{itemize}
@@ -289,6 +525,7 @@ And then define this environment in one of following five ways:
\begin{itemize}
\item Define a numbered environment \meta{name of environment}, which shares the counter \meta{numbered like}
\end{itemize}
+\clearpage
\item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
\begin{itemize}
\item Define a numbered environment \meta{name of environment}, numbered within the counter \meta{numbered within}
@@ -309,7 +546,6 @@ And then define this environment in one of following five ways:
This macro utilizes the feature of \textsf{amsthm} internally, so the traditional \texttt{theoremstyle} is also applicable to it. One only needs declare the style before the relevant definitions.
\end{tip}
-% \def\proofideanameEN{Idea}
\NameTheorem[EN]{proofidea}{Idea}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>
@@ -323,31 +559,33 @@ Here is an example. The following code:
\CreateTheorem{proofidea}<subsection>
\end{code}
-defines an unnumbered environment \lstinline|proofidea*| and a numbered environment \lstinline|proofidea| (numbered within subsection) respectively. They can be used in English context.
+defines an unnumbered environment \lstinline|proofidea*| and a numbered environment \lstinline|proofidea| (numbered within subsection) respectively. They can be used in English context.
The effect is as follows:
+\vspace{-0.3\baselineskip}
\begin{proofidea*}
The \lstinline|proofidea*| environment.
\end{proofidea*}
+\vspace{-\baselineskip}
\begin{proofidea}
The \lstinline|proofidea| environment.
\end{proofidea}
-\clearpage
-\subsection{Draft mark}
+\LevelTwoTitle{Draft mark}
You can use \lstinline|\dnf| to mark the unfinished part. For example:
\begin{itemize}
\item \lstinline|\dnf| or \lstinline|\dnf<...>|. The effect is: \dnf~ or \dnf<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\dnf} in French mode.
\end{itemize}
-Similarly, there is \lstinline|\needgraph| :
+Similarly, there is \lstinline|\needgraph| :
\begin{itemize}
\item \lstinline|\needgraph| or \lstinline|\needgraph<...>|. The effect is: \needgraph or \needgraph<...>The prompt text changes according to the current language. For example, in French mode, it will be displayed as \UseOtherLanguage{French}{\needgraph}
\end{itemize}
-\subsection{On the title, abstract and keywords}
+\clearpage
+\LevelTwoTitle{Title, abstract and keywords}
\minimart{} has both the features of standard classes and that of the \AmS{} classes.
@@ -383,7 +621,6 @@ or written in the way of \AmS{} classes:
\maketitle
\end{code}
-\clearpage
The author information can contain multiple groups, written as:
\begin{code}
@@ -398,132 +635,34 @@ The author information can contain multiple groups, written as:
Among them, the mutual order of \lstinline|\address|, \lstinline|\curraddr|, \lstinline|\email| is not important.
+\clearpage
+\LevelTwoTitle{Miscellaneous}
-\subsection{On the line numbers}
+\LevelThreeTitle{On the line numbers}
Line numbers can be turned on and off at any time. \lstinline|\linenumbers| is used to enable the line numbers, and \lstinline|\nolinenumbers| is used to disable them. For the sake of beauty, the title, table of contents, index and some other elements are not numbered.
-\subsection{On the footnotes in the title}
+\LevelThreeTitle{On the footnotes in the title}
In \lstinline|\section| or \lstinline|\subsection| , if you wish to add footnotes, you can only:
\begin{itemize}
- \item first write \lstinline|\mbox{\protect\footnotemark}|,
- \item then add \lstinline|\footnotetext{...}| afterwards.
+ \item first write \lstinline|\mbox{\protect\footnotemark}|,
+ \item then add \lstinline|\footnotetext{...}| afterwards.
\end{itemize}
This is a disadvantage brought about by the underline decoration of the title.
-\subsection{On the QED symbols}
+\LevelThreeTitle{On the QED symbols}
Since the font in the theorem-like environments is the same as that of the main text, in order to indicate where the environments end, a hollow QED symbol \simpleqedsymbol{} is placed at the end of the theorem-like environments. However, if your theorem ends with an equation or list (itemize, enumerate, description, etc.), this symbol cannot be automatically placed in the correct position. In this case, you need to manually add a \lstinline|\qedhere| at the end of your equation or the last entry of your list to make the QED symbol appear at the end of the line.
-
-\section{Known issues}
+\LevelOneTitle{Known issues}
\begin{itemize}[itemsep=.6em]
\item The font settings are still not perfect.
- \item Since many features are based on the \ProjLib{} toolkit, \minimalist{} (and hence \minimart{} and \minimbook{}) inherits all its problems. For details, please refer to the ``Known Issues'' section of the \ProjLib{} documentation.
+ \item Since many features are based on the \ProjLib{} toolkit, \minimalist{} (and hence \minimart{}, \einfart{} and \minimbook{}, \simplivre{}) inherits all its problems. For details, please refer to the ``Known Issues'' section of the \ProjLib{} documentation.
\item The error handling mechanism is incomplete: there is no corresponding error prompt when some problems occur.
\item There are still many things that can be optimized in the code.
\end{itemize}
-\clearpage
-\section{Document templates}
-
-\subsection{The standard way}
-
-If you want to write in the standard way, you can refer to the following example:
-
-\begin{code}
-\documentclass{minimart}
-\usepackage{ProjLib} % Load ProjLib toolkit
-
-\UseLanguage{French} % Use French from here
-
-\begin{document}
-
-\title{Le Titre}
-\author{Auteur}
-\date{\PLdate{2022-04-01}}
-
-\maketitle
-
-\begin{abstract}
- Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
-\end{abstract}
-\begin{keyword}
- AAA, BBB, CCC, DDD, EEE
-\end{keyword}
-
-\section{Un théorème}
-
-%% Theorem-like environments can be used directly
-\begin{theorem}\label{thm:abc}
- Ceci est un théorème.
-\end{theorem}
-
-Référence du théorème: \cref{thm:abc}
- % It is recommended to use clever reference
-
-\end{document}
-\end{code}
-
-If you wish to switch to the standard class later, just replace the first two lines with:
-
-\begin{code}
-\documentclass{article}
-\usepackage[a4paper,margin=1in]{geometry}
-\usepackage[hidelinks]{hyperref}
-\usepackage[palatino]{ProjLib} % Load ProjLib toolkit
-\end{code}
-
-
-\clearpage
-\subsection{The \texorpdfstring{\AmS{}}{AMS} way}
-
-If you intend to switch to the journal template in the future and thus want to use the writing style as in the \AmS{} classes, you can refer to the following example:
-
-\begin{code}
-\documentclass{minimart}
-\usepackage{ProjLib} % Load ProjLib toolkit
-
-\UseLanguage{French} % Use French from here
-
-\begin{document}
-
-\title{Le Titre}
-\author{Auteur 1}
-\address{Adresse 1}
-\email{\href{Courriel 1}{Courriel 1}}
-\author{Auteur 1}
-\address{Adresse 1}
-\email{\href{Courriel 2}{Courriel 2}}
-\date{\PLdate{2022-04-01}}
-\subjclass{*****}
-\keywords{...}
-
-\begin{abstract}
- Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
-\end{abstract}
-
-\maketitle
-
-\section{Première section}
-
-%% Theorem-like environments can be used directly
-\begin{theorem}\label{thm:abc}
- Ceci est un théorème.
-\end{theorem}
-
-Référence du théorème: \cref{thm:abc}
- % It is recommended to use clever reference
-
-\end{document}
-\end{code}
-
-In this way, if you wish to switch to \AmS{} class later, just replace the first two lines with:
-
-\begin{code}
-\documentclass{amsart}
-\usepackage[a4paper,margin=1in]{geometry}
-\usepackage[hidelinks]{hyperref}
-\usepackage[palatino]{ProjLib} % Load ProjLib toolkit
-\end{code}
\end{document}
+\endinput
+%%
+%% End of file `minimalist/minimalist-doc.tex'.
diff --git a/macros/latex/contrib/minimalist/minimalist.sty b/macros/latex/contrib/minimalist/minimalist.sty
index 6b11172530..a50f03497d 100644
--- a/macros/latex/contrib/minimalist/minimalist.sty
+++ b/macros/latex/contrib/minimalist/minimalist.sty
@@ -17,7 +17,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesPackage{minimalist}
- [2021/07/05 A simple and clear style for articles and books]
+ [2021/07/13 A simple and clear style for articles and books]
\RequirePackage{kvoptions}
\RequirePackage{etoolbox}
\SetupKeyvalOptions{%
@@ -156,7 +156,7 @@
\renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}}
\fi
\renewcommand*{\sectionmark}[1]{%
- \markright{\sec@decochar~\thesection~\sec@decochar~~~#1}}
+ \markright{\sec@decochar~\arabic{section}~\sec@decochar~~~#1}}
}{
\if@twoside
\renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{}}
@@ -322,7 +322,6 @@
}
%% Section
-\renewcommand\thesection{\arabic{section}}
\if@minimalist@classical
\newcommand\sec@decochar{}
\titleformat{\section}
@@ -332,15 +331,16 @@
{#1}
[\ResumeLineNumbers]
\else
+\renewcommand\thesection{\arabic{section}}
\newcommand\seculine{\bgroup\markoverwith{\color{maintext!27!paper}%
\rule[-0.9ex]{2pt}{.6pt}\hspace{-2pt}\rule[-1.2ex]{2pt}{.6pt}}\ULon}
-\newcommand\sec@decochar{\raisebox{.03em}{\normalfont\footnotesize/}}
+\newcommand\sec@decochar{\raisebox{.03em}{\normalfont/}}
\titleformat{\section}
{\LocallyStopLineNumbers%
\secfont\centering}{}{0em}
- {{\small\textcolor{maintext!27!paper}{\sec@decochar}%
+ {{\small\textcolor{maintext!27!paper}{\footnotesize\sec@decochar}%
\,\,\textcolor{maintext!90!paper}{\conditionalbfseries\arabic{section}}%
- \,\,\textcolor{maintext!27!paper}{\sec@decochar}}\\
+ \,\,\textcolor{maintext!27!paper}{\footnotesize\sec@decochar}}\\
\seculine{#1}}
[\ResumeLineNumbers]
\titleformat{name=\section,numberless}
@@ -352,8 +352,6 @@
\fi
%% Subsection
-\renewcommand\thesubsection{%
- \ifnum\c@section=0\else\arabic{section}.\fi\arabic{subsection}}
\if@minimalist@classical
\titleformat{\subsection}
{\LocallyStopLineNumbers%
@@ -362,6 +360,8 @@
{#1}
[\ResumeLineNumbers]
\else
+\renewcommand\thesubsection{%
+ \ifnum\c@section=0\else\arabic{section}.\fi\arabic{subsection}}
\newcommand\subseculine{\bgroup\markoverwith{\color{maintext!27!paper}%
\rule[-1ex]{2pt}{.75pt}}\ULon}
\titleformat{\subsection}
@@ -404,7 +404,7 @@
\titlecontents{part}
[0em]
{\addvspace{1.5pc}\filcenter\normalfont}
- {\thecontentslabel\\\uppercase}
+ {\thecontentslabel\nopagebreak\\\nopagebreak\uppercase}
{}
{} % without page number
[\addvspace{.5pc}]
@@ -418,8 +418,8 @@
\titlecontents{section}
[4em] % i.e., 2em (chapter) + 2em
{\normalfont}
- {\contentslabel{1.75em}}
- {\hspace*{-1.75em}}
+ {\contentslabel[\textcolor{maintext!27!paper}{\small\sec@decochar}\,\textcolor{maintext!90!paper}{\thecontentslabel}\,\textcolor{maintext!27!paper}{\small\sec@decochar}]{2em}}
+ {\hspace*{-2em}}
{\titlerule*[1em]{\textcolor{maintext!15!paper}{.}}\contentspage}
\titlecontents{subsection}
[6.5em] % i.e., 4em (section) + 2.5em
diff --git a/macros/latex/contrib/minimalist/minimart.cls b/macros/latex/contrib/minimalist/minimart.cls
index 592cd146a2..6adab5ca9a 100644
--- a/macros/latex/contrib/minimalist/minimart.cls
+++ b/macros/latex/contrib/minimalist/minimart.cls
@@ -17,7 +17,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesClass{minimart}
- [2021/07/05 A simple and clear article style]
+ [2021/07/13 A simple and clear article style]
\def\minimclass@baseclass{article}
\RequirePackage{kvoptions}
\RequirePackage{etoolbox}
diff --git a/macros/latex/contrib/minimalist/minimbook.cls b/macros/latex/contrib/minimalist/minimbook.cls
index 7f5ed51750..e804b01376 100644
--- a/macros/latex/contrib/minimalist/minimbook.cls
+++ b/macros/latex/contrib/minimalist/minimbook.cls
@@ -17,7 +17,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesClass{minimbook}
- [2021/07/05 A simple and clear book style]
+ [2021/07/13 A simple and clear book style]
\def\minimclass@baseclass{book}
\RequirePackage{kvoptions}
\RequirePackage{etoolbox}
diff --git a/macros/latex/contrib/uantwerpendocs/beamerthemeuantwerpenuserguide.pdf b/macros/latex/contrib/uantwerpendocs/beamerthemeuantwerpenuserguide.pdf
index 486b53bab7..8ce9d974f9 100644
--- a/macros/latex/contrib/uantwerpendocs/beamerthemeuantwerpenuserguide.pdf
+++ b/macros/latex/contrib/uantwerpendocs/beamerthemeuantwerpenuserguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpenbamathesis-example.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpenbamathesis-example.pdf
index ef18520d43..884bb06bc7 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpenbamathesis-example.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpenbamathesis-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpencoursetext-example.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpencoursetext-example.pdf
index 0faf5cd26a..49bb7f20aa 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpencoursetext-example.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpencoursetext-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpendocs.dtx b/macros/latex/contrib/uantwerpendocs/uantwerpendocs.dtx
index 264e1a7307..6b6be0147a 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpendocs.dtx
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpendocs.dtx
@@ -24,19 +24,23 @@
%<*driver>
\ProvidesFile{uantwerpendocs.dtx}
%</driver>
-%<ct|bmt|mt|le|ex|bmr>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<@@=uantwerpendocs>
+%<ct|bmt|mt|pt|rp|le|ex|bmr>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<clo>\ProvidesFile{uantwerpencommonoptions.clo}
+%<cls>\ProvidesPackage{uantwerpencolorlogoscheme}
%<ct>\ProvidesClass{uantwerpencoursetext}
%<mt>\ProvidesClass{uantwerpenmasterthesis}
%<bmt>\ProvidesClass{uantwerpenbamathesis}
%<pt>\ProvidesClass{uantwerpenphdthesis}
+%<rp>\ProvidesClass{uantwerpenreport}
%<le>\ProvidesClass{uantwerpenletter}
%<ex>\ProvidesClass{uantwerpenexam}
%<bmr>\ProvidesPackage{beamerthemeuantwerpen}
-%<ct|bmt|mt|pt|le|ex|brm> [2021/03/23 v3.2 .dtx skeleton file]
+%<cls|ct|bmt|mt|pt|rp|le|ex|bmr> [2021/07/11 v4.0 .dtx skeleton file]
%
%<mt>\errmessage{This class is obsolete, use the uantwerpenbamathesis class instead !}
-\def\fileversion{3.2}
-\def\filedate{2021/03/23}
+\def\fileversion{4.0}
+\def\filedate{2021/07/11}
%<*driver>
\documentclass[a4paper]{ltxdoc}
\usepackage{makeidx}
@@ -106,9 +110,13 @@
% for TexLive distribution}
% \changes{v3.2}{2021/03/21}{\@ Small bugfixes (e.g., frame numbering
% instead of page numbering)}
+% \changes{v4.0}{2021/07/11}{\@ Last update of house style (phdthesis
+% coursetext and bamathesis), added uantwerpenreport class,
+% improvements based on use feedback
+% and major rework to benefit from expl3, removed all diploma codes
+% to ease maintainability}
%
-%
-% \DoNotIndex{\newcommand,\newenvironment,\begin,\bfseries,\draw,\clip,\else,\fi,\if,\fill,\filldraw,\ifthenelse,\ifx,\textwidth,\node,\\}
+% \DoNotIndex{\newcommand,\newenvironment,\begin,\bfseries,\draw,\clip,\else,\fi,\if,\fill,\filldraw,\ifthenelse,\ifx,\textwidth,\node,\\,\@empty,\@emptymacro,\@tempdima,\@tempdimb,\@tempswatrue,\{,\},\ ,\bf,\BODY,\break,\Alph,\and,\define@key,\color,\dx,\dy,\g,\gdef,\hbox,\tiny,\scriptsize,\footnotesize,\small,\normalsize,\large,\Large,\LARGE,\huge,\Huge,\l,\LaTeX,\let,\p@,\relax,\renewcommand,\Requirepackage,\textbf,\textsf,\texttt,\textbackslash,}
% \setlength{\parindent}{0em}
% \addtolength{\parskip}{0.5\baselineskip}
%
@@ -123,22 +131,12 @@
% \section{Introduction}
%
% This package implements the house style of Universiteit Antwerpen
-% (version 2021) for letters, course texts, master/PhD theses and
-% slides (beamer). It also implements a class to format exams (which
-% is for efficiency reasons and ease of copying not fully UAntwerpen
-% house style compliant).
+% (version 2021) for letters, course texts, master/PhD theses, reports and
+% slides (beamer). It also implements a class to format exams.
% Using these class files will make it easy for you to make and keep
% your course texts and theses compliant to this version and future
% versions of the UAntwerpen house style.
%
-% Unfortunately, this version is a transitional package, because the
-% house style renewal is introduced gradually. This means that the
-% letter class and slide theme have been renewed, while the course
-% texts and theses have not. Why are the latter not ready? Because
-% the house style makeover team has not yet come up with a
-% specification. This puts the message of the next paragraph against
-% the correct background.
-%
% If you think (1) there's an error in compliancy w.r.t. the house
% style, (2) there's a feature missing in this class or theme file, or
% (3) there's a bug in this package, please, contact me through e-mail
@@ -150,7 +148,7 @@
% or just kind words.
%
% \section{Synopsis}
-% The |coursetext|, |bamathesis| and |phdthesis|
+% The |coursetext|, |bamathesis| and |phdthesis|
% classes\footnote{For readability the class names have been
% abbreviated by omitting the |uantwerpen| prefix} are
% an extension of the standard \LaTeX{} |book| class. They are
@@ -159,14 +157,16 @@
% UAntwerpen house style, and they also typeset the rest of your
% document appropriately.
%
+% The |report| class is derived from the standard \LaTeX{}
+% |report| class. It is intended for writing generic (e.g. research or
+% educational) reports.
% The |letter| class is derived from the standard \LaTeX{}
% |letter| class. It is intended to be used for writing business
% letters. It is compliant to the house style and allows for using
% windowed envelopes of the DL format, with right-aligned window.
%
% The |exam| class is derived from the standard \LaTeX{}
-% |article| class and is for efficiency reasons not fully UAntwerpen
-% house style compliant.
+% |article| class.
%
% The slides come under the form of a custom beamer theme.
%
@@ -189,44 +189,69 @@
% Using this package, requires the following packages:
% \begin{itemize}
% \item the |adjustbox| package
-% \item the |atbegshi| package
-% \item the |auto-pst-pdf| package
% \item the |babel| package
% \item the |background| package
% \item the |color| package
% \item the |environ| package
% \item the |eso-pic| package
% \item the |etooblox| package
+% \item the |expl3| package
% \item the |fancyhdr| package
% \item the |geometry| package
% \item the |graphicx| package
-% \item the |hyperref| package
% \item the |iftex| package
% \item the |ifthen| package
-% \item the |pst-barcode| package
% \item the |tikz| package
% \item the |ulem| package
-% \end{itemize}
-% and optionally
-% \begin{itemize}
-% \item the |varioref| package.
+% \item the |xparse| package
% \end{itemize}
% So make sure these packages are available to your
% \LaTeX{} compiler.
%
+% You will notice that as of version 4.0 |expl3| and |xparse| are part
+% of the game. Indeed, the uantwerpendocs package will be slowly
+% refactored to \LaTeX3{} to prepare for a package that is easier to
+% maintain. However, the \LaTeX3{} constructs are never exposed to the
+% user of the classes. So: don't worry about it!
+%
+%
+% \section{A note on fonts}
+%
+% The house style of the University of Antwerp recommends using
+% \begin{itemize}
+% \item Prenton RP Pro for the logos and sublogos; all the logoware is
+% included in this package, so nothing to worry about.
+% \item ITC Officina Sans for posters, titlepages, cards a.s.o.\\
+% This font is not included in this package and is not a part of the
+% \LaTeX{} standard fonts. However, if you have a valid license, for
+% this font, I can help you to set it up, such that you can typeset
+% proper title pages for course texts, PhD theses and the like. Just
+% send me an e-mail.
+% \item Calibri for office-like documents. Just load the |\fontspec|
+% package and issue a |\setmainfont{Calibri}| and you're all set.
+% \end{itemize}
+%
+% Adhering to these fonts is recommended, but not
+% enforced. Personally, I always use a Palatine serif font for my courses.
+% I did not find any better (free) font yet. My second favorite is
+% still the original computer modern font by Donald E. Knuth. You are
+% reading it right now.
+%
+%
% \section{Portability}
-% This class file should be ready to use with all common \LaTeX{}
-% compilers (PDF\LaTeX{}, \LaTeX{}, \XeLaTeX{}, \LuaLaTeX{}, \ldots)
-% from the major \TeX{}-distributions (TeTeX, TexLive, MikTeX). If you
-% experience problems, please inform the author.
+% These class files should be ready to use with all common modern \LaTeX{}
+% compilers (PDF\LaTeX{}, \XeLaTeX{}, \LuaLaTeX{}, \ldots)
+% from the major \TeX{}-distributions (TeTeX, TexLive, MikTeX).
+% However, using an old \LaTeX{} + dvips setup is likely to get you into font
+% problems. Advice: ditch the route via dvi. If you experience other
+% problems, please inform the author.
%
% \section{Usage}
%
% \subsection{Basic Usage}
% \label{sec:basicusage}
% Use the templates provided below. Remember to \LaTeX{} your source
-% file twice in order to have the title and final page correctly
-% aligned.
+% file twice.
%
% Especially in the beamer theme some features require to run \LaTeX{}
% twice in order to get the position of some elements correct.
@@ -234,12 +259,10 @@
% \subsubsection{\texttt{uantwerpencoursetext} class}
% Use the following harness for your \LaTeX{} course text:
% \begin{verbatim}
-% \documentclass[a4paper]{uantwerpencoursetext}
+% \documentclass[ti,a4paper]{uantwerpencoursetext}
%
% \usepackage{<include any packages you require here>}
%
-% \facultyacronym{<put your faculty's acronym here}
-%
% \title{<put your title here>}
% \subtitle{<put your subtitle here>}
% \author{<put your name here>}
@@ -248,8 +271,8 @@
% \versionyear{<the publication date of the course here>}
%
% \lecturer{<person teaching the course>}
-% \programme{<descriptor of first programme>}
-% \course{<course code>}{<name of the course>}%
+% \degree{<official degree title>}
+% \course{<course code>}{<name of the course>}
%
% \academicyear{<XXXX-YYYY>}
%
@@ -264,25 +287,31 @@
% \end{document}
% \end{verbatim}
%
-% The available faculty acronyms are listed in a table on page
-% \pageref{acronyms}.
+% As of version 4.0:
+% \begin{itemize}
+% \item the faculty is specified as an option to the |\documentclass|
+% construct. You can find the available options in
+% section~\ref{sec:classopt}.
+% \item you are reponsible yourself to provide the correct
+% degree description! Maintaining the a correct list of UAntwerpen
+% bachelor and master programs with all their specializations is
+% beyond my ambition.
+% \end{itemize}
%
% \subsubsection{\texttt{uantwerpenbamathesis} class}
% Use the following harness for your \LaTeX{} bachelor or master's
% thesis:
% \begin{verbatim}
-% \documentclass[a4paper]{uantwerpenbamathesis}
+% \documentclass[ti,a4paper]{uantwerpenbamathesis}
%
% \usepackage{<include any packages you require here>}
%
-% \facultyacronym{<put your faculty's acronym here>}
-%
% \title{<put your title here>}
% \author{<put your name here>}
-% \supervisori{<put supervisor's name(s) here>}{<affiliation goes here>}
-% \supervisorii{<put supervisor's name(s) here>}{<affiliation goes here>}
-% \supervisoriii{<put supervisor's name(s) here>}{<affiliation goes here>}
-% \supervisoriv{<put supervisor's name(s) here>}{<affiliation goes here>}
+% \supervisor{<put supervisor's name(s) here>}{<affiliation goes here>}
+% \supervisor{<put supervisor's name(s) here>}{<affiliation goes here>}
+% \supervisor{<put supervisor's name(s) here>}{<affiliation goes here>}
+% \supervisor{<put supervisor's name(s) here>}{<affiliation goes here>}
%
% % classmarker
% \academicyear{<XXXX-YYYY>}
@@ -298,13 +327,13 @@
% \end{document}
% \end{verbatim}
%
-% The available faculty acronyms are listed in a table on page
-% \pageref{acronyms}.
+% The available faculty options are listed in a table on page
+% \pageref{sec:classopt}.
%
% \subsubsection{\texttt{uantwerpenletter} class}
% Use the following harness for your \LaTeX{} letter:
% \begin{verbatim}
-% \documentclass[a4paper]{uantwerpenletter}
+% \documentclass[a4paper,ti]{uantwerpenletter}
%
% % setup fonts according to your specific TeX compiler setup
%
@@ -313,7 +342,6 @@
% % \logo{} only specify if you want to use your unit's logo
%
% \sender{<put your name here>}{<put your title/role here>}
-% \facultyacronym{<put your faculty's acronym here>}
% \unit{<put your unit here>}
% \address{<put your multi-line address here>}
% \email{<user name>}{<domain name>}
@@ -345,37 +373,33 @@
% \end{document}
% \end{verbatim}
%
-% The available faculty acronyms are listed in a table on page
-% \pageref{acronyms}. You may use lists in the |\carboncopy| and
+% The available faculty options are listed in a table on page
+% \pageref{sec:classopt}. You may use lists in the |\carboncopy| and
% |\enclosed| commands. The spacing will be compact.
%
% \subsubsection{\texttt{uantwerpenphdthesis} class}
%
% \begin{verbatim}
-% \documentclass[b5paper,10pt,twoside,openright,filled]{uantwerpenphdthesis}
+% \documentclass[ti,10pt,twoside,openright,filled]{uantwerpenphdthesis}
%
% You may want to use common fonts
% \usepackage{<include any additional packages you require here>}
%
% \title{<put your title here>}
% \author{<put your name here>}
-% \facultyacronym{<put your faculty's acronym here>}
-% \programme{PHD}
-% {<put your programme's acronym here>}
-% {<put your specialization's acronym here>}
% \affiliation{<put your affiliation here>}
% \address{<put your contact details here>}
%
-% \supervisori{<put supervisor's name here>}{<affiliation goes here>}
-% \supervisorii{<put supervisor's name here>}{<affiliation goes here>}
+% \supervisor{<put supervisor's name here>}{<affiliation goes here>}
+% \supervisor{<put supervisor's name here>}{<affiliation goes here>}
%
% \jurychairman{<put chairman's name here>}{<affiliation goes here>}
%
-% \jurymemberi{<put member's name here>}{<affiliation goes here>}
-% \jurymemberii{<put member's name here>}{<affiliation goes here>}
-% \jurymemberiii{<put member's name here>}{<affiliation goes here>}
+% \jurymember{<put member's name here>}{<affiliation goes here>}
+% \jurymember{<put member's name here>}{<affiliation goes here>}
+% \jurymember{<put member's name here>}{<affiliation goes here>}
%
-% \phddegree{<put official degree name here>}
+% \degree{<put official degree name here>}
% \defenselocation{<put location of defense here>}
% \defensedate{<put defense year here>}
% \titlepageimage{<set file name of title page image here>}
@@ -401,6 +425,45 @@
% \end{document}
% \end{verbatim}
%
+% The available faculty options are listed in a table on page
+% \pageref{sec:classopt}.
+%
+% \subsubsection{\texttt{uantwerpenreport} class}
+%
+% \begin{verbatim}
+% \documentclass[ti,10pt,twoside,openright,filled]{uantwerpenreport}
+%
+% You may want to use common fonts
+% \usepackage{<include any additional packages you require here>}
+%
+% \title{<put your title here>}
+% \author{<put your name here>}
+% \affiliation{<put your affiliation here>}
+% \address{<put your contact details here>}
+%
+% \titlepageimage{<set file name of title page image here>}
+%
+% \begin{document}
+%
+% \maketitle
+% \frontmatter
+% \tableofcontents
+% \mainmatter
+%
+% % write your PhD text here
+%
+% \appendix
+%
+% % write appendix material here
+%
+% \makefinalpage
+%
+% \end{document}
+% \end{verbatim}
+%
+% The available faculty options are listed in a table on page
+% \pageref{sec:classopt}.
+%
% \subsubsection{\texttt{uantwerpenbeamer} theme}
%
%
@@ -434,12 +497,46 @@
% \end{verbatim}
%
% \subsection{The class options explained}
-%
+% \label{sec:classopt}
% The classes have several options. They are listed below.
% After every option, it has been indicated to which class the option
% applies (between square brackets, without prefix uantwerpen).
% \changes{v1.1}{2013/05/28}{Added option user documentation}
%
+% \DescribeMacro{xx(x)} [letter / coursetext / bamathesis / phdthesis
+% / report / beamertheme]\\
+% \begin{center}\small
+% \begin{tabular}{cp{10cm}}
+% \toprule
+% Option & Faculty \\
+% \midrule
+% |be| & Faculty of Business and Economics\\
+% & Faculteit Bedrijfswetenschappen en Economie\\
+% |fbd| & Faculty of Pharmaceutical, Biomedical and Veterinary Sciences\\
+% & Faculteit Farmaceutische, Biomedische en Diergeneeskundige
+% Wetenschappen\\
+% |ggw| & Faculty of Medicine and Health Sciences\\
+% & Faculteit Geneeskunde en Gezondheidswetenschappen\\
+% |lw| & Faculty of Arts \\
+% & Faculteit Letteren en Wijsbegeerte\\
+% |ow| & Faculty of Design Sciences\\
+% & Faculteit Ontwerpwetenschappen\\
+% |re| & Faculty of Law\\
+% & Faculteit Rechten\\
+% |sw| & Faculty of Social Sciences\\
+% & Faculteit Sociale Wetenschappen\\
+% |ti| & Faculty of Applied Engineering\\
+% & Faculteit Toegepaste Ingenieurswetenschappen\\
+% |we| & Faculty of Science\\
+% & Faculteit Wetenschappen\\
+% |iob| & Institute of Development Policy\\
+% & Instituut voor Ontwikkelingsbeleid- en beheer\\
+% \bottomrule
+% \end{tabular}
+% \end{center}
+% You can specify the correct faculty using the following options:
+% This will activate the correct color scheme and logoset.
+%
% \DescribeMacro{copyright} [coursetext]\\
% This option forces printing a watermark on every page. For the
% paper version of your document, this is inappropriate, but for any
@@ -452,7 +549,7 @@
% that copy to students and suppressing the fillout pages.
%
% \DescribeMacro{filled} [letter / coursetext /
-% bamathesis / phdthesis]\\
+% bamathesis / phdthesis / report]\\
% This option causes the text to be filled (simultaneous left and
% right alignment). Though this setting is not recommended, it is
% provided because the default |\raggedright| cannot be undone. The
@@ -460,98 +557,24 @@
% issued. However, if you care about the typographic readability of
% your text, you shouldn't use this option.
%
-% \DescribeMacro{titlepagenoartwork} [coursetext /
-% bamathesis / phdthesis]\\
-% This option forces the title pages to be typeset without circle graphics and
-% logo. This allows for printing on a pre-printed color sheet that
-% already contains circle graphics and logo;
-%
-% \DescribeMacro{titlepagetableonly} [coursetext /
-% bamathesis / phdthesis]\\
-% This option forces the title-page data to be printed in table form
-% as first page. Some publishers require the manuscript to be
-% delivered in this form. They perform the entire typesetting of the
-% title page.
-%
-% \DescribeMacro{qr} [coursetext]\\
-% This option allows you to generate a QR code containing the details of
-% the course on the title page or the table-only title page. For
-% this option to work, the package pstricks is loaded. It will not
-% work with pdf\LaTeX{} unless you enable shell escape. Read your
-% pdf\LaTeX{}-package documentation on how to do that.
-%
% Common sets of options depend on the purpose:
% \begin{itemize}
% \item to make a text ready for electronic distribution:
% |a4paper|, |copyright|.
-% \item to make a camera-ready text (for printing) in case
-% the cover is printed on a pre-printed color artwork cover sheet is:
-% |a4paper|, |qr|, |titlepagenoartwork|.
-% \item to make a camera-ready text (for printing) in case the cover
-% is typeset based on table data:
-% |a4paper|, |qr|, |titlepagetableonly|.
+% \item to make a camera-ready text (for printing):
+% |a4paper|
% \item to make a letter:
% no options (filling a letter is discouraged)
% \item to make an exam:
% no options (filling an exam is discouraged)
% \item to make a PhD text:
-% |b5paper|, |twoside|, |openright| and |filled|
+% |twoside|, |openright| and (optionally) |filled|
+% \item to make a report:
+% |twoside|, |openright| and (optionally) |filled|
% \end{itemize}
%
% \subsection{The macros explained}
%
-% \subsubsection{Common macros}
-%
-% After every macro, it has been indicated to which class the macro
-% applies (between square brackets), and whether it is mandatory or not.
-%
-% \DescribeMacro{\facultyacronym} [coursetext /
-% bamathesis / phdthesis / exam] (mandatory)\\
-% \label{md-facultyacronym}
-% This macro sets the acronym of the faculty.
-% This macro also sets the faculty name according to the specified
-% acronym.
-% If you're missing a faculty or institute, please ask the
-% author to complete the list.
-%
-% The available acronyms are:
-% \changes{v1.9}{2018/03/02}{Added ASoE (Antwerp School of Education)}
-% \changes{v3.0}{2021/02/05}{Changed REC in RE, TEW in BE and WET in WE
-% (according to official naming scheme)}
-% \label{acronyms}
-% \begin{center}
-% \begin{tabular}{cl}
-% \toprule
-% Acronym & Faculty name \\
-% \midrule
-% ASoE
-% & Antwerp School of Education\\
-% CPG
-% & Centrum Pieter Gillis\\
-% FBD
-% & Faculteit Farmaceutische, Biomedische en Diergeneeskundige Wetenschappen\\
-% GGW
-% & Faculteit Geneeskunde en Gezondheidswetenschappen\\
-% IOB
-% & Instituut voor Ontwikkelingsbeleid- en beheer\\
-% LW
-% & Faculteit Letteren en Wijsbegeerte\\
-% OW
-% & Faculteit Ontwerpwetenschappen\\
-% SW
-% & Faculteit Sociale Wetenschappen\\
-% RE
-% & Faculteit Rechten\\
-% BE
-% & Faculteit Bedrijfswetenschappen en Economie\\
-% TI
-% & Faculteit Toegepaste Ingenieurswetenschappen\\
-% WE
-% & Faculteit Wetenschappen\\
-% \bottomrule
-% \end{tabular}
-% \end{center}
-%
% \subsubsection{Macros for the coursetext, bamathesis, phdthesis
% classes}
%
@@ -560,12 +583,14 @@
% Use this macro to specify the academic year in full, i.e. in the
% form |XXXX-YYYY|.
%
-% \DescribeMacro{\author} [coursetext / bamathesis / phdthesis ] (mandatory)\\
+% \DescribeMacro{\author} [coursetext / bamathesis / phdthesis /
+% report ] (mandatory)\\
% This macro sets the author of the document.
-% It also sets the |pdfauthor| tag of the hyperref package, so that
+% It also sets the |pdfauthor| tag of the hyperref package (if it is
+% loaded), so that
% the PDF-document meta-information is correct.
%
-% \DescribeMacro{\copyrightnotices} [coursetext]
+% \DescribeMacro{\copyrightnotices} [coursetext / report]
% (optional)\\
% Use this macro to specify additional copyright notice messages to
% appear in the copyright notice on the bottom of page 2 of your
@@ -597,15 +622,6 @@
% An example of such a code: 1001FTIWIS, for the first-semester
% mathematics course of the Faculty of Applied Engineering.
%
-% For courses of the Faculty of Applied Engineering, the name should
-% be of the form |x-YYYYYYYY| with |x| the number of the
-% semester and |YYYYYYYY| the official name of the course.
-%
-% In case the course's name contains accented characters, one should
-% also provide a qr version, containing utf8-characters only.
-% The macro for this purpose takes only one argument, i.e. the
-% course's name! This is to avoid inconsistencies in the course codes.
-%
% \DescribeMacro{\courseversion} [coursetext] (optional)\\
% This macro indicates which version of the course this is.
%
@@ -623,121 +639,41 @@
% \changes{v1.6}{2016/02/04}{Added diploma code documentation}
% \changes{v2.0}{2018/05/16}{Updated diploma code documentation to
% incorporate PhD degrees}
-% \changes{v2.3}{2019/03/27}{Introduced bachelor level codes to allow for bachelor theses}
-% \DescribeMacro{\diploma} [bamathesis] (mandatory)\\
-% This must be the official title, in Dutch. To avoid errors, we chose
-% to use specific codes, that will expand to the correct description.
-% These codes are specific for the Faculty of Applied Engineering. If
-% you want the author of the package to add codes for your faculty,
-% just ask!
-% \begin{center}
-% \begin{tabular}{lp{10cm}}
-% \toprule
-% Code & Description (in Dutch!) \\
-% \midrule
-% \multicolumn{2}{c}{Faculteit Toegepaste
-% Ingenieurswetenschappen}\\
-% \midrule
-% \midrule
-% |BA-IW-BK|
-% & Bachelor of Science in de industri\"ele wetenschappen: bouwkunde\\
-% |BA-IW-BCH|
-% & Bachelor of Science in de industri\"ele wetenschappen: biochemie\\
-% |BA-IW-CH|
-% & Bachelor of Science in de industri\"ele wetenschappen: chemie\\
-% |BA-IW-EI|
-% & Bachelor of Science in de industri\"ele wetenschappen: elektronica-ICT\\
-% |BA-IW-EM|
-% & Bachelor of Science in de industri\"ele wetenschappen: elektromechanica\\
-% |MA-IW-BK|
-% & Master of Science in de industri\"ele wetenschappen: bouwkunde\\
-% |MA-IW-BCH|
-% & Master of Science in de industri\"ele wetenschappen: biochemie\\
-% |MA-IW-CH|
-% & Master of Science in de industri\"ele wetenschappen: chemie\\
-% |MA-IW-EI|
-% & Master of Science in de industri\"ele wetenschappen: elektronica-ICT\\
-% |MA-IW-EI-AE|
-% & Master of Science in de industri\"ele wetenschappen: elektronica-ICT,
-% afstudeerrichting, Automotive Engineering\\
-% |MA-IW-EI-ICT|
-% & Master of Science in de industri\"ele wetenschappen: elektronica-ICT,
-% afstudeerrichting ICT\\
-% |MA-IW-EM|
-% & Master of Science in de industri\"ele wetenschappen: elektromechanica\\
-% |MA-IW-EM-AE|
-% & Master of Science in de industri\"ele wetenschappen: elektromechanica,
-% afstudeerrichting Automotive Engineering\\
-% |MA-IW-EM-AU|
-% & Master of Science in de industri\"ele wetenschappen: elektromechanica,
-% afstudeerrichting Automatisering\\
-% |MA-IW-EM-EM|
-% & Master of Science in de industri\"ele wetenschappen: elektromechanica,
-% afstudeerrichting Elektromechanica\\
-% |MA-IW-EM-EN|
-% & Master of Science in de industri\"ele wetenschappen: elektromechanica,
-% afstudeerrichting Energie\\
-% |PHD-TI-BK|
-% & Doctor in de Toegepaste Ingenieurwetenschappen: bouwkunde\\
-% |PHD-TI-BCH|
-% & Doctor in de Toegepaste Ingenieurwetenschappen: biochemie\\
-% |PHD-TI-CH|
-% & Doctor in de Toegepaste Ingenieurwetenschappen: chemie\\
-% |PHD-TI-EI|
-% & doctor in de Toegepaste Ingenieurwetenschappen: elektronica-ICT\\
-% |PHD-TI-EM|
-% & Doctor in de Toegepaste Ingenieurwetenschappen: elektromechanica\\
-% \midrule
-% \multicolumn{2}{c}{Faculteit Toegepaste Economische
-% Wetenschappen}\\
-% \midrule
-% |MA-BE-HI|
-% & Master of Science handelsingenieur\\
-% |MA-BE-HIBI|
-% & Master of Science handelsingenieur in de beleidsinformatica\\
-% |MA-BE-EB|
-% & Master of Science in de toegepaste economische wetenschappen:
-% economisch beleid\\
-% |MA-BE-BK|
-% & Master of Science in de toegepaste economische wetenschappen:
-% bedrijfskunde\\
-% \bottomrule
-% \end{tabular}
-% \end{center}
+% \changes{v2.3}{2019/03/27}{Introduced bachelor level codes to allow
+% for bachelor theses}
+% \changes{v4.0}{2021/07/11}{Removed diploma codes, as too many
+% faculties are requesting to maintain them}
+% \DescribeMacro{\diploma} [bamathesis] (discontinued)\\
+% This macro is no longer used. Use |\degree{}| instead.
%
% \DescribeMacro{\lecturer} [coursetext] (mandatory)\\
-% This is the name of the person that actually teaches the course (in
+% You can add one or more lecturers to the course notes (in
% Dutch: titularis). If there are multiple persons, please, use the
-% macros |\lectureri|, |\lecturerii|, |\lectureriii|,
-% |\lectureriv|.
+% macro multiple times.
%
-% \DescribeMacro{\phddegree} [phdthesis] (mandatory)\\
+% \DescribeMacro{\phddegree} [phdthesis] (discontinued)\\
+% This macro is no longer used. Use |\degree{}| instead.
+%
+% \DescribeMacro{\degree} [bmthesis,phdthesis,coursetext] (mandatory)\\
% This is the official degree name (in the appropriate language,
% possibly mixed ``dutch (english)'').
+% Specify the official title of your diploma. This must be the
+% official title. For bachelor and master programmes in Dutch, it must
+% be the Dutch title. For programmes in English ti may be the English
+% title. For PhD degrees, language constraints are less strict.\\
+% Consult \url{https://www.hogeronderwijsregister.be} for correct
+% bachelor and master degree titles. Consult the Doctoral bylaws of
+% the university for correct PhD degree titles.
%
-% \DescribeMacro{\programme} [coursetext] (mandatory)\\
-% \label{dm-programme}
-% This macro takes three arguments (for the time being, only
-% applicable to the faculty of applied engineering):
-% \begin{itemize}
-% \item the type of the programme: BA, SP, VP or MA
-% \item the domain of the programme: IW
-% \item the qualifier of the programme: BK, CH, BCH, EM, EI
-% \end{itemize}
-% If you need more programme classes or qualifiers, ask the author to
-% complete the available codes.
-% Correct usage of the macro will result in error-free descriptions on
-% your title page.
-% You can overrule the standard descriptions, by specifying 'FREE' as
-% first argument and a free text description as second, leaving the third
-% one empty. However, we strongly advise against taking this route.
-% Instead, ask the author to complete the available codes.
+% \DescribeMacro{\programme} [coursetext] (discontinued)\\
+% This macro is no longer used. Use |\degree{}| instead.%
%
% \DescribeMacro{\publisher} [coursetext] (mandatory)\\
% This macro sets the publisher information of the document.
% It is printed on the front page. It defaults to the repographic
% service of campus Groenenborger, one of the standard printing
-% services of Universiteit Antwerpen.
+% services of Universiteit Antwerpen. Separate the different fields
+% (name, addres, a.s.o) using a pipe symbol.
%
% \DescribeMacro{\publishercode} [coursetext] (mandatory)\\
% This macro sets the publisher code of the document.
@@ -745,7 +681,7 @@
% uses for its internal administration. It may be a proprietary code,
% or an ISBN number.
%
-% \DescribeMacro{\subtitle} [coursetext / phdthesis] (optional)\\
+% \DescribeMacro{\subtitle} [coursetext / phdthesis / report] (optional)\\
% This macro sets the title of the document. You may use this
% \begin{itemize}
% \item to further clarify the title
@@ -754,25 +690,30 @@
% The latter is to be considered when you want to provide multiple
% documents as parts of the full course text (e.g., Course Notes,
% Formula Collection, Exercise Book, Solution Book).
-% This macro also sets the |subject| tag of the hyperref package,
+% This macro also sets the |subject| tag of the hyperref package (if
+% it is loaded),
% so that the PDF-document meta-information is correct.
%
% \DescribeMacro{\supervisor} [bamathesis / phdthesis] (mandatory)\\
-% This is the name of the person that promotes/supervises the thesis.
-% Please, use the macros |\supervisori|, |\supervisorii|, |\supervisoriii|,
-% |\supervisoriv|.
+% Specifies the person(s) that promote(s)/supervise(s) the thesis.
+% Please, use the macro multiple times if needed.
%
-% \DescribeMacro{\title} [coursetext / bamathesis / phdthesis] (mandatory)\\
+% \DescribeMacro{\title} [coursetext / bamathesis / phdthesis /
+% report] (mandatory)\\
% This macro sets the title of the document.
-% It also sets the |pdftitle| tag of the hyperref package, so that
+% It also sets the |pdftitle| tag of the hyperref package (if it is
+% loaded), so that
% the PDF-document meta-information is correct.
%
-% \DescribeMacro{\titlepageimage} [phdthesis]
+% \DescribeMacro{\titlepageimage} [coursetext / phdthesis / report]
% (optional)\\
-% This sets the central image on the title page to appear clipped
-% within the curves.
+% This sets the filename of the central image on the title page to
+% appear clipped % within the curves. For PhD theses this is highly
+% advized. For course texts, this is optional. If the image is not
+% set, a flat colored area will appear. This is part of the house
+% style.
%
-% \DescribeMacro{\versionyear} [coursetext] (mandatory)\\
+% \DescribeMacro{\versionyear} [coursetext / report] (mandatory)\\
% This is to be the year in which you published the current version of
% the course in the form YYYY.
%
@@ -880,6 +821,17 @@
% \DescribeMacro{\course} [exam] (mandatory)\\
% see description of |\course| macro on page~\pageref{dm-course}.
%
+% \DescribeMacro{\degree} [exam] (mandatory)\\
+% This is the official degree name (in the appropriate language,
+% possibly mixed ``dutch (english)'').
+% Specify the official title of your diploma. This must be the
+% official title. For bachelor and master programmes in Dutch, it must
+% be the Dutch title. For programmes in English ti may be the English
+% title. For PhD degrees, language constraints are less strict.\\
+% Consult \url{https://www.hogeronderwijsregister.be} for correct
+% bachelor and master degree titles. Consult the Doctoral bylaws of
+% the university for correct PhD degree titles.
+%
% \DescribeMacro{\examdate}
% specifies the date of the exam. We recommend the YYYY-MM-DD format,
% but you are free to chose your own coding scheme for dates. We
@@ -909,15 +861,22 @@
% that case the extra info will also not be terminated with a
% clearpage (as we assume you want to conserve space).
%
-% \DescribeMacro{\programme} [exam] (mandatory)\\
-% see description of |\programme| macro on page~\pageref{dm-programme}.
+% \DescribeMacro{\lecturer} [exam] (mandatory)\\
+% You can add one or more lecturers to the course notes (in
+% Dutch: titularis). If there are multiple persons, please, use the
+% macro multiple times.
+%
+% \DescribeMacro{\programme} [exam] (discontinued)\\
+% This macro is no longer used. Use |\degree{}| instead.%
%
-% \DescribeMacro{\rooms}
+% \DescribeMacro{\room}
% specifies the rooms in which the exam will take place. This is
% useless info for the student, but may be of convenience for you as
% author or supervisor of the exam. Use UAntwerpen standard room
% designators, e.g. 'G.U.025' for room number 025, on the
% Groenenborgercampus in the U-building.
+% If your exam is taken in multiple rooms, just specify multiple
+% |\room{}| commands.
%
% \DescribeMacro{\studentnr}
% specifies the exam copy number. This will appear on every page of
@@ -936,46 +895,38 @@
% \subsection{Examples}
% \subsubsection{\texttt{uantwerpencoursetext}}
%
-% This example uses the |qr| option (that invokes the |auto-pst-pdf|
-% package) so enable 'write18' or 'shell-escape' for your \LaTeX{}
-% compiler.
-%
% \changes{v2.5}{}{changed publisher to universitas in example}
%
% \begin{verbatim}
%<*ct-example>
-\documentclass[a4paper,11pt,oneside,openright,english,qr,copyright]{uantwerpencoursetext}
+\documentclass[ti,a4paper,11pt,oneside,openright,copyright]{uantwerpencoursetext}
\usepackage[english,dutch]{babel}
-\usepackage{lipsum} % this is just for some dummy text, please remove
-
+\usepackage{kantlipsum} % this is just for some dummy text, please remove
\title{Z\'agen, zoeken en zuchten}
-\qrtitle{Zágen, zoeken en zuchten}
\subtitle{Cursusnota's}
\author{Walter Daems en Paul Levrie}
\courseversion{1.3}
-\versionyear{2016}
+\versionyear{2021}
-\lectureri{Zoltan Zo\"ekers}
-\qrlectureri{Zoltan Zoëkers}
-\lecturerii{Siana Sigh}
-\lectureriii{Zeger de Z\'ager}
-\qrlectureriii{Zeger de Záger}
+\lecturer{Zoltan Zo\"ekers}
+\lecturer{Siana Sigh}
+\lecturer{Zeger de Z\'ager}
-\facultyacronym{TI}
-\programme{MA}{IW}{EI}
-\coursei{2023FTIZZZ}{5-Zoekmachines in een zaagperspectief}
-\courseii{2045FTIIII}{6-Zaagmachines in \'e\'en zuchtperspectief}
-\qrcourseii{6-Zaagmachines in één zuchtperspectief}
+\degree{Master of Science in de industri\"ele wetenschappen:
+ elektronica-ICT}
+\course{2023FTIZZZ}{5-Zoekmachines in een zaagperspectief}
+\course{2045FTIIII}{6-Zaagmachines in \'e\'en zuchtperspectief}
-\academicyear{2015-2016}
+\academicyear{2021-2022}
+% \titlepageimage{Images/uantwerpen-keyboard.jpg} % this is optional
-\publisher{Universitas Cursusdienst\\
- Prinsesstraat 16\\
- 2000 Antwerpen\\
- T +32 3 233 23 73\\
+\publisher{Universitas Cursusdienst |
+ Prinsesstraat 16 |
+ 2000 Antwerpen |
+ T +32 3 233 23 73 |
E info@cursusdienst.be}
\publishercode{C11111102}
@@ -984,9 +935,7 @@
The graphics in this document have been typeset using \texttt{TikZ}.\\
This document has been \TeX-ed on a GNU/Linux workstation.
}
-
\begin{document}
-\selectlanguage{dutch} % or english if your text is in English
\maketitle
@@ -996,32 +945,33 @@
\mainmatter
\chapter*{Inleiding}
-\lipsum[1]
+
+\kant[1]
\chapter{Onzin voor dummies}
\section{Het gebeuren}
-\lipsum[2]
+\kant[2]
\begin{equation}
e^{-j\pi} + 1 = 0
\end{equation}
-\lipsum[3]
+\kant[3]
\section{En waartoe het geleid heeft}
-\lipsum[4]
+\kant[4]
\subsection{Herhaling}
-\lipsum[5]
+\kant[5]
\subsection{Begint vervelend te worden}
-\lipsum[6]
+\kant[6]
\newpage
\subsection{Begint echt vervelend te worden}
-\lipsum[7-10]
+\kant[7-10]
\chapter{Besluit}
@@ -1042,23 +992,26 @@
%
% \begin{verbatim}
%<*bmt-example>
-\documentclass[a4paper,11pt,twoside,openright,english]{uantwerpenbamathesis}
+\documentclass[a4paper,11pt,twoside,openright,english,ti]{uantwerpenbamathesis}
-\usepackage[english]{babel} % or dutch if your text is in Dutch
-\usepackage{lipsum} % this is just for some dummy text, please remove
+\usepackage[dutch]{babel} % or english if your text is in English
+\usepackage{kantlipsum} % this is just for some dummy text, please remove
+
+\usepackage{hyperref} % New: you must load the hyperref package
+ % yourself! This allows you to put it in the
+ % correct order with the other packages you load!
\title{Minimax optimisatie voor performantieruimtemodellering}
\author{Bert Bibber}
-\supervisori{Prof. dr. ir. Kumulus}{Universiteit Antwerpen}
-\supervisorii{Prof. dr. Hilarius Warwinkel}{TNT-Bang, N.V.}
-\supervisoriii{ing. Piet Pienter}{POM}
+\supervisor{prof. dr. ir. Kumulus}{Universiteit Antwerpen}
+\supervisor{prof. dr. Hilarius Warwinkel}{TNT-Bang, N.V.}
+\supervisor{ing. Piet Pienter}{POM}
-\facultyacronym{TI}
-\academicyear{2015-2016}
-\diploma{MA-IW-EM}
+\academicyear{2021-2022}
+\degree{Bachelor of Science in de industri\"ele wetenschappen - elektronica-ICT}
\defenselocation{Antwerpen}
-\defensedate{juni 2016}
+\defensedate{juni 2021}
\begin{document}
@@ -1071,19 +1024,19 @@
\mainmatter
\chapter*{Inleiding}
-\lipsum[1]
+\kant[1]
\chapter{Onderzoeksvraag}
\section{Het gebeuren}
-\lipsum[2]
+\kant[2]
\begin{equation}
e^{-j\pi} + 1 = 0
\end{equation}
-\lipsum[3]
+\kant[3]
\chapter{Literatuurstudie}
@@ -1110,51 +1063,55 @@
% \paragraph{Dutch}
% \begin{verbatim}
%<*pt-example1>
-\documentclass[b5paper,10pt,twoside,openright,filled]{uantwerpenphdthesis}
+\documentclass[ti,10pt,twoside,openright,filled]{uantwerpenphdthesis}
% You may want to use common fonts
\usepackage{mathptmx}
\iftutex
\usepackage{fontspec}
+\setmainfont{Calibri}
\setsansfont{Calibri}
+\usepackage{sansmathaccent}
\else
\usepackage{cmbright}
\fi
\usepackage[dutch]{babel} % or dutch if your text is in Dutch
-\usepackage{lipsum} % this is just for some dummy text, please remove
+\usepackage{kantlipsum} % this is just for some dummy text, please remove
+
+\usepackage{hyperref} % New: you must load the hyperref package
+ % yourself! This allows you to put it in the
+ % correct order with the other packages you load!
\title{Harmonische Signaalanalyse\\met behulp van Lineaire
Operatoren}
\subtitle{Waarom moeten titels van doctoraatsthesissen toch altijd
lang en onverstaanbaar zijn?}
\author{Ing. Theofiel Hoekaff}
-\facultyacronym{TI}
-\programme{PHD}{IW}{EI}
\affiliation{Universiteit Antwerpen\\
Faculteit Toegepaste Ingenieurswetenschappen\\
- Constrained Systems Lab (CoSys-Lab)}
+ Co-design of Cyber-Physical Systems (Cosys-Lab)}
\address{Groenenborgerlaan 171, 2020 Antwerpen, Belgi\"e\\
M: theofiel.hoekaff@uantwerpen.be\\
T: +32 265 00 00
}
-\supervisori{Prof. dr. W. Vlaams}{Universiteit Antwerpen, Belgi\"e}
-\supervisorii{Prof. dr. J. Stekker}{Universiteit Antwerpen, Belgi\"e}
+\supervisor{prof. dr. W. Vlaams}{Universiteit Antwerpen, Belgi\"e}
+\supervisor{prof. dr. J. Stekker}{Universiteit Antwerpen, Belgi\"e}
-\jurychairman{Prof. dr. P. Dalinckx}{Universiteit Antwerpen, Belgi\"e}
+\jurychairman{prof. dr. P. Dalinckx}{Universiteit Antwerpen, Belgi\"e}
-\jurymemberi{Prof. dr. J. Dezerooder}{Universiteit Antwerpen, Belgi\"e}
-\jurymemberii{Prof. dr. P. De Tollenaere}{Flanders Make, Belgi\"e}
-\jurymemberiii{Prof. dr. M. Byr}{IMEC, Nederland}
+\jurymember{prof. dr. J. Dezerooder}{Universiteit Antwerpen, Belgi\"e}
+\jurymember{prof. dr. P. De Tollenaere}{Flanders Make, Belgi\"e}
+\jurymember{prof. dr. M. Byr}{IMEC, Nederland}
-\phddegree{doctor in de toegepaste ingenieurswetenschappen}
+\degree{doctor in de toegepaste ingenieurswetenschappen}
\defenselocation{Antwerpen}
-\defensedate{2018}
+\defensedate{2021}
\titlepageimage{Images/uantwerpen-keyboard.jpg}
-\isbn{987-90-57285-34-7} % don't specify thisif you don't want one
-\depot{D/2018/12.293/03} % idem
+\isbn{987-90-57285-34-7} % don't specify this if you don't want one
+\depot{D/2021/12.293/03} % idem
\begin{document}
@@ -1167,35 +1124,35 @@
\mainmatter
\chapter*{Inleiding}
-\lipsum[1]
+\kant[1]
\chapter{Onderzoeksvraag}
\section{Het gegeven}
-\lipsum[2]
+\kant[2]
\begin{equation}
e^{-j\pi} + 1 = 0
\end{equation}
-\lipsum[3-17]
+\kant[3-17]
\chapter{Literatuurstudie}
-\lipsum[18-19]
+\kant[18-19]
\chapter{Theoretische achtergrond}
-\lipsum[20-21]
+\kant[20-21]
\chapter{Eigen realisatie}
-\lipsum[22-24]
+\kant[22-24]
\chapter{Besluit}
-\lipsum[25]
+\kant[25]
\appendix
\chapter{Symbolen}
@@ -1212,44 +1169,46 @@
% \paragraph{English}
% \begin{verbatim}
%<*pt-example2>
-\documentclass[b5paper,10pt,twoside,openright,filled]{uantwerpenphdthesis}
+\documentclass[ti,10pt,twoside,openright,filled]{uantwerpenphdthesis}
% use some fancy font
\usepackage{newpxtext}
\usepackage{newpxmath}
\usepackage[english]{babel} % or dutch if your text is in Dutch
-\usepackage{lipsum} % this is just for some dummy text, please remove
+\usepackage{kantlipsum} % this is just for some dummy text, please remove
+
+\usepackage{hyperref} % New: you must load the hyperref package
+ % yourself! This allows you to put it in the
+ % correct order with the other packages you load!
\title{Harmonic Signal analysis\\based on Linear Operators}
\subtitle{How did Mindy linearly kill Mork's IC signal analyzer?}
\author{Ing. Theodore Edgeoff}
-\facultyacronym{TI}
\affiliation{University of Antwerp\\
Faculty of Applied Engineering\\
- CoSys-Lab}
+ Cosys-Lab}
\address{Groenenborgerlaan 171, 2020 Antwerpen, Belgi\"e\\
M: theofiel.hoekaff@uantwerpen.be\\
T: +32 265 00 00
}
-\supervisori{Prof. dr. W. Vlaams}{University of Antwerp, Belgium}
-\supervisorii{Prof. dr. J. Stekker}{University of Antwerp, Belgium}
+\supervisor{prof. dr. W. Vlaams}{University of Antwerp, Belgium}
+\supervisor{prof. dr. J. Stekker}{University of Antwerp, Belgium}
-\jurychairman{Prof. dr. P. Dalinckx}{University of Antwerp, Belgium}
+\jurychairman{prof. dr. P. Dalinckx}{University of Antwerp, Belgium}
-\jurymemberi{Prof. dr. J. Dezerooder}{University of Antwerp, Belgium}
-\jurymemberii{Prof. dr. P. De Tollenaere}{Flanders Make, Belgium}
-\jurymemberiii{Prof. dr. M. Byr}{IMEC, The Netherlands}
+\jurymember{prof. dr. J. Dezerooder}{University of Antwerp, Belgium}
+\jurymember{prof. dr. P. De Tollenaere}{Flanders Make, Belgium}
+\jurymember{prof. dr. M. Byr}{IMEC, The Netherlands}
-\facultyacronym{TI}
-\phddegree{doctor in applied engineering}
+\degree{doctor in applied engineering}
\defenselocation{Antwerpen}
-\defensedate{2018}
+\defensedate{2021}
\titlepageimage{Images/uantwerpen-keyboard.jpg}
\isbn{987-90-57285-34-7}
-\depot{D/2018/12.293/03}
+\depot{D/2021/12.293/03}
\begin{document}
@@ -1262,35 +1221,35 @@
\mainmatter
\chapter*{Introduction}
-\lipsum[1]
+\kant[1]
\chapter{Research question}
\section{The datum}
-\lipsum[2]
+\kant[2]
\begin{equation}
e^{-j\pi} + 1 = 0
\end{equation}
-\lipsum[3-17]
+\kant[3-17]
\chapter{Literature review}
-\lipsum[18-19]
+\kant[18-19]
\chapter{Theoretical background}
-\lipsum[20-21]
+\kant[20-21]
\chapter{Technical results}
-\lipsum[22-24]
+\kant[22-24]
\chapter{Conclusion}
-\lipsum[25]
+\kant[25]
\appendix
@@ -1304,13 +1263,105 @@
%</pt-example2>
% \end{verbatim}
%
+% \subsubsection{\texttt{uantwerpenreport}}
+%
+% \begin{verbatim}
+%<*rp-example>
+\documentclass[10pt,twoside,openright,filled]{uantwerpenreport}
+
+% You may want to use common fonts
+\usepackage{mathptmx}
+\iftutex
+\usepackage{fontspec}
+\setmainfont{Calibri}
+\setsansfont{Calibri}
+\usepackage{sansmathaccent}
+\else
+\usepackage{cmbright}
+\fi
+
+\usepackage[dutch]{babel} % or dutch if your text is in Dutch
+\usepackage{kantlipsum} % this is just for some dummy text, please remove
+
+\usepackage{hyperref} % New: you must load the hyperref package
+ % yourself! This allows you to put it in the
+ % correct order with the other packages you load!
+
+\title{De toepassing van roomijs-derivaten in beton}
+\subtitle{Het belang van een smaakvolle architectuur}
+\author{Ing. Jan Bouwblauw}
+\extra{Onderzoeksrapport}
+\affiliation{Universiteit Antwerpen | Building Research Group}
+\address{Groenenborgerlaan 171, 2020 Antwerpen, Belgi\"e\\
+ M: jan.bouwblauw@uantwerpen.be\\
+ T: +32 265 00 00
+}
+
+\versionyear{2021}
+
+\titlepageimage{Images/uantwerpen-keyboard.jpg}
+
+\begin{document}
+
+\maketitle
+
+\frontmatter
+
+\tableofcontents
+
+\mainmatter
+\chapter*{Inleiding}
+
+\kant[1]
+
+\chapter{Smaken en smaakpapillen}
+
+\section{Het gegeven}
+
+\kant[2]
+
+\begin{equation}
+ e^{-j\pi} + 1 = 0
+\end{equation}
+
+\kant[3-17]
+
+\chapter{Experimentele setup}
+
+\kant[18-19]
+
+\chapter{Resulaten}
+
+\kant[20-21]
+
+\chapter{Conclusie}
+
+\kant[22-24]
+
+\chapter{Advies}
+
+\kant[25]
+
+\appendix
+\chapter{Symbolen}
+
+\chapter{Publicaties}
+% Put your bibliography here using BibTeX
+
+\makefinalpage
+
+\end{document}
+%</rp-example>
+% \end{verbatim}
+%
+%
% \subsubsection{\texttt{uantwerpenletter}}
%
% \paragraph{Plain example}
%
% \begin{verbatim}
%<*le-example>
-\documentclass[a4paper]{uantwerpenletter}
+\documentclass[ti,a4paper]{uantwerpenletter}
%% As a good UAntwerpen citizen, you would use the calibri font.
%% As this only works for XeLaTeX or LuaLaTeX, we chose to include
@@ -1323,11 +1374,10 @@
\fi
\usepackage[english]{babel}
-\usepackage{lipsum} % this is just for some dummy text, please remove
+\usepackage{kantlipsum} % this is just for some dummy text, please remove
-\sender{Prof. Walter Daems}{Senior Lecturer}
-\facultyacronym{TI}
-\unit{CoSys-Lab}
+\sender{prof. Walter Daems}{Senior Lecturer}
+\unit{Cosys-Lab}
\address{
Campus Groenenborger\\
Groenenborgerlaan 171\\
@@ -1338,7 +1388,7 @@
\mobile{+32 499 355 115}
\returnaddress{FTI - U.301 -- Groenenborgerlaan 171, 2020 Antwerpen, BELGIUM}
-\to{Prof. B. Bonette}
+\to{prof. B. Bonette}
\toorganization{Mumford University}
\toaddress{
450 Morning Mall\\
@@ -1351,7 +1401,7 @@
\begin{document}
\maketitle
- \opening{Dear Prof. Bonette,}
+ \opening{Dear prof. Bonette,}
I'd like to congratulate you and the other professors of your
university on the very instructive video lectures
@@ -1367,12 +1417,12 @@
Below, you can find a few more paragraphs to illustrate that this
class can generate multipage letters.
- \lipsum[1-3]
+ \kant[1-3]
\closing{Kind regards,}
% you might want to insert a signature picture or text:
% \signature{\includegraphics{signature.jpg}}
- \carboncopy{Prof. S. Mariotte, Mumford University}
+ \carboncopy{prof. S. Mariotte, Mumford University}
\enclosed{
\begin{enumerate}
\item list of course numbers that are most fequently viewed at
@@ -1401,9 +1451,8 @@
\usepackage{cmbright}
\fi
-\sender{Prof. Walter Daems}{Senior Lecturer}
-%\facultyacronym{TI} TEMP
-\unit{CoSys-Lab}
+\sender{prof. Walter Daems}{Senior Lecturer}
+\unit{Cosys-Lab}
\address{
Campus Groenenborger\\
Groenenborgerlaan 171\\
@@ -1441,17 +1490,17 @@
% \paragraph{Single column}
% \begin{verbatim}
%<*ex-example1>
-\documentclass[a4paper,10pt]{uantwerpenexam}
+\documentclass[ti,a4paper,10pt]{uantwerpenexam}
\usepackage{newpxtext} % demonstration of some fine font packages
\usepackage{newpxmath}
\usepackage{enumitem}
\usepackage[dutch]{babel} % last language loaded will
% determine logo version (change to
% [dutch] for a monolingual version)
-\course{19876FTIDUM}{5-Bistrologie}
-\author{Walter Daems}
-\facultyacronym{TI}
-\programme{BA}{IW}{EI}
+
+\course{1876FTIDUM}{5-Bistrologie}
+\lecturer{Walter Daems}
+\degree{Bachelor of Science in de industri\"ele wetenschappen - elektronica-ICT}
\academicyear{2017-2018}
\exampart{Schriftelijk Examen}
\examgroupnumber{1 (eerste examenkans-inhaal)}
@@ -1459,7 +1508,7 @@
\examlength{4h}
\tstart{08h30}
\tend{12h30}
-\rooms{G.U.025}
+\room{G.U.025}
\extrainfo[firstpage]{
Belangrijke informatie:\\\par
Het volledige Onderwijs- en Examenregelement (OER) is van toepassing
@@ -1538,17 +1587,18 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% \paragraph{Two columns}
% \begin{verbatim}
%<*ex-example2>
-\documentclass[a4paper,10pt]{uantwerpenexam}
+\documentclass[ti,a4paper,10pt]{uantwerpenexam}
\usepackage{newpxtext} % demonstration of some fine font packages
\usepackage{newpxmath}
\usepackage{enumitem}
\usepackage[dutch,english]{babel} % last language loaded will
% determine logo version (change to
% [dutch] for a monolingual version)
-\course{19876FTIDUM}{5-Bistrology}
-\author{Walter Daems}
-\facultyacronym{TI}
-\programme{BA}{IW}{EI}
+
+\course{1876FTIDUM}{5-Bistrology}
+\lecturer{Walter Daems}
+\lecturer{Paul Levrie}
+\degree{Bachelor of Science in de industri\"ele wetenschappen - elektronica-ICT}
\academicyear{2017-2018}
\exampart{Written Exam}
\examgroupnumber{1 (eerste examenkans-inhaal)}
@@ -1556,7 +1606,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
\examlength{4h}
\tstart{08h30}
\tend{12h30}
-\rooms{G.U.025}
+\room{G.U.025}
+\room{G.U.026}
\extrainfo{
\engdut{
Important information:\\\par
@@ -1725,7 +1776,210 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% \StopEventually{\clearpage\PrintChanges\clearpage\PrintIndex}
%
% \section{Implementation of the classes}
-%
+%
+%
+% \subsection{Common options}
+%
+% Colors appear in any document, so let's define them in common in a
+% separate package
+% \begin{macrocode}
+%<*clo>
+\newif\if@neutralcolors
+\@neutralcolorsfalse
+\DeclareOption{neutralcolors}{\@neutralcolorstrue}
+
+\newcommand*\colormodel{rgb}
+\newif\if@cmyk
+\@cmykfalse
+\DeclareOption{cmyk}{\renewcommand*\colormodel{cmyk}\@cmyktrue}
+\DeclareOption{rgb}{\renewcommand*\colormodel{rgb}\@cmykfalse}
+
+\newcommand*\facinenglish[1]{\renewcommand\@faculty{#1}}
+\newcommand*\facindutch[1]{
+ \AtBeginDocument{
+ \makeatother
+ \@ifpackageloaded{babel}{
+ \addto\captionsdutch{\renewcommand*\@faculty{#1}}
+ }{}
+ \makeatletter
+ }
+}
+\newcommand*\fselector{ua}
+\newcommand*\lselector{en}
+\newlength\logounitheight
+\setlength\logounitheight{0.8cm}
+
+\newcommand*\@faculty{~}
+\DeclareOption{be}{
+ \renewcommand*\fselector{be}
+ \setlength\logounitheight{1cm}
+ \facinenglish{Faculty of Business and Economics}
+ \facindutch{Faculteit Bedrijfswetenschappen en Economie}
+}
+\DeclareOption{fbd}{
+ \renewcommand*\fselector{fbd}
+ \setlength\logounitheight{1cm}
+ \facinenglish{Faculty of Pharmaceutical, Biomedical and Veterinary Sciences}
+ \facindutch{Faculteit Farmaceutische, Biomedische en Diergeneeskundige
+ Wetenschappen}
+}
+\DeclareOption{ggw}{
+ \renewcommand*\fselector{ggw}
+ \setlength\logounitheight{1cm}
+ \facinenglish{
+ Faculty of Medicine and Health Sciences}
+ \facindutch{Faculteit Geneeskunde en Gezondheidswetenschappen}
+}
+\DeclareOption{lw}{
+ \renewcommand*\fselector{lw}
+ \setlength\logounitheight{1cm}
+ \facinenglish{Faculty of Arts}
+ \facindutch{Faculteit Letteren en Wijsbegeerte}
+}
+\DeclareOption{ow}{
+ \renewcommand*\fselector{ow}
+ \setlength\logounitheight{1cm}
+ \facinenglish{Faculty of Design Sciences}
+ \facindutch{Faculteit Ontwerpwetenschappen}
+}
+\DeclareOption{re}{
+ \renewcommand*\fselector{re}
+ \setlength\logounitheight{1cm}
+ \facinenglish{Faculty of Law}
+ \facindutch{Faculteit Rechten}
+}
+\DeclareOption{sw}{
+ \renewcommand*\fselector{sw}
+ \setlength\logounitheight{1cm}
+ \facinenglish{Faculty of Social Sciences}
+ \facindutch{Faculteit Sociale Wetenschappen}
+ }
+\DeclareOption{ti}{
+ \renewcommand*\fselector{ti}
+ \setlength\logounitheight{1cm}
+ \facinenglish{Faculty of Applied Engineering}
+ \facindutch{Faculteit Toegepaste Ingenieurswetenschappen}
+}
+\DeclareOption{we}{
+ \renewcommand*\fselector{we}
+ \setlength\logounitheight{1cm}
+ \facinenglish{Faculty of Science}
+ \facindutch{Faculteit Wetenschappen}
+}
+\DeclareOption{iob}{
+ \renewcommand*\fselector{iob}
+ \setlength\logounitheight{1cm}
+ \facinenglish{Institute of Development Policy}
+ \facindutch{Instituut voor Ontwikkelingsbeleid- en beheer}
+}
+\newcommand*\@facultyacronym{\expandafter\uppercase\expandafter{\fselector}}
+
+\AtBeginDocument{
+ \makeatother
+ \@ifpackageloaded{babel}{
+ \addto\captionsdutch{
+ \renewcommand*\lselector{nl}
+ }{}
+ }
+ \makeatletter
+
+ \newcommand*\logopos{Logos/logo-uantwerpen-\fselector-\lselector-\colormodel-pos}
+ \newcommand*\logoposua{Logos/logo-uantwerpen-ua-\lselector-\colormodel-pos}
+ \newcommand*\logoneg{Logos/logo-uantwerpen-\fselector-\lselector-\colormodel-neg}
+ \newcommand*\logonegua{Logos/logo-uantwerpen-ua-\lselector-\colormodel-neg}
+ \newcommand*\logomonowhite{Logos/logo-uantwerpen-\fselector-\lselector-\colormodel-mono-white}
+ \newcommand*\logomonowhiteua{Logos/logo-uantwerpen-ua-\lselector-\colormodel-mono-white}
+ \newcommand*\iconfile{Logos/icon-uantwerpen-\fselector-\colormodel}
+ \newcommand*\iconfileua{Logos/icon-uantwerpen-ua-\colormodel}
+}
+%</clo>
+% \end{macrocode}
+%
+% \subsection{Color scheme}
+% \begin{macrocode}
+%<*cls>
+\if@cmyk
+%% UAntwerpen
+\definecolor{uauamain}{cmyk}{0.00,0.96,0.82,0.01}
+\definecolor{uauaside}{cmyk}{1.00,0.71,0.00,0.51}
+%% Faculteit Bedrijfswetenschappen en Economie
+\definecolor{uabemain}{cmyk}{0.58,0.00,1.00,0.04}
+\definecolor{uabeside}{cmyk}{0.29,0.04,0.41,0.00}
+%% Faculteit Farmaceutische, Biomedische en Diergeneeskundige Wetenschappen
+\definecolor{uafbdmain}{cmyk}{0.65,0.03,0.00,0.00}
+\definecolor{uafbdside}{cmyk}{0.33,0.03,0.00,0.00}
+%% Faculteit Geneeskunde en Gezondheidswetenschappen
+\definecolor{uaggwmain}{cmyk}{0.61,0.55,0.00,0.00}
+\definecolor{uaggwside}{cmyk}{0.21,0.27,0.03,0.00}
+%% Faculteit Letteren en Wijsbegeerte
+\definecolor{ualwmain}{cmyk}{0.00,0.27,0.85,0.00}
+\definecolor{ualwside}{cmyk}{0.00,0.16,0.51,0.00}
+%% Faculteit Ontwerpwetenschappen
+\definecolor{uaowmain}{cmyk}{0.53,0.25,0.26,0.05}
+\definecolor{uaowside}{cmyk}{0.25,0.08,0.16,0.00}
+%% Faculteit Rechten
+\definecolor{uaremain}{cmyk}{0.10,1.00,0.90,0.05}
+\definecolor{uareside}{cmyk}{0.04,0.45,0.36,0.00}
+%% Faculteit Sociale Wetenschappen
+\definecolor{uaswmain}{cmyk}{0.08,0.00,1.00,0.26}
+\definecolor{uaswside}{cmyk}{0.20,0.11,0.50,0.00}
+%% Faculteit Toegepaste Ingenieurswetenschappen
+\definecolor{uatimain}{cmyk}{0.31,1.00,0.00,0.01}
+\definecolor{uatiside}{cmyk}{0.11,0.30,0.02,0.00}
+%% Faculteit Wetenschappen
+\definecolor{uawemain}{cmyk}{1.00,0.20,0.00,0.25}
+\definecolor{uaweside}{cmyk}{0.40,0.08,0.00,0.10}
+%% IOB
+\definecolor{uaiobmain}{cmyk}{0.05,0.75,1.00,0.00}
+\definecolor{uaiobside}{cmyk}{0.40,0.08,0.00,0.10}
+\else
+%% UAntwerpen
+\definecolor{uauamain}{RGB}{234,44,56}
+\definecolor{uauaside}{RGB}{0,46,101}
+%% Faculteit Bedrijfswetenschappen en Economie
+\definecolor{uabemain}{RGB}{101,168,18}
+\definecolor{uabeside}{RGB}{185,213,169}
+%% Faculteit Farmaceutische, Biomedische en Diergeneeskundige Wetenschappen
+\definecolor{uafbdmain}{RGB}{68,184,243}
+\definecolor{uafbdside}{RGB}{181,221,247}
+%% Faculteit Geneeskunde en Gezondheidswetenschappen
+\definecolor{uaggwmain}{RGB}{117,117,203}
+\definecolor{uaggwside}{RGB}{198,182,210}
+%% Faculteit Letteren en Wijsbegeerte
+\definecolor{ualwmain}{RGB}{241,181,61}
+\definecolor{ualwside}{RGB}{255,218,145}
+%% Faculteit Ontwerpwetenschappen
+\definecolor{uaowmain}{RGB}{130,161,173}
+\definecolor{uaowside}{RGB}{200,217,216}
+%% Faculteit Rechten
+\definecolor{uaremain}{RGB}{210,8,36}
+\definecolor{uareside}{RGB}{237,157,144}
+%% Faculteit Sociale Wetenschappen
+\definecolor{uaswmain}{RGB}{173,165,0}
+\definecolor{uaswside}{RGB}{215,211,148}
+%% Faculteit Toegepaste Ingenieurswetenschappen
+\definecolor{uatimain}{RGB}{177,0,151}
+\definecolor{uatiside}{RGB}{221,184,210}
+%% Faculteit Wetenschappen
+\definecolor{uawemain}{RGB}{0,108,169}
+\definecolor{uaweside}{RGB}{151,192,223}
+%% IOB
+\definecolor{uaiobmain}{RGB}{230,98,8}
+\definecolor{uaiobside}{RGB}{151,192,223}
+\fi
+%%
+\if@neutralcolors
+\colorlet{maincolor}{uauaside}
+\colorlet{sidecolor}{uauamain}
+\colorlet{basecolor}{uauaside}
+\else
+\colorlet{maincolor}{ua\fselector main}
+\colorlet{sidecolor}{ua\fselector side}
+\colorlet{basecolor}{uauaside}
+\fi
+%</cls>
+% \end{macrocode}
+%
% \subsection{Class inheritance}
%
%
@@ -1738,29 +1992,22 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% \changes{v1.4}{2016/01/07}{Implemented letter class}
% \changes{v1.9}{2018/03/02}{Implemented uantwerpenexam class}
% \changes{v2.0}{2018/03/02}{Implemented uantwerpenphdthesis class}
+% \changes{v4.0}{2021/05/01}{Removed option qr again}
+% \changes{v4.0}{2021/07/11}{Removed options titlepagetableonly and titlepagenoartwork}
%
% Before loading the class, we provide the extra options.
%
% \begin{macrocode}
-%<*ct>
+%<*ct|rp>
\newif\if@copyright
\DeclareOption{copyright}{\@copyrighttrue}
-\newif\if@qr
-\DeclareOption{qr}{\@qrtrue}
-%</ct>
-% \end{macrocode}
+%</ct|rp>
%
-% \begin{macrocode}
-%<*ct|bmt|pt>
-\newif\if@titlepagenoartwork
-\DeclareOption{titlepagenoartwork}{\@titlepagenoartworktrue}
-\newif\if@titlepagetableonly
-\DeclareOption{titlepagetableonly}{\@titlepagetableonlytrue}
-%</ct|bmt|pt>
-%<*ct|bmt|pt|le>
+%<*ct|bmt|pt|rp|le>
\newif\if@filled
\DeclareOption{filled}{\@filledtrue}
-%</ct|bmt|pt|le>
+%</ct|bmt|pt|rp|le>
+%
%<*ex>
\newif\if@examiner
\DeclareOption{examiner}{\@examinertrue}
@@ -1771,20 +2018,23 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% We execute some standard options:
% We load the |book| class for course texts and master theses.
% \begin{macrocode}
-%<*ct|bmt|pt>
+%<*ct|bmt|pt|rp>
+\input{uantwerpencommonoptions.clo}
\ExecuteOptions{a4paper,11pt,final,oneside,openright}
\ProcessOptions\relax
\LoadClassWithOptions{book}
-%</ct|bmt|pt>
+%</ct|bmt|pt|rp>
% We load the |letter| class for letters
%<*le>
+\input{uantwerpencommonoptions.clo}
\ExecuteOptions{a4paper,10pt,final,oneside,openright}
\ProcessOptions
\LoadClassWithOptions{letter}
-\newcommand\tat{\makeatletter @\makeatother}
+\newcommand*\tat{\makeatletter @\makeatother}
%</le>
% We load the |article| class for exams
%<*ex>
+\input{uantwerpencommonoptions.clo}
\ExecuteOptions{a4paper,twoside,10pt}
\ProcessOptions
\LoadClassWithOptions{article}
@@ -1796,11 +2046,11 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% and with a decent paragraph spacing.
%
% \begin{macrocode}
-%<*ct|bmt|pt|le|ex>
+%<*ct|bmt|pt|rp|le|ex>
\setlength{\parindent}{0pt}
\addtolength{\parskip}{0.75\baselineskip}
\setcounter{secnumdepth}{3}
-%</ct|bmt|pt|le|ex>
+%</ct|bmt|pt|rp|le|ex>
% \end{macrocode}
%
% \subsection{Auxiliary packages}
@@ -1808,18 +2058,34 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% appropriate auxiliary packages that have proven their value.
%
% \subsubsection{Geometry}
-% Let's reduce the margins to 1 inch each.
+% Let's reduce the margins to 1 inch each for the documents that are
+% unlikely to be glue bound:
% \begin{macrocode}
-%<*ct|bmt|pt|ex>
-\RequirePackage[top=1in, bottom=1in, left=1in, right=1in]{geometry}
-%</ct|bmt|pt|ex>
+%<*ct|bmt|rp|ex>
+\RequirePackage[top=2.5cm, bottom=2.5cm, left=2.5cm, right=2.5cm]{geometry}
+%</ct|bmt|rp|ex>
+% Let's follow the instructions by ADS for the (marginal(!) glue provision):
+%<*pt>
+\RequirePackage[paperwidth=180mm,paperheight=260mm,
+ top=2.5cm,bottom=2.5cm,left=2.6cm,right=1.8cm,twoside]
+ {geometry}
+%</pt>
%<*le>
\RequirePackage[top=1in, bottom=1in, left=1.34in, right=1in]{geometry}
\RequirePackage[normalem]{ulem}
-\RequirePackage{atbegshi}
%</le>
% \end{macrocode}
%
+% \subsubsection{Preparing for \LaTeX3}
+% Let's make things a bit easier for me.
+% \begin{macrocode}
+%<*ct|bmt|pt|rp|le|ex>
+\RequirePackage{expl3}
+%\RequirePackage[check-declarations]{expl3} % I use this during debug phase
+\RequirePackage{xparse}
+%</ct|bmt|pt|rp|le|ex>
+% \end{macrocode}
+%
% \subsubsection{Font packages}
% Note that the use of cmbright is no
% longer imposed (as of v1.3). Using a good font is now up to the
@@ -1831,9 +2097,9 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% \changes{v1.3}{2015/12/31}{Abandoned use of cmbright - no more
% font dictatorship for theses and courses}
% \begin{macrocode}
-%<*ct|bmt|pt|le>
+%<*ct|bmt|pt|rp|le>
% no more font code
-%</ct|bmt|pt|le>
+%</ct|bmt|pt|rp|le>
% \end{macrocode}
%
% \subsubsection{Boilerplate packages}
@@ -1849,14 +2115,14 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% unreliable}
% \changes{v3.0}{2021/02/05}{Added iftex}
% \begin{macrocode}
-%<*ct|bmt|pt|le|ex>
+%<*ct|bmt|pt|rp|le|ex>
\RequirePackage{iftex}
\RequirePackage{xstring}
\RequirePackage{etoolbox}
\RequirePackage{ifthen}
\IfFileExists{shellesc.sty}{\RequirePackage{shellesc}}{}
\newcommand{\@emptymacro}{}
-%</ct|bmt|pt|le|ex>
+%</ct|bmt|pt|rp|le|ex>
% \end{macrocode}
%
% \subsubsection{Graphics packages}
@@ -1867,51 +2133,44 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% Some packages for coursetext and bamathesis:
% \changes{v1.3}{2015/12/31}{Added inclusion of background package}
% \begin{macrocode}
-%<*ct|bmt|pt|le|ex>
+%<*ct|bmt|pt|rp|le|ex>
\RequirePackage{graphicx}
+\RequirePackage[export]{adjustbox}
\RequirePackage{color}
\RequirePackage{tikz}
\usetikzlibrary{positioning}
\RequirePackage{eso-pic}
-%</ct|bmt|pt|le|ex>
-%<*ct>
+%</ct|bmt|pt|rp|le|ex>
+%<*ct|rp>
\if@copyright
-\RequirePackage[firstpage=false,contents={Copyright University of
- Antwerp, All Rights Reserved},color=lightgray,scale=3]{background}
+\RequirePackage[contents={},color=lightgray,scale=3]{background}
\fi
-%</ct>
+%</ct|rp>
%<*pt>
\usepackage{ean13isbn}
%</pt>
% \end{macrocode}
%
-% In uantwerpencoursetext we also want to generate a qr code.
-% Therefore we load the |pst-barcode| and |auto-pst-pdf| package.
-% In this case you must enable 'write18' or 'shell-escape' for your
-% \LaTeX{} compiler. Check your documention on how to do so!
-%
+% \subsubsection{UAntwerpen color and logo scheme}
% \begin{macrocode}
-%<*ct>
-\if@qr
-\RequirePackage{auto-pst-pdf}
-\RequirePackage{pst-barcode}
-\fi
-%</ct>
+%<*ct|bmt|pt|rp|le|ex>
+\RequirePackage{uantwerpencolorlogoscheme}
+%</ct|bmt|pt|rp|le|ex>
% \end{macrocode}
-%
+
% \subsubsection{Header/Footer}
%
% The de-facto standard for headers and footers:
% \begin{macrocode}
-%<*ct|bmt|pt|le|ex>
+%<*ct|bmt|pt|rp|le|ex>
\RequirePackage{fancyhdr}
-%</ct|bmt|pt|le|ex>
+%</ct|bmt|pt|rp|le|ex>
% \end{macrocode}
%
% \subsection{Colors}
%
% \begin{macrocode}
-%<*ct|bmt|pt|le|ex>
+%<*ct|bmt|pt|rp|le|ex>
\definecolor{uacorpbord}{cmyk} {0.00,1.00,0.60,0.37}
\definecolor{uacorpblue}{cmyk} {1.00,0.25,0.00,0.50}
\definecolor{uacorplightblue}{cmyk}{1.00,0.00,0.08,0.13}
@@ -1921,143 +2180,200 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
\definecolor{lightgray}{cmyk} {0.00,0.00,0.00,0.05}
\definecolor{darkgray}{cmyk} {0.00,0.00,0.00,0.80}
\definecolor{watermark}{cmyk} {0.00,0.00,0.00,0.05}
-%</ct|bmt|pt|le|ex>
+%</ct|bmt|pt|rp|le|ex>
% \end{macrocode}
%
% \subsection{Babel provisions}
%
% \changes{v1.7}{2016/05/01}{Added babel tags of elements
% of master's thesis title page}
+% \changes{v4.0}{2021/05/01}{Total rewrite of this part based on
+% expl3}
+% Let's start by defining our dictionary:
% \begin{macrocode}
-%<*ct|bmt|pt|le|ex>
-\newcommand\uaname{University of Antwerp}
-\newcommand\arrname{All rights reserved}
-\newcommand\orname{of}
-\newcommand\domainname{uantwerp.be}
-\newcommand\datename{Date}
-\newcommand\subjectname{Subject}
-\newcommand\academicyearname{Academic year}
-\newcommand\masterthesisname{Master's thesis}
-\newcommand\bachelorthesisname{Bachelor's thesis}
-\newcommand\supervisorsname{Supervisors}
-\newcommand\juryname{Jury}
-\newcommand\jurymembersname{Members}
-\newcommand\jurychairmanname{Chairman}
-\newcommand\bmthesisname{Thesis to obtain the degree of}
-\newcommand\pthesisnamei{Thesis submitted in fulfilment of the
- requirements for the degree of}
-\newcommand\pthesisnameii{at University of Antwerp}
-\newcommand\@faculty{~}
-\newcommand\@logo{Logos/logo-uantwerpen-ua-en-cmyk-pos}
-\newcommand\faccpg{
- \renewcommand\@faculty{Centre Pieter Gillis}
- \renewcommand\@logo{Logos/logo-uantwerpen-ua-en-cmyk-pos}}
-\newcommand\facfbd{
- \renewcommand\@faculty{Faculty of Pharmaceutical, Biomedical and
- Veterinary Sciences}
- \renewcommand\@logo{Logos/logo-uantwerpen-fbd-en-cmyk-pos}}
-\newcommand\facggw{
- \renewcommand\@faculty{Faculty of Medicine and Health Sciences}
- \renewcommand\@logo{Logos/logo-uantwerpen-ggw-en-cmyk-pos}}
-\newcommand\insiob{
- \renewcommand\@faculty{Insitute of Development Policy}
- \renewcommand\@logo{Logos/logo-uantwerpen-iob-en-cmyk-pos}}
-\newcommand\asoe{
- \renewcommand\@faculty{Antwerp School of Education}
- \renewcommand\@logo{Logos/logo-uantwerpen-ua-en-cmyk-pos}}
-\newcommand\faclw{
- \renewcommand\@faculty{Faculty of Arts}
- \renewcommand\@logo{Logos/logo-uantwerpen-lw-en-cmyk-pos}}
-\newcommand\facow{
- \renewcommand\@faculty{Faculty of Design Sciences}
- \renewcommand\@logo{Logos/logo-uantwerpen-ow-en-cmyk-pos}}
-\newcommand\facsw{
- \renewcommand\@faculty{Faculty of Social Sciences}
- \renewcommand\@logo{Logos/logo-uantwerpen-sw-en-cmyk-pos}}
-\newcommand\facre{
- \renewcommand\@faculty{Faculty of Law}
- \renewcommand\@logo{Logos/logo-uantwerpen-re-en-cmyk-pos}}
-\newcommand\facbe{
- \renewcommand\@faculty{Faculty of Business and Economics}
- \renewcommand\@logo{Logos/logo-uantwerpen-be-en-cmyk-pos}}
-\newcommand\facti{
- \renewcommand\@faculty{Faculty of Applied Engineering}
- \renewcommand\@logo{Logos/logo-uantwerpen-ti-en-cmyk-pos}}
-\newcommand\facwe{
- \renewcommand\@faculty{Faculty of Science}
- \renewcommand\@logo{Logos/logo-uantwerpen-we-en-cmyk-pos}}
-\newcommand\weightname{Weight}
+%<*ct|bmt|pt|rp|le|ex>
+\ExplSyntaxOn
+\prop_new:N \g_@@_data_prop
+%</ct|bmt|pt|rp|le|ex>%
+% \end{macrocode}
+%
+% The dictionary can be accessed using the following document command:
+% \begin{macrocode}
+%<*ct|bmt|pt|rp|le|ex>
+\NewDocumentCommand{\uantwerpendocsprop}{m}{
+ \prop_item:Nn \g_@@_data_prop{#1}
+}
+\NewDocumentCommand{\uantwerpendocsPROP}{m}{
+ \str_uppercase:f { \prop_item:Nn \g_@@_data_prop{#1} }
+}
+\NewDocumentCommand{\uantwerpendocspropread}{m}{
+ \@@_datareader:n { #1 }
+}
+%</ct|bmt|pt|rp|le|ex>%
+% \end{macrocode}
+%
+% We will fill the dictionary from the generic data file (for elements
+% that should not be translated, currently empty) and the language
+% specific data files (for elements that can be translated).
+%
+% To this end, we use the following parsing infrastructure:
+% \begin{macrocode}
+%<*ct|bmt|pt|rp|le|ex>
+\cs_new_nopar:Npn \@@_dataparser:w #1 = #2!! {
+ \tl_set:Nn \l_tmpa_tl {#1}
+ \tl_set:Nn \l_tmpb_tl {#2}
+ \tl_trim_spaces:N \l_tmpa_tl
+ \tl_trim_spaces:N \l_tmpb_tl
+ \prop_gput:Nxx \g_@@_data_prop { \l_tmpa_tl} { \l_tmpb_tl }
+}
+%</ct|bmt|pt|rp|le|ex>
+% \end{macrocode}
+% invoked by the following data file reader:
+% \begin{macrocode}
+%<*ct|bmt|pt|rp|le|ex>
+\ior_new:N \l_@@_data_ior
+\cs_new_nopar:Nn \@@_datareader:n {
+ \ior_open:Nn \l_@@_data_ior { uantwerpendocs-#1.data }
+ \ior_str_map_inline:Nn \l_@@_data_ior {
+ \regex_match:nnTF {=} {##1} {
+ \@@_dataparser:w ##1!!
+ }
+ {}
+ }
+ \ior_close:N \l_@@_data_ior
+}
+%</ct|bmt|pt|rp|le|ex>
+% \end{macrocode}
+% By default, we load the generic (not yet!) and the english data file:
+% \begin{macrocode}
+%<*ct|bmt|pt|rp|le|ex>
+\clist_map_inline:nn {en} {
+ \@@_datareader:n { #1 }
+}
+%\prop_show:N \g_@@_data_prop
+\ExplSyntaxOff
+%</ct|bmt|pt|rp|le|ex>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*ct|bmt|pt|rp|le|ex>
+\newcommand*\@logo{\logopos}
\AtBeginDocument{
+ \makeatother
\@ifpackageloaded{babel}{
+ \addto\captionsenglish{%
+ \uantwerpendocspropread{en}
+ }
\addto\captionsdutch{%
- \renewcommand\uaname{Universiteit Antwerpen}
- \renewcommand\arrname{Alle rechten voorbehouden}
- \renewcommand\orname{van}
- \renewcommand\domainname{uantwerpen.be}
- \renewcommand\subjectname{Onderwerp}%
- \renewcommand\datename{Datum}%
- \renewcommand\academicyearname{Academiejaar}
- \renewcommand\masterthesisname{Masterproef}
- \renewcommand\bachelorthesisname{Bachelorproef}
- \renewcommand\supervisorsname{Promotoren}
- \renewcommand\juryname{Jury}
- \renewcommand\jurymembersname{Leden}
- \renewcommand\jurychairmanname{Voorzitter}
- \renewcommand\bmthesisname{Proefschrift tot het behalen van de
- graad van}
- \renewcommand\pthesisnamei{Proefschrift voorgelegd tot het
- behalen van de graad van}
- \renewcommand\pthesisnameii{aan de \uaname{} te
- verdedigen door}
- \renewcommand\faccpg{
- \renewcommand\@faculty{Centrum Pieter Gillis}
- \renewcommand\@logo{Logos/logo-uantwerpen-ua-nl-cmyk-pos}}
- \renewcommand\facfbd{
- \renewcommand\@faculty{
- Faculteit Farmaceutische, Biomedische en Diergeneeskundige
- Wetenschappen}
- \renewcommand\@logo{Logos/logo-uantwerpen-fbd-nl-cmyk-pos}}
- \renewcommand\facggw{
- \renewcommand\@faculty{Faculteit Geneeskunde en
- Gezondheidswetenschappen}
- \renewcommand\@logo{Logos/logo-uantwerpen-ggw-nl-cmyk-pos}}
- \renewcommand\insiob{
- \renewcommand\@faculty{Instituut voor Ontwikkelingsbeleid- en
- beheer}
- \renewcommand\@logo{Logos/logo-uantwerpen-iob-nl-cmyk-pos}}
- \renewcommand\asoe{
- \renewcommand\@faculty{Antwerp School of Education}
- \renewcommand\@logo{Logos/logo-uantwerpen-ua-nl-cmyk-pos}}
- \renewcommand\faclw{\renewcommand\@faculty{Faculteit
- Letteren en Wijsbegeerte}
- \renewcommand\@logo{Logos/logo-uantwerpen-lw-nl-cmyk-pos}}
- \renewcommand\facow{
- \renewcommand\@faculty{Faculteit Ontwerpwetenschappen}
- \renewcommand\@logo{Logos/logo-uantwerpen-ow-nl-cmyk-pos}}
- \renewcommand\facsw{
- \renewcommand\@faculty{Faculteit Sociale Wetenschappen}
- \renewcommand\@logo{Logos/logo-uantwerpen-sw-nl-cmyk-pos}}
- \renewcommand\facre{
- \renewcommand\@faculty{Faculteit Rechten}
- \renewcommand\@logo{Logos/logo-uantwerpen-re-nl-cmyk-pos}}
- \renewcommand\facbe{
- \renewcommand\@faculty{Faculteit Bedrijfswetenschappen en Economie}
- \renewcommand\@logo{Logos/logo-uantwerpen-be-nl-cmyk-pos}}
- \renewcommand\facti{
- \renewcommand\@faculty{Faculteit Toegepaste
- Ingenieurswetenschappen}
- \renewcommand\@logo{Logos/logo-uantwerpen-ti-nl-cmyk-pos}}
- \renewcommand\facwe{
- \renewcommand\@faculty{Faculteit Wetenschappen}
- \renewcommand\@logo{Logos/logo-uantwerpen-we-nl-cmyk-pos}}
- \renewcommand\weightname{Gewicht}
+ \uantwerpendocspropread{nl}
}
}
{}
+ \makeatletter
}
-%</ct|bmt|pt|le|ex>
+%</ct|bmt|pt|rp|le|ex>
% \end{macrocode}
%
+% The English data can be found below:
+%<*endata>
+org-be = Faculty of Business and Economics
+org-fbd = Faculty of Pharmaceutical, Biomedical and Veterinary Sciences
+org-ggw = Medicine and Health Sciences
+org-lw = Faculty of Arts
+org-ow = Faculty of Design Sciences
+org-re = Faculty of Law
+org-sw = Faculty of Social Sciences
+org-ti = Faculty of Applied Engineering
+org-we = Faculty of Science
+org-iob = Institute of Development Policy
+org-ua = University of Antwerp
+arr = All rights reserved
+of = of
+domainname = uantwerp.be
+datename = Date
+subjectname = Subject
+acyearname = Academic year
+baname = Bachelor of Science
+spname = Switching Programme
+vpname = Preparatory Programme
+maname = Master of Science
+phdname = PhD
+thesisname = Thesis
+mthesisname = Master's thesis
+bthesisname = Bachelor's thesis
+lecturername = Lecturer
+lecturersname = Lecturers
+supervisorname = Supervisor
+supervisorsname = Supervisors
+examname = Exam --- Examen
+seriesname = Series
+lastname = Last name --- Naam
+firstname = First name --- Voornaam
+docketname = Docket No. --- Rolnr.
+roomname = Room --- Lokaal
+roomsname = Rooms --- Lokalen
+examstartname = Start --- Begin
+examendname = End --- Einde
+examdurationname = Exam duration --- Duur van het examen
+juryname = Jury
+jurymembersname = Members
+jurychairmanname = Chairman
+bmthesisname = Thesis to obtain the degree of
+pthesisnamei = Thesis submitted in fulfilment of the requirements for the degree of
+pthesisnameii = at University of Antwerp
+weightname = Weight
+%</endata>
+%
+% The Dutch data can be found below:
+%<*nldata>
+org-be = Faculteit Bedrijfswetenschappen en Economie
+org-fbd = Faculteit Farmaceutische, Biomedische en Diergeneeskundige Wetenschappen
+org-ggw = Faculteit Geneeskunde en Gezondheidswetenschappen
+org-lw = Faculteit Letteren en Wijsbegeerte
+org-ow = Faculteit Ontwerpwetenschappen
+org-re = Faculteit Rechten
+org-sw = Faculteit Sociale Wetenschappen
+org-ti = Faculteit Toegepaste Ingenieurswetenschappen
+org-we = Faculteit Wetenschappen
+org=iob = Instituut voor Ontwikkelingsbeleid- en beheer
+org-ua = Universiteit Antwerpen
+arr = Alle rechten voorbehouden
+of = van
+domainname = uantwerpen.be
+datename = Onderwerp
+subjectname = Datum
+acyearname = Academiejaar
+baname = Bachelor of Science
+spname = Schakelprogramma
+vpname = Voorbereidingsprogramma
+maname = Master of Science
+phdname = Doctoraat
+thesisname = Afstudeerproef
+mthesisname = Masterproef
+bthesisname = Bachelorproef
+lecturername = Titularis
+lecturersname = Titularissen
+supervisorname = Promotor
+supervisorsname = Promotoren
+examname = Examen
+seriesname = Reeks
+lastname = Naam
+firstname = Voornaam
+docketname = Rolnr.
+roomname = Lokaal
+roomsname = Lokalen
+examstartname = Begin
+examendname = Einde
+examdurationname = Duur van het examen
+juryname = Jury
+jurymembersname = Leden
+jurychairmanname = Voorzitter
+bmthesisname = Proefschrift tot het behalen van de graad van
+pthesisnamei = Proefschrift voorgelegd tot het behalen van de graad van
+pthesisnameii = aan de Universiteit Antwerpen te verdedigen door
+weightname = Gewicht
+%</nldata>
+
% \subsection{Tags}
%
% \begin{macro}{\facultyacronym}
@@ -2068,53 +2384,23 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
%
% \changes{v3.0}{2021/02/05}{Changed REC in RE, TEW in BE and WET in WE
% (according to official naming scheme)}
+% \changes{v4.0}{2021/05/01}{This function is now obsolete}
% \begin{macrocode}
-%<*ct|bmt|pt|le|ex>
-\newcommand{\@facultyacronym}{~}
-\newcommand{\facultyacronym}[1]{
- \renewcommand{\@facultyacronym}{#1}
- \AtBeginDocument{
- \ifthenelse{\equal{#1}{CPG}}{\faccpg}{
- \ifthenelse{\equal{#1}{FBD}}{\facfbd}{
- \ifthenelse{\equal{#1}{GGW}}{\facggw}{
- \ifthenelse{\equal{#1}{IOB}}{\insiob}{
- \ifthenelse{\equal{#1}{ASoE}}{\asoe}{
- \ifthenelse{\equal{#1}{LW}}{\faclw}{
- \ifthenelse{\equal{#1}{OW}}{\facow}{
- \ifthenelse{\equal{#1}{SW}}{\facsw}{
- \ifthenelse{\equal{#1}{RE}}{\facre}{
- \ifthenelse{\equal{#1}{BE}}{\facbe}{
- \ifthenelse{\equal{#1}{TI}}{\facti}{
- \ifthenelse{\equal{#1}{WE}}{\facwe}{
- \errmessage{Error: wrong faculty acronym; choose one of CPG, FBD, GGW,
- IOB, ASoE, LW, OW, SW, RE, BE, TI, WE}}}}}}}}}}}}}}
-}
-%</ct|bmt|pt|le|ex>
+%<*ct|bmt|pt|rp|le|ex>
+\newcommand*{\facultyacronym}[1]{
+ \PackageError{uantwerpendocs}
+ {The '\protect\facultyacronym{}' macro is no longer available. Use
+ your faculty abbreviation in lowercase as class options instead}
+ {The interface of uantwerpendocs 4.0 has been changed. See
+ the uantwerpendocs manual under section '5.2 The class options explained'}
+}
+%</ct|bmt|pt|rp|le|ex>
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\title}
% The |title| tag is native to \LaTeX{}. It sets the |\@title| tag
% that will be used on the title page.
-% However, in view of the qr trouble, we fiddle a little with it.
-% In case the title contains accented characters, you also
-% need to provide a qr version in full unicode (so without the
-% traditional \LaTeX{} accented characters.)
-%
-% \begin{macrocode}
-%<*ct>
-\newcommand{\@qrtitle}{}
-\renewcommand{\title}[1]{%
- \renewcommand\@title{#1}
- \ifx\@qrtitle\@emptymacro
- \renewcommand\@qrtitle{#1}
- \fi
-}
-\newcommand{\qrtitle}[1]{%
- \renewcommand\@qrtitle{#1}
-}
-%</ct>
-% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\subtitle}
@@ -2123,35 +2409,36 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% optional by adding default space value}
% This macro sets the |\@subtitle| tag that later will be used on
% the title page, in the header/footer and to set the appropriate
-% |hyperref| tag.
+% |hyperref| tag (if it is loaded).
% \begin{macrocode}
%<*bmt>
-\newcommand{\@subtitle}{Master's thesis}
+\ExplSyntaxOn
+\NewDocumentCommand{\@subtitle}{m}{
+ \tl_new:N \l_@@_degree
+ \tl_set:Nx \l_@@_degree { \tl_head:N \@degree }
+ \tl_if_eq:NnTF \l_@@_degree { B } {\uantwerpendocsprop{bthesisname}} {
+ \tl_if_eq:NnTF \l_@@_degree { M } {\uantwerpendocsprop{mthesisname}}
+ {\uantwerpendocsprop{thesisname}}}
+}
+\ExplSyntaxOff
%</bmt>
-%<*ct|pt>
-\newcommand{\@subtitle}{~}
-\newcommand{\@qrsubtitle}{}
-\newcommand{\subtitle}[1]{%
- \renewcommand\@subtitle{#1}
- \ifx\@qrsubtitle\@emptymacro
- \renewcommand\@qrsubtitle{#1}
- \fi
-}
-\newcommand{\qrsubtitle}[1]{%
- \renewcommand\@qrsubtitle{#1}
+%<*ct|pt|rp>
+\newcommand*{\@subtitle}{~}
+\newcommand*{\subtitle}[1]{%
+ \renewcommand*\@subtitle{#1}
}
-%</ct|pt>
+%</ct|pt|rp>
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\shorttitle}
% This macro sets the |\@shorttitle| tag that later will be used
-% in the |uantwerpenexam| class.
+% in the |exam| class.
% \begin{macrocode}
%<*ex>
-\newcommand{\@shorttitle}{}
-\newcommand{\shorttitle}[1]{%
- \renewcommand\@shorttitle{#1}
+\newcommand*{\@shorttitle}{}
+\newcommand*{\shorttitle}[1]{%
+ \renewcommand*\@shorttitle{#1}
}
%</ex>
% \end{macrocode}
@@ -2160,26 +2447,6 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% \begin{macro}{\author}
% The |author| tag is native to \LaTeX{}. It sets the |\@author|
% tag that will be used on the title page.
-% However, in view of the qr trouble, we fiddle a little with it for
-% the |uantwerpencoursetext| class.
-% In case the title contains accented characters, you also
-% need to provide a qr version in full unicode (so without the
-% traditional \LaTeX{} accented characters.)
-%
-% \begin{macrocode}
-%<*ct>
-\newcommand{\@qrauthor}{}
-\renewcommand{\author}[1]{%
- \renewcommand\@author{#1}
- \ifx\@qrauthor\@emptymacro
- \renewcommand\@qrauthor{#1}
- \fi
-}
-\newcommand{\qrauthor}[1]{%
- \renewcommand\@qrauthor{#1}
-}
-%</ct>
-% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\courseversion}
@@ -2187,8 +2454,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% on the title page and in the header/footer.
% \begin{macrocode}
%<*ct>
-\newcommand{\@courseversion}{}
-\newcommand{\courseversion}[1]{\renewcommand{\@courseversion}{#1}}
+\newcommand*{\@courseversion}{}
+\newcommand*{\courseversion}[1]{\renewcommand*{\@courseversion}{#1}}
%</ct>
% \end{macrocode}
% \end{macro}
@@ -2197,10 +2464,10 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% This macro sets the |\@versionyear| tag that later will be used on
% the title page and in the copyright message.
% \begin{macrocode}
-%<*ct>
-\newcommand{\@versionyear}{}
-\newcommand{\versionyear}[1]{\renewcommand{\@versionyear}{#1}}
-%</ct>
+%<*ct|rp>
+\newcommand*{\@versionyear}{}
+\newcommand*{\versionyear}[1]{\renewcommand*{\@versionyear}{#1}}
+%</ct|rp>
% \end{macrocode}
% \end{macro}
%
@@ -2210,12 +2477,12 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% \changes{v2.5}{}{changed publisher to universitas in default}
% \begin{macrocode}
%<*ct>
-\newcommand{\@publisher}{Universitas Cursusdienst\\
- Prinsesstraat 16\\
- 2000 Antwerpen\\
- T +32 3 233 23 73\\
+\newcommand{\@publisher}{Universitas Cursusdienst |
+ Prinsesstraat 16 |
+ 2000 Antwerpen |
+ T +32 3 233 23 73 |
E info@cursusdienst.be}
-\newcommand{\publisher}[1]{\renewcommand{\@publisher}{#1}}
+\newcommand*{\publisher}[1]{\renewcommand*{\@publisher}{#1}}
%</ct>
% \end{macrocode}
% \end{macro}
@@ -2225,75 +2492,57 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% the title page.
% \begin{macrocode}
%<*ct>
-\newcommand{\@publishercode}{}
-\newcommand{\publishercode}[1]{\renewcommand{\@publishercode}{#1}}
+\newcommand*{\@publishercode}{}
+\newcommand*{\publishercode}[1]{\renewcommand*{\@publishercode}{#1}}
%</ct>
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\lecturer}
-% This macro sets many |\@lecturer| tags (max. 4) that later will be used on
-% the title page. If there is only one teaching lecturer one can
-% use the convenient shorthand without counter.
-% In case the lecturer's name contains accented characters, you also
-% need to provide a qr version in full unicode (so without the
-% traditional \LaTeX{} accented characters.)
+% This macro adds lecturers (Dutch: titularissen) to the course
+% notes.
+% Use the macro multiple times for multiple lecturers. The order
+% will be preserved.
+% Note that as of v4.0 all lecturers are specified using the same
+% macro!
% \begin{macrocode}
-%<*ct>
-\newcommand{\@lectureri}{}
-\newcommand{\@lecturerii}{}
-\newcommand{\@lectureriii}{}
-\newcommand{\@lectureriv}{}
-\newcommand{\@qrlectureri}{}
-\newcommand{\@qrlecturerii}{}
-\newcommand{\@qrlectureriii}{}
-\newcommand{\@qrlectureriv}{}
-\newcommand{\lecturer}[1]{
- \renewcommand{\@lectureri}{#1}
- \ifx\@qrlectureri\@emptymacro
- \renewcommand\@qrlectureri{#1}
- \fi
+%<*ct|ex>
+\ExplSyntaxOn
+\seq_new:N \g_@@_lecturers
+\cs_new:Nn \@@_addlecturer:n {
+ \seq_gpush:Nn \g_@@_lecturers { #1 }
}
-\newcommand{\qrlecturer}[1]{
- \renewcommand\@qrlectureri{#1}
+\NewDocumentCommand{\lecturer}{m}{
+ \@@_addlecturer:n { #1 }
}
-\newcommand{\lectureri}[1]{
- \renewcommand{\@lectureri}{#1}
- \ifx\@qrlectureri\@emptymacro
- \renewcommand\@qrlectureri{#1}
- \fi
-}
-\newcommand{\qrlectureri}[1]{
- \renewcommand\@qrlectureri{#1}
-}
-\newcommand{\lecturerii}[1]{
- \renewcommand{\@lecturerii}{#1}
- \ifx\@qrlecturerii\@emptymacro
- \renewcommand\@qrlecturerii{#1}
- \fi
+\NewDocumentCommand{\jointlecturers}{m}{
+ \seq_use:Nn \g_@@_lecturers { #1 }
}
-\newcommand{\qrlecturerii}[1]{
- \renewcommand\@qrlecturerii{#1}
+\NewDocumentCommand{\lecturersname}{}{
+ \if_int_compare:w \seq_count:N \g_@@_lecturers > 1
+ \uantwerpendocsprop{lecturersname}
+ \else:
+ \uantwerpendocsprop{lecturername}
+ \fi:
}
-\newcommand{\lectureriii}[1]{
- \renewcommand{\@lectureriii}{#1}
- \ifx\@qrlectureriii\@emptymacro
- \renewcommand\@qrlectureriii{#1}
- \fi
-}
-\newcommand{\qrlectureriii}[1]{
- \renewcommand\@qrlectureriii{#1}
-}
-\newcommand{\lectureriv}[1]{
- \renewcommand{\@lectureriv}{#1}
- \ifx\@qrlectureriv\@emptymacro
- \renewcommand\@qrlectureriv{#1}
- \fi
-}
-\newcommand{\qrlectureriv}[1]{
- \renewcommand\@qrlectureriv{#1}
+\AtBeginDocument{
+ \seq_greverse:N \g_@@_lecturers
}
-%</ct>
+
+\ExplSyntaxOff
+%</ct|ex>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\extra}
+% The |extra| tag allows to specify some extra comment (e.g. the
+% nature of the document) in the bottom bar on the title page).
+% \begin{macrocode}
+%<*rp>
+\newcommand\@extra{}
+\newcommand\extra[1]{\renewcommand\@extra{#1}}
+%</rp>
% \end{macrocode}
% \end{macro}
%
@@ -2301,38 +2550,59 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% \begin{macro}{\affiliation}
% The |affiliation| tag allows to specify the affiliation of the author.
% \begin{macrocode}
-%<*pt>
-\newcommand\@affiliation{\errmessage{Please, define the affiliation of
- the author using the \textbackslash{}affiliation command in the
- preamble of your document.}}
+%<*pt|rp>
+\newcommand\@affiliation{
+ \PackageError{uantwerpendocs}
+ {Please, define the affiliation of the author using the
+ '\protect\affiliation{}' command in the preamble of your
+ document.}
+ {See the uantwerpendocs manual}
+}
\newcommand\affiliation[1]{\renewcommand\@affiliation{#1}}
-%</pt>
+%</pt|rp>
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\supervisor}
-% This macro sets many |\@supervisor| tags (max. 4) that later will be used on
-% the title page.
+% This macro allows to specify one or more supervisors with their
+% affiliation. This can be done by invoking the macro as many times
+% as needed.
+% Note that as of v4.0 all supervisors are specified using the same
+% macro!
% \begin{macrocode}
%<*bmt|pt>
-\newcommand\@supervisori{\errmessage{Please define a supervisor of
- your thesiswork using the \textbackslash{}supervisori to iv
- commands} in the preamble of your document.}
-\newcommand\@supervisoriaff{}
-\newcommand\@supervisorii{}
-\newcommand\@supervisoriiaff{}
-\newcommand\@supervisoriii{}
-\newcommand\@supervisoriiiaff{}
-\newcommand\@supervisoriv{}
-\newcommand\@supervisorivaff{}
-\newcommand{\supervisori}[2]{
- \renewcommand\@supervisori{#1}\renewcommand\@supervisoriaff{#2}}
-\newcommand{\supervisorii}[2]{
- \renewcommand\@supervisorii{#1}\renewcommand\@supervisoriiaff{#2}}
-\newcommand{\supervisoriii}[2]{
- \renewcommand\@supervisoriii{#1}\renewcommand\@supervisoriiiaff{#2}}
-\newcommand{\supervisoriv}[2]{
- \renewcommand\@supervisoriv{#1}\renewcommand\@supervisorivaff{#2}}
+\ExplSyntaxOn
+
+\seq_new:N \g_@@_supervisors
+\seq_new:N \g_@@_supervisorswithaffiliation
+\cs_new:Nn \@@_addsupervisor:nn {
+ \seq_gpush:Nn \g_@@_supervisors { #1 }
+ \seq_gpush:Nn \g_@@_supervisorswithaffiliation { #1,~#2 }
+}
+\NewDocumentCommand{\supervisor}{mm}{
+ \@@_addsupervisor:nn { #1 } { #2 }
+}
+\NewDocumentCommand{\jointsupervisors}{m}{
+ \seq_use:Nn \g_@@_supervisors { #1 }
+}
+\NewDocumentCommand{\jointsupervisorswithaffiliation}{m}{
+ \seq_use:Nn \g_@@_supervisorswithaffiliation { #1 }
+}
+\NewDocumentCommand{\supervisorsname}{}{
+ \if_int_compare:w \seq_count:N \g_@@_supervisors > 1
+ \uantwerpendocsprop{supervisorsname}
+ \else:
+ \if_int_compare:w \seq_count:N \g_@@_supervisors = 1
+ \uantwerpendocsprop{supervisorname}
+ \else:
+ \fi:
+ \fi:
+}
+\AtBeginDocument{
+ \seq_greverse:N \g_@@_supervisors
+ \seq_greverse:N \g_@@_supervisorswithaffiliation
+}
+\ExplSyntaxOff
%</bmt|pt>
% \end{macrocode}
% \end{macro}
@@ -2342,289 +2612,173 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% the data page.
% \begin{macrocode}
%<*pt>
-\newcommand{\@jurychairman}{\errmessage{Please define a chairman of the jurya
- using the \textbackslash{}jurychairman command in the preamble of
- your document.}}
-\newcommand{\@jurychairmanaff}{}
-\newcommand{\jurychairman}[2]{
- \renewcommand{\@jurychairman}{#1}\renewcommand{\@jurychairmanaff}{#2}}
+\newcommand*{\@jurychairman}{
+ \PackageError{uantwerpendocs}
+ {Please, define a chairman of the jury using the
+ '\protect\jurychairman{}' command in the preamble of your
+ document.}
+ {See the uantwerpendocs manual}
+}
+\newcommand*{\@jurychairmanaff}{}
+\newcommand*{\jurychairman}[2]{
+ \renewcommand*{\@jurychairman}{#1}\renewcommand*{\@jurychairmanaff}{#2}}
%</pt>
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\jurymember}
-% This macro sets many |\@jurymember| tags (max. 6) that later will be used on
-% the data page.
+% This macro allows for the registration of jury members and their
+% affiliation. This can be done by invoking the macro as many times
+% as needed.
+% Note that as of v4.0 all jurymembers are specified using the same
+% macro!
+%
% \begin{macrocode}
-%<*pt>
-\newcommand{\@jurymemberi}{\errmessage{Please define jury members
- using the \textbackslash{}jurymemberi to vi commands in the
- preamble of your document.}}
-\newcommand\@jurymemberiaff{}
-\newcommand\@jurymemberii{}
-\newcommand\@jurymemberiiaff{}
-\newcommand\@jurymemberiii{}
-\newcommand\@jurymemberiiiaff{}
-\newcommand\@jurymemberiv{}
-\newcommand\@jurymemberivaff{}
-\newcommand\@jurymemberv{}
-\newcommand\@jurymembervaff{}
-\newcommand\@jurymembervi{}
-\newcommand\@jurymemberviaff{}
-\newcommand{\jurymemberi}[2]{
- \renewcommand\@jurymemberi{#1}\renewcommand\@jurymemberiaff{#2}}
-\newcommand{\jurymemberii}[2]{
- \renewcommand\@jurymemberii{#1}\renewcommand\@jurymemberiiaff{#2}}
-\newcommand{\jurymemberiii}[2]{
- \renewcommand\@jurymemberiii{#1}\renewcommand\@jurymemberiiiaff{#2}}
-\newcommand{\jurymemberiv}[2]{
- \renewcommand\@jurymemberiv{#1}\renewcommand\@jurymemberivaff{#2}}
-\newcommand{\jurymemberv}[2]{
- \renewcommand\@jurymemberv{#1}\renewcommand\@jurymembervaff{#2}}
-\newcommand{\jurymembervi}[2]{
- \renewcommand\@jurymembervi{#1}\renewcommand\@jurymemberviaff{#2}}
+%<*pt>
+\ExplSyntaxOn
+\seq_new:N \g_@@_jurymemberswithaffiliation
+\cs_new:Nn \@@_addjurymember:nn {
+ \seq_gpush:Nn \g_@@_jurymemberswithaffiliation { #1,~#2 }
+}
+\NewDocumentCommand{\jurymember}{mm}{
+ \@@_addjurymember:nn { #1 } { #2 }
+}
+\NewDocumentCommand{\jointjurymembers}{m}{
+ \seq_use:Nn \g_@@_jurymemberswithaffiliation { #1 }
+}
+\AtBeginDocument{
+ \seq_greverse:N \g_@@_jurymemberswithaffiliation
+}
+\ExplSyntaxOff
%</pt>
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\phddegree}
-% This macro sets the |\@phddegree| tag that later will
-% be used on the title pages.
+% This macro has been discontinued. Use |\degree| instead.
%
% \begin{macrocode}
%<*pt>
-\newcommand\@phddegree{\errmessage{Please, specify the offical PhD
- degree description using the \textbackslash{}phddegree macro in
- the preamble of your document.}}
-\newcommand\phddegree[1]{\renewcommand\@phddegree{#1}}
+\newcommand*\phddegree{
+ \PackageError{uantwerpendocs}
+ {The '\protect\phddegree{}' macro is no longer available. Use
+ '\protect\degree{}' instead}
+ {The interface of uantwerpendocs 4.0 has been changed. Use the
+ '\protect\degree' macro to specify your degree in full text (see
+ the uantwerpendocs manual)'}
+}
%</pt>
+%
+%
+% \begin{macro}{\degree}
+% This macro sets the |\@degree| tag that later will
+% be used on the title pages.
+%
+% \begin{macrocode}
+%<*bmt|pt|ct|ex>
+\newcommand*\@degree{
+ \PackageError{uantwerpendocs}
+ {Please, specify the offical degree description using
+ the '\protect\degree{}' macro in the preamble of your document.}
+ {See the uantwerpendocs manual}
+}
+\newcommand*\degree[1]{\renewcommand*\@degree{#1}}
+%</bmt|pt|ct|ex>
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\programme}
-% This macro sets the |\@programme| tags that later will
-% be used on the title page. The involved way of repeatedly calling
-% the renewcommand to set the tags is required for inclusion of the
-% data as QR data.
+% This macro is no longer in use.
+%
+% \changes{v2.5}{}{Shortened 'voorbereidingsprogramma' and
+% 'schakelprogramma' tags}
+% \changes{v4.0}{}{Discontinued, use |\textbackslash{}degree\{\}| instead}
%
-% \changes{v2.5}{}{Shortened 'voorbereidingsprogramma' and 'schakelprogramma' tags}
% \begin{macrocode}
%<*ct|pt|ex>
-\newcommand{\@programmet}{} % type
-\newcommand{\@programmec}{} % class
-\newcommand{\@programmecqr}{} % class for qr code
-\newcommand{\@programmes}{} % class
-\newcommand{\@programmeq}{} % qualifier
-\newcommand{\programme}[3]{%
- \ifthenelse{\equal{#1}{BA}}%
- {\renewcommand{\@programmet}{Bachelor of Science in de }}{%
- \ifthenelse{\equal{#1}{MA}}%
- {\renewcommand{\@programmet}{Master of Science in de }}{%
- \ifthenelse{\equal{#1}{PHD}}%
- {\renewcommand{\@programmet}{Doctor in de }}{%
- \ifthenelse{\equal{#1}{VP}}%
- {\renewcommand{\@programmet}{Voorbereidingsprogramma in de }}{%
- \ifthenelse{\equal{#1}{SP}}%
- {\renewcommand{\@programmet}{Schakelprogramma in de }}{%
- \ifthenelse{\equal{#1}{FREE}}%
- {}{
- \errmessage{Error in 1st arg of macro programme[3]: invalid
- programme type!}}}}}}}%
- %
- \ifthenelse{\equal{#2}{IW}}%
- {\renewcommand{\@programmec}{industri\"ele wetenschappen}
- \renewcommand{\@programmecqr}{industriële wetenschappen}}{
- \ifthenelse{\equal{#2}{}}%
- {}{
- \errmessage{{Error in 2nd arg of macro programme[3]: invalid
- programme class! }}}}%
- %
- \ifthenelse{\equal{#3}{BK}}%
- {\renewcommand{\@programmeq}{Bouwkunde}}{%
- \ifthenelse{\equal{#3}{CH}}%
- {\renewcommand{\@programmeq}{Chemie}}{%
- \ifthenelse{\equal{#3}{BCH}}%
- {\renewcommand{\@programmeq}{Biochemie}}{%
- \ifthenelse{\equal{#3}{EM}}%
- {\renewcommand{\@programmeq}{Elektromechanica}}{%
- \ifthenelse{\equal{#3}{EI}}%
- {\renewcommand{\@programmeq}{Elektronica-ICT}}{%
- \ifthenelse{\equal{#3}{}}%
- {}{%
- \ifthenelse{\equal{#1}{FREE}}
- {\renewcommand{\@programmeq}{#3}}{
- \errmessage{Error in 3rd arg to macro programme[3]: invalid
- programme qualifier}}}}}}}}%
- %
- \ifthenelse{\equal{#2}{IW}\and\not\equal{#3}{}}
- {\renewcommand{\@programmes}{: }}{}
+\newcommand*{\programme}[3]{
+ \PackageError{uantwerpendocs}
+ {The '\protect\programme{}{}{}' macro is no longer available. Use
+ '\protect\degree{}' instead}
+ {The interface of uantwerpendocs 4.0 has been changed. Use the
+ '\protect\degree' macro to specify your degree in full text (see
+ the uantwerpendocs manual)'}
}
%</ct|pt|ex>
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\course}
-% Four the |coursetext| class, this macro sets many |\@coursecode|
-% and |\@course| tags (max. 4) that later will be used on the title
-% page. If there is only one course code one can use the convenient
-% shorthand without counter.
+% Four the |coursetext| class, this macro sets one or more
+% courses.
+% and |\@course| tags that later will be used on the title
+% page.
+% Note that as of v4.0 all courses are specified using the same
+% macro!
% \begin{macrocode}
-%<*ct>
-\newcommand{\@coursecodei}{}
-\newcommand{\@coursecodeii}{}
-\newcommand{\@coursecodeiii}{}
-\newcommand{\@coursecodeiv}{}
-\newcommand{\@coursei}{}
-\newcommand{\@courseii}{}
-\newcommand{\@courseiii}{}
-\newcommand{\@courseiv}{}
-\newcommand{\@qrcoursei}{}
-\newcommand{\@qrcourseii}{}
-\newcommand{\@qrcourseiii}{}
-\newcommand{\@qrcourseiv}{}
-\newcommand{\course}[2]{
- \renewcommand{\@coursecodei}{#1}
- \renewcommand{\@coursei}{#2}
- \ifx\@qrcoursei\@emptymacro
- \renewcommand{\@qrcoursei}{#2}
- \fi
-}
-\newcommand{\qrcourse}[1]{
- \renewcommand{\@qrcoursei}{#1}
-}
-\newcommand{\coursei}[2]{
- \renewcommand{\@coursecodei}{#1}
- \renewcommand{\@coursei}{#2}
- \ifx\@qrcoursei\@emptymacro
- \renewcommand{\@qrcoursei}{#2}
- \fi
-}
-\newcommand{\qrcoursei}[1]{
- \renewcommand{\@qrcoursei}{#1}
-}
-\newcommand{\courseii}[2]{
- \renewcommand{\@coursecodeii}{#1}
- \renewcommand{\@courseii}{#2}
- \ifx\@qrcourseii\@emptymacro
- \renewcommand{\@qrcourseii}{#2}
- \fi
-}
-\newcommand{\qrcourseii}[1]{
- \renewcommand{\@qrcourseii}{#1}
-}
-\newcommand{\courseiii}[2]{
- \renewcommand{\@coursecodeiii}{#1}
- \renewcommand{\@courseiii}{#2}
- \ifx\@qrcourseiii\@emptymacro
- \renewcommand{\@qrcourseiii}{#2}
- \fi
-}
-\newcommand{\qrcourseiii}[1]{
- \renewcommand{\@qrcourseiii}{#1}
-}
-\newcommand{\courseiv}[2]{
- \renewcommand{\@coursecodeiv}{#1}
- \renewcommand{\@courseiv}{#2}
- \ifx\@qrcourseiv\@emptymacro
- \renewcommand{\@qrcourseiv}{#2}
- \fi
+%<*ct>
+\newcommand*\coursei[2]{
+ PackageError{uantwerpendocs}
+ {The '\protect\coursei{}' macro is no longer available. Use
+ '\protect\course{}' instead (multiple times if you need to)}
+ {The interface of uantwerpendocs 4.0 has been changed. Use the
+ '\protect\course macro instead of the \protect\coursei,
+ \protect\courseii, \protect\courseiii and \protect\courseiv macros
+ that existed earlier (see
+ the uantwerpendocs manual)'}
+}
+\ExplSyntaxOn
+\seq_new:N \g_@@_courseswithcodes
+\cs_new:Nn \@@_addcourse:nn {
+ \seq_gpush:Nn \g_@@_courseswithcodes{ \texttt{#1}~#2 }
+}
+\NewDocumentCommand{\course}{mm}{
+ \@@_addcourse:nn { #1 } { #2 }
+}
+\NewDocumentCommand{\jointcourseswithcodes}{m}{
+ \seq_use:Nn \g_@@_courseswithcodes { #1 }
}
-\newcommand{\qrcourseiv}[1]{
- \renewcommand{\@qrcourseiv}{#1}
+\AtBeginDocument{
+ \seq_greverse:N \g_@@_courseswithcodes
}
+\ExplSyntaxOff
%</ct>
-% \end{macrcode}
+% \end{macrocode}
% For the |exam| class (assuming that an exam only holds for a
% single course), the situation is simple and we assume only a
-% single coursecode and course name. We also don't need any of the
-% QR stamp stuff.
+% single coursecode and course name.
% \begin{macrocode}
%<*ex>
-\newcommand{\@coursecodei}{}
-\newcommand{\@coursei}{}
-\newcommand{\course}[2]{
- \renewcommand{\@coursecodei}{#1}
- \renewcommand{\@coursei}{#2}
+\newcommand*{\@coursecode}{}
+\newcommand*{\@course}{}
+\newcommand*{\course}[2]{
+ \renewcommand*{\@coursecode}{#1}
+ \renewcommand*{\@course}{#2}
}
%</ex>
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\diploma}
-% This macro sets the |\@diplomalevel| and |\@diploma| tags that
-% later will be used on the title page.
+% This macro sets the official diploma description into the
+% |\@diploma| tag that later will be used on the title page.
% \changes{v1.1}{2013/05/21}{Fixed typo on programme's name
% (e-umlaut)}
% \changes{v1.6}{2016/02/04}{Added diploma codes}
% \changes{v2.3}{2019/03/27}{Added diploma level}
-% \changes{v2.4}{2019/04/10}{Added code for Master EM without specialization}
+% \changes{v2.4}{2019/04/10}{Added code for Master EM without
+% specialization}
+% \changes{v4.0}{2021/07/11}{Discontinued: removed all diploma codes}
% \begin{macrocode}
%<*bmt|pt>
-\newcommand{\@diplomalevel}{ERROR}
-\newcommand{\@diploma}{ERROR}
-\newcommand{\diploma}[1]{
- \newcommand{\MoS}{Master of Science}
- \newcommand{\MoSIW}{Master of Science in de industri\"ele wetenschappen}
- \newcommand{\BoSIW}{Bachelor of Science in de industri\"ele wetenschappen}
- \newcommand{\MoSTEW}{Master of Science in de toegepaste economische wetenschappen}
- \renewcommand{\@diploma}{
- \ifthenelse{\equal{#1}{BA-IW-BK}}
- {\BoSIW: bouwkunde}{
- \ifthenelse{\equal{#1}{BA-IW-BCH}}
- {\BoSIW: biochemie}{
- \ifthenelse{\equal{#1}{BA-IW-CH}}
- {\BoSIW: chemie}{
- \ifthenelse{\equal{#1}{BA-IW-EI}}
- {\BoSIW: elektronica-ICT}{
- \ifthenelse{\equal{#1}{BA-IW-EM}}
- {\BoSIW: elektromechanica}{
- \ifthenelse{\equal{#1}{MA-IW-BK}}
- {\MoSIW: bouwkunde}{
- \ifthenelse{\equal{#1}{MA-IW-BCH}}
- {\MoSIW: biochemie}{
- \ifthenelse{\equal{#1}{MA-IW-CH}}
- {\MoSIW: chemie}{
- \ifthenelse{\equal{#1}{MA-IW-EI}}
- {\MoSIW: elektronica-ICT}{
- \ifthenelse{\equal{#1}{MA-IW-EI-CPS}}
- {\MoSIW:\\elektronica-ICT, optie
- Cyber-Physical Systems}{
- \ifthenelse{\equal{#1}{MA-IW-EI-IOT}}
- {\MoSIW:\\elektronica-IOT, optie Internet of
- Things}{
- \ifthenelse{\equal{#1}{MA-IW-EI-DAI}}
- {\MoSIW:\\elektronica-IOT, optie Distributed
- Artificial Intelligence}{
- \ifthenelse{\equal{#1}{MA-IW-EM-OE}}
- {\MoSIW:\\elektromechanica, optie Offshore
- Engineering}{
- \ifthenelse{\equal{#1}{MA-IW-EM-EN}}
- {\MoSIW:\\elektromechanica, optie Energie}{
- \ifthenelse{\equal{#1}{MA-IW-EM-OP}}
- {\MoSIW:\\elektromechanica, optie Ontwerp en
- Productie}{
- \ifthenelse{\equal{#1}{MA-IW-EM-AU}}
- {\MoSIW:\\elektromechanica, optie Automatisering}{
- \ifthenelse{\equal{#1}{MA-IW-EM}}
- {\MoSIW:\\elektromechanica}{
- \ifthenelse{\equal{#1}{MA-BE-HI}}
- {\MoS handelsingenieur}{
- \ifthenelse{\equal{#1}{MA-BE-HIBI}}
- {\MoS handelsingenieur in de beleidsinformatica}{
- \ifthenelse{\equal{#1}{MA-BE-EB}}
- {\MoSTEW: economisch beleid}{
- \ifthenelse{\equal{#1}{MA-BE-BK}}
- {\MoSTEW: bedrijfskunde}
- {\errmessage{Error in argument to macro diploma: must be one of
- BA-IW-XXX with XXX one of BK, BCH, CH, EI or EM, or MA-IW-XXX
- with XXX one of BK, BCH, CH, EI, EI-CPS, EI-IOT, EI-DAI,
- EM-OE, EM-AU, EM-OP, EM-EN, MA-BE-YYY with YYY one of HI,
- HIBI, EB, BK! <<}}}}}}}}}}}}}}}}}}}}}}
- }
- \newcommand\thesisname{ERROR}
- \IfSubStr{#1}{MA-}{\renewcommand\thesisname{\masterthesisname}}{}
- \IfSubStr{#1}{BA-}{\renewcommand\thesisname{\bachelorthesisname}}{}
+\newcommand*{\diploma}[1]{
+ \PackageError{uantwerpendocs}
+ {The '\protect\diploma{}' macro is no longer available. Use
+ '\protect\degree{}' instead}
+ {The interface of uantwerpendocs 4.0 has been changed. Use the
+ '\protect\degree' macro to specify your degree in full text (see
+ the uantwerpendocs manual)'}
}
%</bmt|pt>
% \end{macrocode}
@@ -2635,8 +2789,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% be used on the title page.
% \begin{macrocode}
%<*bmt|pt>
-\newcommand\@defensedate{ERROR}
-\newcommand{\defensedate}[1]{\renewcommand\@defensedate{#1}}
+\newcommand*\@defensedate{ERROR}
+\newcommand*{\defensedate}[1]{\renewcommand*\@defensedate{#1}}
%</bmt|pt>
% \end{macrocode}
% \end{macro}
@@ -2646,8 +2800,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% be used on the title page.
% \begin{macrocode}
%<*bmt|pt>
-\newcommand\@defenselocation{Antwerpen}
-\newcommand{\defenselocation}[1]{\renewcommand\@defenselocation{#1}}
+\newcommand*\@defenselocation{Antwerpen}
+\newcommand*{\defenselocation}[1]{\renewcommand*\@defenselocation{#1}}
%</bmt|pt>
% \end{macrocode}
% \end{macro}
@@ -2657,10 +2811,10 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% This macro sets the |\@titlepageimage| tags that later will
% be used on the title page, to include the graphics.
% \begin{macrocode}
-%<*pt>
-\newcommand\@titlepageimage{}
-\newcommand\titlepageimage[1]{\renewcommand\@titlepageimage{#1}}
-%</pt>
+%<*ct|pt|rp>
+\newcommand*\@titlepageimage{}
+\newcommand*\titlepageimage[1]{\renewcommand*\@titlepageimage{#1}}
+%</ct|pt|rp>
% \end{macrocode}
% \end{macro}
%
@@ -2671,8 +2825,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% don't specify one (i.e. don't use this macro).
% \begin{macrocode}
%<*pt>
-\newcommand{\@isbn}{}
-\newcommand{\isbn}[1]{\renewcommand{\@isbn}{#1}}
+\newcommand*{\@isbn}{}
+\newcommand*{\isbn}[1]{\renewcommand*{\@isbn}{#1}}
%</pt>
% \end{macrocode}
% \end{macro}
@@ -2685,8 +2839,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% don't specify one (i.e. don't use this macro).
% \begin{macrocode}
%<*pt>
-\newcommand{\@depot}{}
-\newcommand{\depot}[1]{\renewcommand{\@depot}{#1}}
+\newcommand*{\@depot}{}
+\newcommand*{\depot}[1]{\renewcommand*{\@depot}{#1}}
%</pt>
% \end{macrocode}
% \end{macro}
@@ -2697,8 +2851,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% the title page.
% \begin{macrocode}
%<*ct|bmt|ex>
-\newcommand{\@academicyear}{XXX-YYYY}
-\newcommand{\academicyear}[1]{\renewcommand{\@academicyear}{#1}}
+\newcommand*{\@academicyear}{XXX-YYYY}
+\newcommand*{\academicyear}[1]{\renewcommand*{\@academicyear}{#1}}
%</ct|bmt|ex>
% \end{macrocode}
% \end{macro}
@@ -2707,10 +2861,10 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% This macro sets the |\@copyrightnotices| tag that later will be
% used on the back of the title page.
% \begin{macrocode}
-%<*ct>
+%<*ct|rp>
\newcommand{\@copyrightnotices}{}
\newcommand{\copyrightnotices}[1]{\renewcommand{\@copyrightnotices}{#1}}
-%</ct>
+%</ct|rp>
% \end{macrocode}
% \end{macro}
%
@@ -2719,10 +2873,10 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% used in the letter's heading text.
% \begin{macrocode}
%<*le>
-\newcommand{\@sender}{< Specify sender using
+\newcommand*{\@sender}{< Specify sender using
\textbackslash{}sender\{name\}\{role\} >}
-\newcommand{\@senderrole}{~}
-\newcommand{\sender}[2]{\renewcommand{\@sender}{#1}\renewcommand{\@senderrole}{#2}}
+\newcommand*{\@senderrole}{~}
+\newcommand*{\sender}[2]{\renewcommand*{\@sender}{#1}\renewcommand*{\@senderrole}{#2}}
%</le>
% \end{macrocode}
% \end{macro}
@@ -2732,7 +2886,7 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% graphics file with that name.
% \begin{macrocode}
%<*le|ex>
-\newcommand{\logo}[1]{\renewcommand{\@logo}{#1}}
+\newcommand*{\logo}[1]{\renewcommand*{\@logo}{#1}}
%</le|ex>
% \end{macrocode}
% \end{macro}
@@ -2742,8 +2896,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% heading text.
% \begin{macrocode}
%<*le>
-\newcommand{\@unit}{}
-\newcommand{\unit}[1]{\renewcommand{\@unit}{#1}}
+\newcommand*{\@unit}{}
+\newcommand*{\unit}[1]{\renewcommand*{\@unit}{#1}}
%</le>
% \end{macrocode}
% \end{macro}
@@ -2754,9 +2908,9 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% was used to overcome problems with the |@| sign.
% \begin{macrocode}
%<*le>
-\newcommand{\@emailuser}{}
-\newcommand{\@emaildomain}{}
-\newcommand{\email}[2]{\renewcommand{\@emailuser}{#1}\renewcommand{\@emaildomain}{#2}}
+\newcommand*{\@emailuser}{}
+\newcommand*{\@emaildomain}{}
+\newcommand*{\email}[2]{\renewcommand*{\@emailuser}{#1}\renewcommand*{\@emaildomain}{#2}}
%</le>
% \end{macrocode}
% \end{macro}
@@ -2766,8 +2920,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% heading text.
% \begin{macrocode}
%<*le>
-\newcommand{\@phone}{}
-\newcommand{\phone}[1]{\renewcommand{\@phone}{#1}}
+\newcommand*{\@phone}{}
+\newcommand*{\phone}[1]{\renewcommand*{\@phone}{#1}}
%</le>
% \end{macrocode}
% \end{macro}
@@ -2777,8 +2931,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% heading text.
% \begin{macrocode}
%<*le>
-\newcommand{\@fax}{}
-\newcommand{\fax}[1]{\renewcommand{\@fax}{#1}}
+\newcommand*{\@fax}{}
+\newcommand*{\fax}[1]{\renewcommand*{\@fax}{#1}}
%</le>
% \end{macrocode}
% \end{macro}
@@ -2789,8 +2943,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% heading text.
% \begin{macrocode}
%<*le>
-\newcommand{\@mobile}{}
-\newcommand{\mobile}[1]{\renewcommand{\@mobile}{#1}}
+\newcommand*{\@mobile}{}
+\newcommand*{\mobile}[1]{\renewcommand*{\@mobile}{#1}}
%</le>
% \end{macrocode}
% \end{macro}
@@ -2801,8 +2955,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% heading text (in the area of the envelope's window).
% \begin{macrocode}
%<*le>
-\newcommand{\@returnaddress}{<specify return-address using \textbackslash\{single-line-return-address\}>}
-\renewcommand{\returnaddress}[1]{\renewcommand{\@returnaddress}{#1}}
+\newcommand*{\@returnaddress}{<specify return-address using \textbackslash\{single-line-return-address\}>}
+\renewcommand*{\returnaddress}[1]{\renewcommand*{\@returnaddress}{#1}}
%</le>
% \end{macrocode}
% \end{macro}
@@ -2813,8 +2967,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% heading text (in the area of the envelope's window).
% \begin{macrocode}
%<*le>
-\newcommand{\@to}{<Specify addressee using \textbackslash{}to\{name\}>}
-\renewcommand{\to}[1]{\renewcommand{\@to}{#1}}
+\newcommand*{\@to}{<Specify addressee using \textbackslash{}to\{name\}>}
+\renewcommand*{\to}[1]{\renewcommand*{\@to}{#1}}
%</le>
% \end{macrocode}
% \end{macro}
@@ -2825,9 +2979,9 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% the letter's heading text (in the area of the envelope's window).
% \begin{macrocode}
%<*le>
-\newcommand{\@toorganization}{<Specify organization using
+\newcommand*{\@toorganization}{<Specify organization using
\textbackslash{}toorganization\{\}>}
-\newcommand{\toorganization}[1]{\renewcommand{\@toorganization}{#1}}
+\newcommand*{\toorganization}[1]{\renewcommand*{\@toorganization}{#1}}
%</le>
% \end{macrocode}
% \end{macro}
@@ -2837,9 +2991,9 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% the letter's heading text (in the area of the envelope's window).
% \begin{macrocode}
%<*le>
-\newcommand{\@toaddress}{<Specify (multiline) destination
+\newcommand*{\@toaddress}{<Specify (multiline) destination
address\\using \textbackslash{}toaddress\{\}>}
-\newcommand{\toaddress}[1]{\renewcommand{\@toaddress}{#1}}
+\newcommand*{\toaddress}[1]{\renewcommand*{\@toaddress}{#1}}
%</le>
% \end{macrocode}
% \end{macro}
@@ -2849,8 +3003,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% the letter's heading text.
% \begin{macrocode}
%<*le>
-\newcommand{\@subject}{-}
-\newcommand*{\subject}[1]{\renewcommand{\@subject}{#1}}
+\newcommand*{\@subject}{-}
+\newcommand*{\subject}[1]{\renewcommand*{\@subject}{#1}}
%</le>
% \end{macrocode}
% \end{macro}
@@ -2870,9 +3024,9 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% the letter.
% \begin{macrocode}
%<*le>
-\newcommand{\@closing}{<specify a closing formula using
+\newcommand*{\@closing}{<specify a closing formula using
\textbackslash{}closing\{\}>}
-\renewcommand*{\closing}[1]{\renewcommand{\@closing}{#1}}
+\renewcommand*{\closing}[1]{\renewcommand*{\@closing}{#1}}
%</le>
% \end{macrocode}
% \end{macro}
@@ -2884,8 +3038,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% vertical white space
% \begin{macrocode}
%<*le>
-\newcommand{\@signature}{\vspace*{8ex}}
-\renewcommand*{\signature}[1]{\renewcommand{\@signature}{#1}}
+\newcommand*{\@signature}{\vspace*{8ex}}
+\renewcommand*{\signature}[1]{\renewcommand*{\@signature}{#1}}
%</le>
% \end{macrocode}
% \end{macro}
@@ -2896,8 +3050,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% the trailer of the letter.
% \begin{macrocode}
%<*le>
-\newcommand{\@carboncopy}{}
-\newcommand{\carboncopy}[1]{\renewcommand{\@carboncopy}{#1}}
+\newcommand*{\@carboncopy}{}
+\newcommand*{\carboncopy}[1]{\renewcommand*{\@carboncopy}{#1}}
%</le>
% \end{macrocode}
% \end{macro}
@@ -2907,8 +3061,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% the trailer of the letter.
% \begin{macrocode}
%<*le>
-\newcommand{\@enclosed}{}
-\newcommand{\enclosed}[1]{\renewcommand{\@enclosed}{#1}}
+\newcommand*{\@enclosed}{}
+\newcommand*{\enclosed}[1]{\renewcommand*{\@enclosed}{#1}}
%</le>
% \end{macrocode}
% \end{macro}
@@ -2917,13 +3071,17 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% This macro will set the |\@address| tag that will be used in
% the letter's heading text (in the area of the envelope's window).
% \begin{macrocode}
-%<*pt|le>
-\newcommand{\@address}{\errmessage{Please, set your multi-line address
- and contact details using the \textbackslash{}address\{\} command
- in the preamble of your document}}
-%</pt|le>
-%<le>\renewcommand{\address}[1]{\renewcommand{\@address}{#1}}
-%<pt>\newcommand{\address}[1]{\renewcommand{\@address}{#1}}
+%<*pt|rp|le>
+\newcommand*{\@address}{
+ \PackageError{uantwerpendocs}
+ {Please, set your multi-line address and contact details using the
+ '\protect\address{}' command in the preamble of your document}
+ {See the uantwerpendocs manual}
+}
+%</pt|rp|le>
+%
+%<pt|rp>\newcommand*{\address}[1]{\renewcommand*{\@address}{#1}}
+%<le>\renewcommand*{\address}[1]{\renewcommand*{\@address}{#1}}
% \end{\macrocode}
% \end{macro}
%
@@ -2932,8 +3090,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% the exam title page.
% \begin{macrocode}
%<*ex>
-\newcommand{\@exampart}{}
-\newcommand{\exampart}[1]{\renewcommand{\@exampart}{#1}}
+\newcommand*{\@exampart}{}
+\newcommand*{\exampart}[1]{\renewcommand*{\@exampart}{#1}}
%</ex>
% \end{macrocode}
% \end{macro}
@@ -2943,8 +3101,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% the exam title page.
% \begin{macrocode}
%<*ex>
-\newcommand{\@examgroupnumber}{}
-\newcommand{\examgroupnumber}[1]{\renewcommand{\@examgroupnumber}{#1}}
+\newcommand*{\@examgroupnumber}{}
+\newcommand*{\examgroupnumber}[1]{\renewcommand*{\@examgroupnumber}{#1}}
%</ex>
% \end{macrocode}
% \end{macro}
@@ -2954,8 +3112,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% the exam title page.
% \begin{macrocode}
%<*ex>
-\newcommand{\@examdate}{TBD}
-\newcommand{\examdate}[1]{\renewcommand{\@examdate}{#1}}
+\newcommand*{\@examdate}{TBD}
+\newcommand*{\examdate}[1]{\renewcommand*{\@examdate}{#1}}
%</ex>
% \end{macrocode}
% \end{macro}
@@ -2965,8 +3123,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% the exam title page.
% \begin{macrocode}
%<*ex>
-\newcommand{\@examlength}{TBD}
-\newcommand{\examlength}[1]{\renewcommand{\@examlength}{#1}}
+\newcommand*{\@examlength}{TBD}
+\newcommand*{\examlength}[1]{\renewcommand*{\@examlength}{#1}}
%</ex>
% \end{macrocode}
% \end{macro}
@@ -2976,8 +3134,8 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% the exam title page.
% \begin{macrocode}
%<*ex>
-\newcommand{\@tstart}{TBD}
-\newcommand{\tstart}[1]{\renewcommand{\@tstart}{#1}}
+\newcommand*{\@tstart}{TBD}
+\newcommand*{\tstart}[1]{\renewcommand*{\@tstart}{#1}}
%</ex>
% \end{macrocode}
% \end{macro}
@@ -2987,19 +3145,40 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% the exam title page.
% \begin{macrocode}
%<*ex>
-\newcommand{\@tend}{TBD}
-\newcommand{\tend}[1]{\renewcommand{\@tend}{#1}}
+\newcommand*{\@tend}{TBD}
+\newcommand*{\tend}[1]{\renewcommand*{\@tend}{#1}}
%</ex>
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\rooms}
+% \begin{macro}{\room}
% This macro will set the |\@rooms| tag that will be used on
% the exam title page.
% \begin{macrocode}
%<*ex>
-\newcommand{\@rooms}{TBD}
-\newcommand{\rooms}[1]{\renewcommand{\@rooms}{#1}}
+\ExplSyntaxOn
+\seq_new:N \g_@@_rooms
+\cs_new:Nn \@@_addroom:n {
+ \seq_gpush:Nn \g_@@_rooms { #1 }
+}
+\NewDocumentCommand{\room}{m}{
+ \@@_addroom:n { #1 }
+}
+\NewDocumentCommand{\jointrooms}{m}{
+ \seq_use:Nn \g_@@_rooms { #1 }
+}
+\NewDocumentCommand{\roomsname}{}{
+ \if_int_compare:w \seq_count:N \g_@@_rooms > 1
+ \uantwerpendocsprop{roomsname}
+ \else:
+ \uantwerpendocsprop{roomname}
+ \fi:
+}
+\AtBeginDocument{
+ \seq_greverse:N \g_@@_rooms
+}
+
+\ExplSyntaxOff
%</ex>
% \end{macrocode}
% \end{macro}
@@ -3032,8 +3211,10 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
\renewcommand{\@extrainfo}{#2}
}
{
- \errmessage{Error: '\extrainfo' - first (optional) argument can
+ \PackageError{uantwerpendocs}
+ {The first (optional) argument of '\protect\extrainfo' can
only be 'separatepage' or 'firstpage'}
+ {See the uantwerpendocs manual)'}
}
}
}
@@ -3047,22 +3228,22 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% header of the pages.
% \begin{macrocode}
%<*ex>
-\newcommand{\@studentnr}{0}
-\newcommand{\studentnr}[1]{\renewcommand{\@studentnr}{#1}}
+\newcommand*{\@studentnr}{0}
+\newcommand*{\studentnr}[1]{\renewcommand*{\@studentnr}{#1}}
%</ex>
% \end{macrocode}
% \end{macro}
%
% \subsection{Header and Footer}
% The |fancyhdr| package is used to make a decent header and footer.
-% The header and footer of the |uantwerpencoursetext| class are defined to be:
+% The header and footer of the |coursetext| class are defined to be:
% \begin{macrocode}
%<*ct>
\if@twoside
\lhead[\thepage]{\slshape\rightmark}
\chead[]{}
\rhead[\slshape\leftmark]{\thepage}
-\lfoot[\uaname{} -- \@facultyacronym]{\@courseversion}
+\lfoot[\uantwerpendocsprop{org-ua} -- \@facultyacronym]{\@courseversion}
\cfoot[]{}
\rfoot[]{\@title{}\ifdefvoid{\@subtitle}{}{ --- \@subtitle}}
\else
@@ -3076,10 +3257,10 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
%</ct>
% \end{macrocode}
%
-% The header and footer of the |uantwerpenbamathesis| class are
+% The header and footer of the |bamathesis| class are
% defined to be:
% \begin{macrocode}
-%<*bmt|pt>
+%<*bmt|pt|rp>
\if@twoside
\lhead[\thepage]{\slshape\rightmark}
\chead[]{}
@@ -3095,10 +3276,10 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
\cfoot[]{}
\rfoot[]{}
\fi
-%</bmt|pt>
+%</bmt|pt|rp>
% \end{macrocode}
%
-% The header and footer of the |uantwerpenletter| class are
+% The header and footer of the |letter| class are
% defined to be:
% \begin{macrocode}
%<*le>
@@ -3107,17 +3288,18 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
\rhead[]{}
\lfoot[\small\textcolor{gray}{\@date}]{\textcolor{gray}{\@date}}
\cfoot[]{}
-\rfoot[\small\textcolor{gray}{\pagename~\thepage~\orname~\pageref{lastpage}}]
- {\small\textcolor{gray}{\pagename~\thepage~\orname~\pageref{lastpage}}}
+\rfoot[\small\textcolor{gray}{\pagename~\thepage~\uantwerpendocsprop{of}~\pageref{lastpage}}]
+ {\small\textcolor{gray}{\pagename~\thepage~\uantwerpendocsprop{of}~\pageref{lastpage}}}
%</le>
% \end{macrocode}
%
-% The header and footer of the |uantwerpenexam| class are defined to
+% The header and footer of the |exam| class are defined to
% be:
% \begin{macrocode}
%<*ex>
\lhead[]{}
\chead[]{}
+\cfoot[\small \thepage/\pageref{lastpage}]{\small\thepage/\pageref{lastpage}}
\if@examiner
\rhead[\small EXAMINER VERSION]{\small EXAMINER VERSION}
\AddToShipoutPicture{
@@ -3127,10 +3309,6 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
\else
\rhead[\small Student nr. \@studentnr]{\small Student nr. \@studentnr}
\fi
-\lfoot[\small \@shorttitle]{\small \@shorttitle}
-\cfoot[\small \thepage/\pageref{lastpage}]{\small\thepage/\pageref{lastpage}}
-\rfoot[\small Groep \@examgroupnumber{} ---
-\@academicyear]{\small Groep \@examgroupnumber{} --- \@academicyear}
%</ex>
% \end{macrocode}
@@ -3141,30 +3319,30 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% \begin{macrocode}
%<*ct>
\setlength{\headheight}{13.7pt}
-\renewcommand{\headrulewidth}{1pt}
-\renewcommand{\footrulewidth}{1pt}
+\renewcommand*{\headrulewidth}{1pt}
+\renewcommand*{\footrulewidth}{1pt}
\pagenumbering{arabic}
%</ct>
-%<*mt|pt|le>
-\renewcommand{\headrulewidth}{0pt}
-\renewcommand{\footrulewidth}{0pt}
-%</mt|pt|le>
+%<*mt|pt|rp|le>
+\renewcommand*{\headrulewidth}{0pt}
+\renewcommand*{\footrulewidth}{0pt}
+%</mt|pt|rp|le>
%<*ex>
-\renewcommand{\headrulewidth}{0pt}
-\renewcommand{\footrulewidth}{1pt}
+\renewcommand*{\headrulewidth}{0pt}
+
%</ex>
% \end{macrocode}
%
% Remains to take care of filling
%
% \begin{macrocode}
-%<*ct|mt|pt|le>
+%<*ct|mt|pt|rp|le>
\if@filled\else
\raggedright
\fi
\raggedbottom
\onecolumn
-%</ct|mt|pt|le>
+%</ct|mt|pt|rp|le>
% \end{macrocode}
%
% \subsection{Copyright notice}
@@ -3172,19 +3350,21 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% \begin{macro}{\@crnotice}
% This is the standard text that will be used for the |\@crnotice| tag.
% \begin{macrocode}
-%<*ct>
+%<*ct|rp>
\newcommand{\@crnotice}{
This document has been typeset using \LaTeX{} and the
- \texttt{uantwerpencoursetext} class.\\
+ \texttt{uantwerpendocs} package.\\
\@copyrightnotices
- \@courseversion
+%</ct|rp>
+%<ct> \@courseversion
+%<*ct|rp>
CONFIDENTIAL AND PROPRIETARY.
- \copyright{} \@versionyear{} University of Antwerp, \arrname.
+ \copyright{} \@versionyear{} \uantwerpendocsprop{org-ua}, \uantwerpendocsprop{arr}.
}
-%</ct>
+%</ct|rp>
% \end{macrocode}
% \end{macro}
%
@@ -3196,7 +3376,7 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% \changes{v2.2}{2018/10/23}{Added white chapter number outline}
% \changes{v2.2}{2018/10/23}{Corrected spacing}
% \begin{macrocode}
-%<*pt>
+%<*pt|rp>
\def\@makechapterhead#1{%
\vspace*{1ex}%
\begin{flushright}
@@ -3236,9 +3416,9 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
\def\appendix{
\setcounter{chapter}{0}
\renewcommand*{\thechapter}{\Alph{chapter}}
- \renewcommand\chaptername\appendixname
+ \renewcommand*\chaptername\appendixname
}
-%</pt>
+%</pt|rp>
% \end{macrocode}
%
% \subsection{Title page for the masterthesis and coursetext clases}
@@ -3247,241 +3427,96 @@ Welk van de onderstaande ingredi\"enten hoort niet thuis in
% book class from which we inherit already defines this command, we
% need to renew it.
%
-% The UAntwerpen house style works with large-radius circles.
-% We need some math in order to calculate center points an radiuses
-%
-% \paragraph{Header circle:} the blue header-circle on top of the
-% page. We calculate the center point and the radius based on:
-% \begin{itemize}
-% \item the fact that the center point is above the page's left edge;
-% \item the distance of the intersection points at the left and right
-% edge of the page with respect to the top of the page, $X$ and $Y$
-% respectively;
-% \item the width of the page $W$.
-% \end{itemize}
-% Some simple trigonometry leads to the elevation of the center point
-% above the top of the page $Q$ and the radius $R$:
-% \begin{eqnarray}
-% R &=& \frac{W^2 + (X-Y)^2}{2(X-Y)}\\
-% Q &=& R - X
-% \end{eqnarray}
-% We labeled the variables in the code below with a prefix
-% |ua@| and a suffix h (from 'header'). We also took the paperheight
-% into account (the page's coordinate system origins at the left
-% bottom.
-%
-% Therefore:
-% \begin{macrocode}
-%<*ct|bmt>
-\pgfmathsetmacro{\ua@Wh}{\paperwidth}
-\pgfmathsetmacro{\ua@Xh}{0.2\paperheight}
-\pgfmathsetmacro{\ua@Yh}{0.125\paperheight}
-\pgfmathsetmacro{\ua@XMYh}{\ua@Xh-\ua@Yh}
-\pgfmathsetmacro{\ua@Rh}{0.5*\ua@Wh/\ua@XMYh*\ua@Wh+0.5*\ua@XMYh}
-\pgfmathsetmacro{\ua@Qh}{\ua@Rh-\ua@Xh+\paperheight}
-%</ct|bmt>
-% \end{macrocode}
-%
-% \paragraph{Bottom circle A:} the bottom circle with the largest
-% radius. We calculate the center point and the radius based on:
-% \begin{itemize}
-% \item the fact that the center point is at a distance of 3/5 page
-% width from the right page edge. We denote that distance by $W$;
-% \item the fact that the horizontal bottom tangent line of the circle
-% is at a specific height above the bottom page edge, labeled $S$;
-% \item the distance of the intersection points at the right edge of
-% the page with respect to the horizontal bottom tangent line of the
-% circle, denoted as $X-Y$.
-% \end{itemize}
-% Given these definitions, almost the same equations as for the header
-% circle hold:
-% \begin{eqnarray}
-% R &=& \frac{W^2 + (X-Y)^2}{2(X-Y)}\\
-% Q &=& R + S
-% \end{eqnarray}
-% with $R$ the circle's radius, and $Q$ the elevation of the center
-% point above the page's bottom.
-%
-% We labeled the variables in the code below with a prefix
-% |ua@| and a suffix ba (from 'bottom a').
-% Therefore:
-% \begin{macrocode}
-%<*ct|bmt>
-\pgfmathsetmacro{\ua@Wba}{0.4*\paperwidth}
-\pgfmathsetmacro{\ua@Sba}{0.125*\paperheight}
-\pgfmathsetmacro{\ua@XMYba}{0.02\paperheight}
-\pgfmathsetmacro{\ua@Rba}{0.5*\ua@Wba/\ua@XMYba*\ua@Wba+0.5*\ua@XMYba}
-\pgfmathsetmacro{\ua@Qba}{\ua@Rba+\ua@Sba}
-%</ct|bmt>
-% \end{macrocode}
-%
-%
-% \paragraph{Bottom circle B:} the bottom circle with the smallest
-% radius. The same reasoning leads to:
-%
-% \begin{macrocode}
-%<*ct|bmt>
-\pgfmathsetmacro{\ua@Wbb}{0.65*\paperwidth}
-\pgfmathsetmacro{\ua@Sbb}{0.14*\paperheight}
-\pgfmathsetmacro{\ua@XMYbb}{0.06\paperheight}
-\pgfmathsetmacro{\ua@Rbb}{0.5*\ua@Wbb/\ua@XMYbb*\ua@Wbb+0.5*\ua@XMYbb}
-\pgfmathsetmacro{\ua@Qbb}{\ua@Rbb+\ua@Sbb}
-%</ct|bmt>
-% \end{macrocode}
-%
-% \paragraph{Text alignment:} The text is aligned around an imaginary
-% vertical line around 2/5 page width distance from the left edge.
-%
-% \begin{macrocode}
-%<*ct|bmt>
-\pgfmathsetmacro{\ua@ll}{0.15*\paperwidth}
-\pgfmathsetmacro{\ua@l}{0.4*\paperwidth}
-\pgfmathsetmacro{\ua@d}{0.1in}
-\pgfmathsetmacro{\ua@rr}{0.85*\paperwidth}
-%</ct|bmt>
-% \end{macrocode}
-%
-% Below, one can find the code for the title page of the
-% |uantwerpencoursetext| class. We start with setting up some things
-% for the (optional) QR mark.
-% \changes{v1.3}{2015/12/31}{Changed eso-pic for tikz and background}
-% \begin{macrocode}
-%<*ct>
-\newcommand\sprtr{ / }
-\newcommand\myqrdata{
-I: Universiteit Antwerpen\string\n
-F: \@faculty\string\n
-P: \@programmet\ \@programmecqr\ \@programmeq\string\n
-C: \@coursecodei\ \@qrcoursei
-\sprtr
-\@coursecodeii\ \@qrcourseii
-\sprtr
-\@coursecodeiii\ \@qrcourseiii
-\sprtr
-\@coursecodeiv\ \@qrcourseiv
-\string\n
-Y: \@academicyear\string\n
-T: \@qrtitle\string\n
-S: \@qrsubtitle\string\n
-A: \@qrauthor\string\n
-L: \@qrlectureri
-\sprtr
-\@qrlecturerii
-\sprtr
-\@qrlectureriii
-\sprtr
-\@qrlectureriv}
-\newsavebox{\myqrcode}
-%</ct>
-% \end{macrocode}
-%
%
% \begin{macro}{\maketitle}
-% And finally, here is the |\maketitle| macro:
+% The macro for the coursetext class:
% \changes{v1.7}{2016/05/01}{Embedded babel translations of keywords
% into title page}
% \begin{macrocode}
%<*ct>
\renewcommand\maketitle{%
\pagestyle{empty}
- \if@qr
- \savebox{\myqrcode}[2.7in][t]{
- \begin{pspicture}(2.7in,2.7in)
- \psbarcode{\myqrdata}
- {width=1.0 height=1.0 encoding=byte eclevel=M}
- {qrcode}
- \end{pspicture}
- }
- \fi
\begin{titlepage}
- \if@titlepagetableonly
- Dit is een cursustekst van Universiteit Antwerpen.\\
- Het titelblad dient opgemaakt te worden met de volgende gegevens:
- \begin{center}
- \begin{tabular}{|l|l|}
- \hline
- \bfseries I & Universiteit Antwerpen \\\hline
- \bfseries F & \@faculty \\\hline
- \bfseries P & \parbox[t]{14cm}{\@programmet
- \@programmec\@programmes \@programmeq} \\\hline
- \bfseries C & \parbox[t]{14cm}{
- \texttt{\@coursecodei} \@coursei\\
- \texttt{\@coursecodeii} \@courseii\\
- \texttt{\@coursecodeiii} \@courseiii\\
- \texttt{\@coursecodeiv} \@courseiv} \\\hline
- \bfseries Y & \@academicyear \\\hline
- \bfseries T & \parbox[t]{14cm}{\@title}\\\hline
- \bfseries S & \parbox[t]{14cm}{\@subtitle}\\\hline
- \bfseries A & \parbox[t]{14cm}{\@author}\\\hline
- \bfseries L & \parbox[t]{14cm}{\@lectureri\\
- \@lecturerii\\
- \@lectureriii\\
- \@lectureriv} \\\hline
- \end{tabular}
- \end{center}
- ~\\
- Waarbij: I = instelleng, F = faculteit, P = programma, C =
- cursusmodule, T = titel, S = subtitel, A = auteur(s), L =
- lesgever(s)\\~\\
- \if@qr
- Deze informatie is ook gecodeerd in de onderstaande QR-code.\\
- \vspace*{1cm}
- \usebox{\myqrcode}
- \fi
- \else
- \begin{tikzpicture}[remember picture,overlay]
- \node at (current page.center) {
- \begin{tikzpicture}[inner sep=0pt]
+ \AddToShipoutPicture*{%
+ \put(0,0){%
+ \begin{tikzpicture}[inner sep=0pt,outer sep=0pt]
\clip (0,0) rectangle(\paperwidth,\paperheight);
- \if@titlepagenoartwork\else
- \filldraw [uacorpbord] (0.55\paperwidth,\ua@Qba pt) circle (\ua@Rba pt);
- \filldraw [white] (0.35\paperwidth,\ua@Qbb pt) circle (\ua@Rbb pt);
- \filldraw [uacorpblue] (0,\ua@Qh pt) circle (\ua@Rh pt);
- \path
- (0.95\paperwidth,0.1\paperheight)
- node [anchor=north east] {
- \includegraphics[width=0.25\paperwidth]{\@logo}};
- \fi
- \path
- (\ua@l pt -\ua@d pt,0.77\paperheight)
- node [anchor=north east, text width=0.35\paperwidth] {
- \begin{flushright}
- \uppercase\expandafter{\uaname}\\~\\
- \academicyearname{} \@academicyear
- \end{flushright}}
- (\ua@l pt +\ua@d pt,0.65\paperheight)
- node [anchor = north west, text width = 0.55\paperwidth] {
- {\large \@faculty{}}\\[0.05\paperheight]
- {\huge \bf \@title{}}\\[2ex]
- {\Large \bf \@subtitle{}}\\[3ex]
- {\Large \bf \@author{}}}
- (\ua@l pt +\ua@d pt,0.45\paperheight)
- node [anchor = north west, text width = 0.55\paperwidth] {
- \@lectureri~\\
- \@lecturerii~\\
- \@lectureriii~\\
- \@lectureriv}
- (\ua@l pt +\ua@d pt,0.35\paperheight)
- node [anchor = north west, text width = 0.55\paperwidth] {
- {\bf \@programmet \\ \@programmec\@programmes \@programmeq}}
- (\ua@l pt +\ua@d pt,0.30\paperheight)
- node [anchor = north west, text width = 0.55\paperwidth] {
- \texttt{\@publishercode}~\\~\\
- \texttt{\@coursecodei{}} \@coursei~\\
- \texttt{\@coursecodeii{}} \@courseii~\\
- \texttt{\@coursecodeiii{}} \@courseiii~\\
- \texttt{\@coursecodeiv{}} \@courseiv}
- (\ua@l pt - 2\ua@d pt, 0.368\paperheight)
- node [anchor = north east, text width = 0.35\paperwidth] {
- {\normalsize\begin{flushright}
- \@publisher{}
- \end{flushright}}};
+
+ \begin{scope}
+ \clip (2.125,20.192) rectangle (\paperwidth,6);
+ \fill[sidecolor]
+ (2.125,20.192) rectangle (\paperwidth,6);
+ \node[anchor=south west]
+ at (2.125,6)
+ {\ifx\@titlepageimage\@empty
+ \else
+ \includegraphics[keepaspectratio,
+ scale=0.01,
+ min size={18.875cm}{14.192cm}]{\@titlepageimage}
+ \fi};
+ \end{scope}
+
+
+ \node
+ [anchor=west,text width=13.75cm,align=left,font=\Huge,uauaside]
+ at (2.125,27)
+ {
+ \textsf{\textbf{\@title}}
+ };
+
+ \node
+ [anchor=west,text width=13.75cm,align=left,font=\Large,uauaside]
+ at (2.125,25.5)
+ {
+ \textsf{\textbf{\@subtitle}}
+ };
+
+ \node
+ [anchor=base west,maincolor,text width=13.75cm,align=left,font=\LARGE]
+ at (2.125,24)
+ {\textsf{\textbf{\@author}}};
+
+
+ \node
+ [anchor=west,text width=13.75cm,align=left,font=\large,uauaside]
+ at (2.125,22)
+ {\textsf{\jointcourseswithcodes{\\}}};
+
+ \fill[maincolor] (2.125,6)
+ -- (\paperwidth,6)
+ -- (\paperwidth,2.625)
+ -- (2.55,2.625)
+ arc (-90:-180:0.425)
+ -- cycle;
+
+ \node[white,anchor=west,align=left,font=\large]
+ (SN) at (2.55,5.1)
+ {
+ \begin{tabular}{@{}l@{~\,}p{14.5cm}}
+ \textsf{\lecturersname}
+ & \textsf{\textbf{\jointlecturers{ | }}}
+ \end{tabular}
+ };
+
+ \node[white,anchor=west,text width=17.5cm,align=left,font=\small]
+ at (2.55,3.7)
+ {\textsf{\@degree{}}\\
+ \textsf{\textbf{\@faculty{} | \@academicyear \hfill
+ \@publishercode}}\\
+ \textsf{\@publisher}};
+
+ \node[anchor=west] at (2.125,1.313)
+ {\includegraphics[width=4.75cm]{\logopos}};
\end{tikzpicture}
- };
- \end{tikzpicture}
- \fi
+ }
+ }
\end{titlepage}%
+ ~\par\relax
\clearpage
+ \if@copyright
+ \backgroundsetup{contents={Copyright University of Antwerp, All
+ Rights Reserved}}
+ \fi
\vspace*{\stretch{1}}
\@crnotice
\clearpage
@@ -3502,14 +3537,12 @@ L: \@qrlectureri
%
% \begin{macro}{\makefinalpage}
% Below, one can find the code for the final page of the
-% |uantwerpencoursetext| class:
+% |coursetext| class:
% \changes{v1.3}{2015/12/31}{Changed eso-pic for tikz}
% \changes{v1.8}{2016/07/06}{Inserted blank one but last page}
% \begin{macrocode}
%<*ct>
\newcommand\makefinalpage{
- \if@titlepagetableonly
- \else
\cleardoublepage
\thispagestyle{empty}
~% intentionally blank page
@@ -3519,24 +3552,10 @@ L: \@qrlectureri
\node at (current page.center) {
\begin{tikzpicture}[inner sep=0pt]
\clip (0,0) rectangle(\paperwidth,\paperheight);
- \if@titlepagenoartwork\else
- \filldraw [uacorpblue] (\paperwidth,\ua@Qh pt) circle (\ua@Rh pt);
- \fi
- \path
- (0.1\paperwidth,0.1\paperheight)
- node [anchor = south west, text width = 0.6\paperwidth] {
- CONFIDENTIAL AND PROPRIETARY\\~\\
-
- \copyright{} \@versionyear{} \uaname,
- \arrname.}
- (0.9\paperwidth,0.1\paperwidth)
- node [anchor = south east] {
- \usebox{\myqrcode}
- };
+ \fill[sidecolor] (0,0) rectangle (2.125cm,2.625cm);
\end{tikzpicture}
};
\end{tikzpicture}
- \fi
}
%</ct>
% \end{macrocode}
@@ -3544,7 +3563,7 @@ L: \@qrlectureri
%
% \begin{macro}{\maketitle}
% And next, the code for the title page of the
-% |uantwerpenmasterthesis| class:
+% |bamathesis| class:
% \changes{v1.3}{2015/12/31}{Changed eso-pic for tikz}
% \changes{v1.7}{2016/05/01}{Embedded babel translations of keywords
% into title page}
@@ -3553,49 +3572,65 @@ L: \@qrlectureri
\renewcommand\maketitle{%
\pagestyle{empty}
\begin{titlepage}
- \begin{tikzpicture}[remember picture,overlay]
- \node at (current page.center) {
- \begin{tikzpicture}[inner sep=0pt]
+ \AddToShipoutPicture*{%
+ \put(0,0){%
+ \begin{tikzpicture}[inner sep=0pt,outer sep=0pt]
\clip (0,0) rectangle(\paperwidth,\paperheight);
- \if@titlepagenoartwork\else
- \filldraw [lightgray]
- (0.55\paperwidth,\ua@Qba pt) circle (\ua@Rba pt);
- \filldraw [white] (0.35\paperwidth,\ua@Qbb pt) circle (\ua@Rbb pt);
- \filldraw [lightgray] (0,\ua@Qh pt) circle (\ua@Rh pt);
- \path
- (0.95\paperwidth,0.1\paperheight)
- node [anchor=north east] {
- \includegraphics[width=0.25\paperwidth]{\@logo}};
- \fi
- \path
- (\ua@ll pt,0.77\paperheight)
- node [anchor=north west, text width=0.7\paperwidth] {
- \uppercase\expandafter{\uaname}\\~\\
- \academicyearname{} \@academicyear\\~\\
- {\large \@faculty{}}\\~\\
- \thesisname{}\\[0.05\paperheight]
- {\Large \bf \@title{}}}
- (\ua@ll pt,0.55\paperheight)
- node [anchor = north west, text width = 0.7\paperwidth] {
- {\large \bf \@author{}}\\~\\~\\
- \begin{tabular}{@{}p{2.7cm}p{10.8cm}}
- \textbf{\supervisorsname{}:}
- & \@supervisori \\
- & \@supervisorii \\
- & \@supervisoriii \\
- & \@supervisoriv
+ \fill[lightgray]
+ (2.125,{\paperheight-7.5cm}) rectangle (\paperwidth,6);
+
+ \node
+ [anchor=west,text width={\paperwidth-5cm},align=left,font=\Huge,uauaside]
+ at (2.125,{\paperheight-3cm})
+ {
+ \textsf{\textbf{\@title}}
+ };
+
+ \node
+ [anchor=west,text width={\paperwidth-5cm},align=left,font=\Large,uauaside]
+ at (2.125,{\paperheight-5cm})
+ {
+ \textsf{\textbf{\@subtitle}}
+ };
+
+ \node
+ [anchor=base west,uauamain,
+ text width={\paperwidth-5cm},align=left,font=\LARGE]
+ at (2.125,{\paperheight-6.5cm})
+ {\textsf{\textbf{\@author}}};
+
+ \fill[gray] (2.125,6)
+ -- (\paperwidth,6)
+ -- (\paperwidth,2.625)
+ -- (2.55,2.625)
+ arc (-90:-180:0.425)
+ -- cycle;
+
+ \node[white,anchor=west,align=left,font=\large]
+ (SN) at (2.55,4.9)
+ {
+ \begin{tabular}{@{}l@{~\,}p{14.5cm}}
+ \textsf{\supervisorsname}
+ & \textsf{\textbf{\jointsupervisors{ | }}}
\end{tabular}
- }
- (\ua@ll pt,0.3\paperheight)
- node [anchor=north west, text width = 0.7\paperwidth]{%
- \bmthesisname\\
- \@diploma\\
- \@defenselocation, \@defensedate
};
+
+
+ \node[white,anchor=west,text width=17.5cm,align=left,font=\small]
+ at (2.55,3.7)
+ {\textsf{\uantwerpendocsprop{bmthesisname}
+ \@degree{}}\\
+ \textsf{\textbf{\@faculty{}
+ | \@defenselocation, \@defensedate}}};
+
+ \node[anchor=west] at
+ (2.125,1.313)
+ {\includegraphics[width=4.75cm]{\logoposua}};
\end{tikzpicture}
- };
- \end{tikzpicture}
+ }
+ }
\end{titlepage}%
+ ~\par\relax
\clearpage
\setcounter{footnote}{0}%
\global\let\thanks\relax
@@ -3614,20 +3649,21 @@ L: \@qrlectureri
%
% \begin{macro}{\makefinalpage}
% Below, one can find the code for the final page of the
-% |uantwerpenmasterthesis| class:
+% |bamathesis| class:
% \changes{v1.3}{2015/12/31}{Changed eso-pic for tikz}
% \begin{macrocode}
%<*bmt>
\newcommand\makefinalpage{
\cleardoublepage
\thispagestyle{empty}
+ ~% intentionally blank page
+ \clearpage
+ \thispagestyle{empty}
\begin{tikzpicture}[remember picture,overlay]
\node at (current page.center) {
\begin{tikzpicture}[inner sep=0pt]
\clip (0,0) rectangle(\paperwidth,\paperheight);
- \if@titlepagenoartwork\else
- \filldraw [lightgray] (\paperwidth,\ua@Qh pt) circle (\ua@Rh pt);
- \fi
+ \fill[lightgray] (0,0) rectangle (2.125cm,2.625cm);
\end{tikzpicture}
};
\end{tikzpicture}
@@ -3642,28 +3678,9 @@ L: \@qrlectureri
% book class from which we inherit already defines this command, we
% need to renew it.
%
-% The UAntwerpen house style works with large-radius circles.
-% We need some math in order to calculate center points an radiuses
-%
-% The width and height of the page are labeled X and Y in the house
-% style. The radius of the circles equals 6 times X. Therefore:
-% \begin{macrocode}
-%<*pt>
-\pgfmathsetmacro{\ua@X}{\paperwidth}
-\pgfmathsetmacro{\ua@Y}{\paperheight}
-\pgfmathsetmacro{\ua@R}{6*\paperwidth}
-\pgfmathsetmacro{\ua@B}{(\ua@X+\ua@Y)/15}
-\pgfmathsetmacro{\ua@L}{0.25*\ua@X}
-\pgfmathsetmacro{\ua@Z}{0.1*\ua@L}
-\pgfmathsetmacro{\ua@H}{0.3*\ua@L}
-\pgfmathsetmacro{\ua@h}{0.5*(\ua@B-\ua@H)}
-%</pt>
-% \end{macrocode}
-%
-%
% \begin{macro}{\maketitle}
% Below, one can find the code for the title page of the
-% |uantwerpenphdthesis| class:
+% |phdthesis| class:
% \changes{v2.0}{2018/03/14}{Implemented title page}
% \changes{v2.1}{2018/06/20}{Corrected information page (p4) jury
% spacing}
@@ -3674,90 +3691,89 @@ L: \@qrlectureri
\renewcommand\maketitle{%
\pagestyle{empty}
\begin{titlepage}
- \if@titlepagetableonly
- Dit is een doctoraatsthesis van Universiteit Antwerpen.
- \else
- \begin{tikzpicture}[remember picture,overlay]
- \node at (current page.center) {
- \begin{tikzpicture}[inner sep=0pt]
+ \AddToShipoutPicture*{%
+ \put(0,0){%
+ \begin{tikzpicture}[inner sep=0pt,outer sep=0pt]
\clip (0,0) rectangle(\paperwidth,\paperheight);
-
- \filldraw[uacorpblue]
- (0.5*\ua@X pt,\ua@B+\ua@R pt) circle (\ua@R pt)
- (\ua@X pt, 0.25*\ua@Y+\ua@R pt) circle (\ua@R pt);
-
- \node[anchor=south east] at (\ua@X-3*\ua@Z pt,\ua@h pt)
- {\includegraphics[width=\ua@L pt]{\@logo}};
-
+ \fill[lightgray]
+ (2.125,19) rectangle (\paperwidth,6);
\begin{scope}
- \clip
- (\ua@X pt, 0.25*\ua@Y+\ua@R pt) circle (\ua@R pt)
- (0.375*\ua@X pt,\ua@R+0.666*\ua@Y pt) circle (\ua@R pt);
-
- \node[anchor=south] at (0.5*\ua@X pt, 2.1*\ua@B pt)
- {\includegraphics[width=\ua@X pt]{\@titlepageimage}};
+ \clip (2.125,19) rectangle (\paperwidth,6);
+ \node[anchor=south west]
+ at (2.125,6)
+ {\ifx\@titlepageimage\@empty
+ \else
+ \includegraphics[keepaspectratio,
+ scale=0.01,
+ min size={15.875cm}{13cm}]{\@titlepageimage}
+ \fi};
\end{scope}
-
- \filldraw[uacorpbord]
- (0.375*\ua@X pt,\ua@R+0.666*\ua@Y pt) circle (\ua@R pt);
-
- \filldraw[white]
- (0.1*\ua@X pt,\ua@R+0.666*\ua@Y pt) circle (\ua@R pt);
- \node[anchor=north west,align=left,font=\large]
- at (3*\ua@Z pt, \ua@B - \ua@h pt)
- { \textcolor{uacorpblue}{\textsf{\@defenselocation,
- \@defensedate}} };
+ \node
+ [anchor=west,text width=13.75cm,align=left,font=\Huge,uauaside]
+ at (2.125,23.5)
+ {
+ \textsf{\textbf{\@title}}
+ };
- \node[anchor=south west,text width=\textwidth,align=left,font=\large]
- at (3*\ua@Z pt, 1.4*\ua@B pt)
- { \textcolor{white}{\textsf{\@affiliation}} };
-
- \node[anchor=south east,text width=\textwidth,align=right,font=\large]
- at (\ua@X - 3*\ua@Z pt, 1.4*\ua@B pt)
- { \textcolor{white}{\textsf{
- \supervisorsname\\
- \@supervisori%
- \ifdefvoid{\@supervisorii}{}{\\\@supervisorii}%
- \ifdefvoid{\@supervisoriii}{}{\\\@supervisoriii}%
- \ifdefvoid{\@supervisoriv}{}{\\\@supervisoriv}}}
+ \node
+ [anchor=west,text width=13.75cm,align=left,font=\Large,uauaside]
+ at (2.125,21.5)
+ {
+ \textsf{\textbf{\@subtitle}}
};
- \node[anchor=north west,text
- width=\ua@X-6*\ua@Z,align=left,font=\Huge]
- (title)
- at (3*\ua@Z pt,\ua@Y-4*\ua@Z pt)
- { \textsf{\textbf{\@title}} };
+ \node
+ [anchor=base west,maincolor,
+ text width=13.75cm,align=left,font=\LARGE]
+ at (2.125,20)
+ {\textsf{\textbf{\@author}}};
+
+ \fill[maincolor] (2.125,6)
+ -- (\paperwidth,6)
+ -- (\paperwidth,2.625)
+ -- (2.55,2.625)
+ arc (-90:-180:0.425)
+ -- cycle;
+
+ \node[white,anchor=west,align=left,font=\large]
+ (SN) at (2.55,4.9)
+ {
+ \begin{tabular}{@{}l@{~\,}p{11.5cm}}
+ \textsf{\supervisorsname}
+ & \textsf{\textbf{\jointsupervisors{ | }}}
+ \end{tabular}
+ };
- \node[anchor=north west,below=2.5ex of title,
- text width=\ua@X-6*\ua@Z,align=left,font=\large]
- { \textsf{\textbf{\@subtitle}} };
- \node[anchor=north west,text width=\ua@X-6*\ua@Z,align=left]
- at (3*\ua@Z pt,\ua@Y - 12.5*\ua@Z pt)
- { \textsf{\pthesisnamei{} \@phddegree{} \pthesisnameii{}} };
+ \node[white,anchor=west,text width=14.5cm,align=left,font=\small]
+ at (2.55,3.7)
+ {\textsf{\uantwerpendocsprop{pthesisnamei}
+ \@degree{}}\\
+ \textsf{\textbf{\@faculty{}
+ | \@defenselocation, \@defensedate}}};
- \node[anchor=north west, text width=\textwidth,align=left,font=\LARGE]
- at (3*\ua@Z pt, \ua@Y-15.5*\ua@Z pt)
- { \textsf{\textbf{\@author}} };
+ \node[anchor=west] at
+ (2.125,1.313)
+ {\includegraphics[width=4.75cm]{\logoposua}};
\end{tikzpicture}
- };
- \end{tikzpicture}
- \fi
+ }
+ }
\end{titlepage}%
+ ~\par\relax
\cleardoublepage
\begin{center}
- \includegraphics[width=\ua@L pt]{\@logo}
+ \includegraphics[width=4.75cm]{\logoposua}
\vfill
\@faculty\\
- \@programmeq\par
+ \@degree\par
\vfill
\Huge\textsf{\@title}\par
\large\textsf{\@subtitle}\par
\vfill
- \normalsize\pthesisnamei\\
- \@phddegree\\
- \pthesisnameii\\
+ \normalsize\uantwerpendocsprop{pthesisnamei}\\
+ \@degree\\
+ \uantwerpendocsprop{pthesisnameii}\\
\medskip
\textbf{\@author}
\vfill
@@ -3768,40 +3784,19 @@ L: \@qrlectureri
\begin{minipage}[b]{0.4\textwidth}
\flushright
\supervisorsname\\
- \@supervisori%
- \ifdefvoid{\@supervisorii}{}{\\\@supervisorii}%
- \ifdefvoid{\@supervisoriii}{}{\\\@supervisoriii}%
- \ifdefvoid{\@supervisoriv}{}{\\\@supervisoriv}
+ \jointsupervisors{\\}
\end{minipage}
\end{center}
\clearpage
- \textbf{\juryname}\hfill\par
- \textbf{\jurychairmanname}\hfill\break
+ \textbf{\uantwerpendocsprop{juryname}}\hfill\par
+ \textbf{\uantwerpendocsprop{jurychairmanname}}\hfill\break
\@jurychairman{}\ifdefvoid{\@jurychairmanaff}{}{, \@jurychairmanaff}\\
\hfill\break
\textbf{\supervisorsname}\hfill\break
- \ifdefvoid{\@supervisori}{}{\@supervisori
- \ifdefvoid{\@supervisoriaff}{}{, \@supervisoriaff}\\}
- \ifdefvoid{\@supervisorii}{}{\@supervisorii
- \ifdefvoid{\@supervisoriiaff}{}{, \@supervisoriiaff}\\}
- \ifdefvoid{\@supervisoriii}{}{\@supervisoriii
- \ifdefvoid{\@supervisoriiiaff}{}{, \@supervisoriiiaff}\\}
- \ifdefvoid{\@supervisoriv}{}{\@supervisoriv
- \ifdefvoid{\@supervisorivaff}{}{, \@supervisorivaff}\\}
+ \jointsupervisorswithaffiliation{\\}\\
\hfill\break
- \textbf{\jurymembersname}\hfill\break
- \ifdefvoid{\@jurymemberi}{}{\@jurymemberi
- \ifdefvoid{\@jurymemberiaff}{}{, \@jurymemberiaff\\}}
- \ifdefvoid{\@jurymemberii}{}{\@jurymemberii
- \ifdefvoid{\@jurymemberiiaff}{}{, \@jurymemberiiaff\\}}
- \ifdefvoid{\@jurymemberiii}{}{\@jurymemberiii
- \ifdefvoid{\@jurymemberiiiaff}{}{, \@jurymemberiiiaff\\}}
- \ifdefvoid{\@jurymemberiv}{}{\@jurymemberiv
- \ifdefvoid{\@jurymemberivaff}{}{, \@jurymemberivaff\\}}
- \ifdefvoid{\@jurymemberv}{}{\@jurymemberv
- \ifdefvoid{\@jurymembervaff}{}{, \@jurymembervaff\\}}
- \ifdefvoid{\@jurymembervi}{}{\@jurymembervi
- \ifdefvoid{\@jurymemberviaff}{}{, \@jurymemberviaff\\}}
+ \textbf{\uantwerpendocsprop{jurymembersname}}\hfill\break
+ \jointjurymembers{\\}
\hfill\break
\vfill
\textbf{Contact}\\
@@ -3811,7 +3806,7 @@ L: \@qrlectureri
\@address\\
\vfill
\copyright{} \@defensedate{} \@author\\
- \arrname.
+ \uantwerpendocsprop{arr}.
\vfill
\begin{minipage}[b]{.5\linewidth}
\ifdefempty{\@isbn}{}{ISBN \@isbn}~\\
@@ -3841,13 +3836,11 @@ L: \@qrlectureri
%
% \begin{macro}{\makefinalpage}
% Below, one can find the code for the final page of the
-% |uantwerpenphdthesis| class:
+% |phdthesis| class:
% \changes{v2.0}{2018/03/14}{Implemented final page}
% \begin{macrocode}
%<*pt>
\newcommand\makefinalpage{
- \if@titlepagetableonly
- \else
\cleardoublepage
\thispagestyle{empty}
~% intentionally blank page
@@ -3857,26 +3850,159 @@ L: \@qrlectureri
\node at (current page.center) {
\begin{tikzpicture}[inner sep=0pt]
\clip (0,0) rectangle(\paperwidth,\paperheight);
- \fill[uacorpblue] (0,0) rectangle(\ua@X pt,\ua@Y pt);
- \filldraw [white] (1.2*\ua@X pt,\ua@R+0.125*\ua@Y pt) circle (\ua@R pt);
- \filldraw [uacorpbord] (1.375*\ua@X pt,\ua@R+0.666*\ua@Y pt)
- circle (\ua@R pt);
+ \fill[sidecolor] (0,0) rectangle (2.125cm,2.625cm);
\end{tikzpicture}
};
\end{tikzpicture}
- \fi
}
%</pt>
% \end{macrocode}
% \end{macro}
%
+% \subsection{Title page for the report clases}
%
-% \subsection{Title page for the letter class}
+% The title page is generated using the |\maketitle| command. As the
+% report class from which we inherit already defines this command, we
+% need to renew it.
+%
+% \begin{macro}{\maketitle}
+% Below, one can find the code for the title page of the
+% |report| class:
+% \begin{macrocode}
+%<*rp>
+\renewcommand\maketitle{%
+ \pagestyle{empty}
+ \begin{titlepage}
+ \AddToShipoutPicture*{%
+ \put(0,0){%
+ \begin{tikzpicture}[inner sep=0pt,outer sep=0pt]
+ \clip (0,0) rectangle(\paperwidth,\paperheight);
+ \fill[lightgray]
+ (2.125,20.192) rectangle (\paperwidth,6);
+ \begin{scope}
+ \clip (2.125,20.192) rectangle (\paperwidth,6);
+ \node[anchor=south west]
+ at (2.125,6)
+ {\ifx\@titlepageimage\@empty
+ \else
+ \includegraphics[keepaspectratio,
+ scale=0.01,
+ min size={18.875cm}{14.192cm}]{\@titlepageimage}
+ \fi};
+ \end{scope}
+
+ \node
+ [anchor=west,text width=17cm,align=left,font=\Huge,uauaside]
+ at (2.125,\paperheight-3cm)
+ {
+ \textsf{\textbf{\@title}}
+ };
+
+ \node
+ [anchor=west,text width=17cm,align=left,font=\Large,uauaside]
+ at (2.125,\paperheight-5cm)
+ {
+ \textsf{\textbf{\@subtitle}}
+ };
+
+ \node
+ [anchor=base west,maincolor,
+ text width=17cm,align=left,font=\LARGE]
+ at (2.125,\paperheight-6.5cm)
+ {\textsf{\textbf{\@author}}};
+
+ \fill[maincolor] (2.125,6)
+ -- (\paperwidth,6)
+ -- (\paperwidth,2.625)
+ -- (2.55,2.625)
+ arc (-90:-180:0.425)
+ -- cycle;
+
+ \node[white,anchor=west,text width=17cm,align=left,font=\small]
+ at (2.55,5.3)
+ {\textsf{\textbf{\@extra}}};
+
+ \node[white,anchor=west,text width=17cm,align=left,font=\small]
+ at (2.55,4)
+ {\textsf{\textbf{\@affiliation{}
+ | \@versionyear}\\
+ \@address}};
+
+ \node[anchor=west] at
+ (2.125,1.313)
+ {\includegraphics[width=4.75cm]{\logopos}};
+ \end{tikzpicture}
+ }
+ }
+ \end{titlepage}%
+ ~\par\relax
+ \cleardoublepage
+ \begin{center}
+ \includegraphics[width=4.75cm]{\logopos}
+ \vfill
+ \@affiliation\\
+ \@extra\par
+ \vfill
+ \Huge\textsf{\@title}\par
+ \large\textsf{\@subtitle}\par
+ \vfill
+ \textbf{\@author}
+ \vfill
+ \end{center}
+ \clearpage
+ \vfill
+ \textbf{Contact}\\
+ \smallskip
+ \@author\\
+ \@affiliation\\
+ \@address\\
+ \vfill
+ \copyright{} \@versionyear{} \@author\\
+ \uantwerpendocsprop{arr}.
+ \vfill
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@thanks\@empty
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+ \pagestyle{fancy}
+ \thispagestyle{empty}
+ \
+}
+%</rp>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\makefinalpage}
+% Below, one can find the code for the final page of the
+% |phdthesis| class:
+% \changes{v2.0}{2018/03/14}{Implemented final page}
+% \begin{macrocode}
+%<*rp>
+\newcommand\makefinalpage{
+ \cleardoublepage
+ \thispagestyle{empty}
+ ~% intentionally blank page
+ \clearpage
+ \thispagestyle{empty}
+ \begin{tikzpicture}[remember picture,overlay]
+ \node at (current page.center) {
+ \begin{tikzpicture}[inner sep=0pt]
+ \clip (0,0) rectangle(\paperwidth,\paperheight);
+ \fill[sidecolor] (0,0) rectangle (2.125cm,2.625cm);
+ \end{tikzpicture}
+ };
+ \end{tikzpicture}
+}
+%</rp>
+% \end{macrocode}
+% \end{macro}
%
-% \subsubsection{Bottom cords}
-% \changes{v1.5}{2016/01/11}{Removed documentation}
-% The graphical footer of the page is provided through PDF/PS
-% includes in a Dutch and a non-dutch version.
+%
+% \subsection{Title page for the letter class}
%
% \subsubsection{Title Page}
%
@@ -3922,9 +4048,9 @@ L: \@qrlectureri
\begin{tikzpicture}[anchor=north west,align=left,outer sep=0,inner sep=0]
\path
(0,0) node { \scriptsize \strut
- \textcolor{gray}{\uppercase\expandafter{\datename} } }
+ \textcolor{gray}{\uppercase\expandafter{\uantwerpendocsprop{datename}} } }
(4cm,0) node { \scriptsize \strut
- \textcolor{gray}{\uppercase\expandafter{\subjectname} } }
+ \textcolor{gray}{\uppercase\expandafter{\uantwerpendocsprop{subjectname}} } }
(0,-2.5ex) node { \strut \@date }
(4cm,-2.5ex) node[align=left] { \strut \@subject };
\end{tikzpicture}~\\[4ex]
@@ -3965,192 +4091,191 @@ L: \@qrlectureri
\pagestyle{fancy}
\AddToShipoutPicture*{%
\put(0,0){%
- \begin{tikzpicture}[remember picture,overlay]
- \node at (current page.center) {
- \begin{tikzpicture}
- \clip (0,0) rectangle (21,29.7);
- \draw
- ( 3,9.7) -- ( 3,23.7)
- ( 0,23.7) -- +(21,0)
- ( 3,20.8) -- +(21,0)
- ( 3,18.8) -- +(21,0)
- ( 3,16.8) -- +(21,0)
- (14,9.7) -- (14,13.7)
- ( 3,13.7) -- +(21,0)
- ( 3,11.7) -- +(21,0)
- ( 0,9.7) -- +(21,0);
-
- \draw[ultra thick]
- ( 3,16.8) +(0,-0.5) -- +(0,0) -- +(0.5,0)
- ( 3,13.7) +(0,+0.5) -- +(0,0) -- +(0.5,0)
- (21,16.8) +(0,-0.5) -- +(0,0) -- +(-0.5,0)
- (21,13.7) +(0,+0.5) -- +(0,0) -- +(-0.5,0);
-% (14,15.7) +(-0.5,0) -- +(0,0) +(0,-0.5) -- +(0,0) -- +(0.5,0)
-% (14,11.7) +(-0.5,0) -- +(0,0) +(0,+0.5) -- +(0,0) -- +(0.5,0)
-
- \foreach \nn in {0,1,...,7} {
- \draw (16.5,13.9) ++({0.5*\nn},0) rectangle +(0.5,0.8);
- }
+ \begin{tikzpicture}[inner sep=0pt,outer sep=0pt]
+ \clip (0,0) rectangle(\paperwidth,\paperheight);
+ \fill[lightgray]
+ (2.125,{\paperheight-7cm}) rectangle (\paperwidth,6);
+
+ \node
+ [anchor=west,text width={\paperwidth-5cm},align=left]
+ at (2.125,{\paperheight-3cm})
+ {%
+ \fontfamily{phv}\fontsize{18}{22}\fontseries{b}%
+ \fontshape{n}\selectfont%
+ \@course{}
+ \ifx\@exampart\@emptymacro
+ \else --- \@exampart\fi
+ };
+ \node
+ [anchor=west,text width={\paperwidth-5cm},align=left]
+ at (2.125,{\paperheight-4cm})
+ {%
+ \fontfamily{phv}\fontsize{12}{18}\fontseries{b}%
+ \fontshape{n}\selectfont%
+ \@coursecode
+ };
- \foreach \nn in {0,1,...,33} {
- \draw (3.5,15.3) ++({0.5*\nn},0) rectangle +(0.5,0.8);
- }
- \foreach \nn in {0,1,...,23} {
- \draw (3.5,13.9) ++({0.5*\nn},0) rectangle +(0.5,0.8);
- }
-
- \path
- (3,25.2) node[anchor=north west] {
- \parbox{14cm}{
- \fontfamily{phv}\fontsize{12}{15}\fontseries{b}\selectfont
- \@faculty\\
- \fontfamily{phv}\fontsize{11}{14}\fontseries{m}\selectfont
- \@programmet \@programmec\
- \ifx\@programmeq\@emptymacro\else--- \@programmeq\fi
- }
- }
- (3.3,23) node[anchor=north west] {
- \parbox{16cm}{
- \fontfamily{phv}\fontsize{18}{22}\fontseries{b}
- \fontshape{n}\selectfont
- \raggedright \@coursei{}
- \ifx\@exampart\@emptymacro
- \else --- \@exampart\fi
- \fontfamily{phv}\fontsize{12}{18}\fontseries{m}
- \fontshape{n}\selectfont\\
- Reeks \@examgroupnumber{} \hfill \@examdate{} }
- }
- (3.3,20.1) node[anchor=north west] {
- \parbox{14cm}{
- \fontfamily{phv}\fontsize{12}{15}\fontseries{m}\selectfont
- \@coursecodei
- }
- }
- (3.3,18.6) node[anchor=north west] {
- \parbox{14cm}{
- \fontfamily{phv}\fontsize{12}{18}\fontseries{m}
- \fontshape{n}\selectfont
- \raggedright \ifdef{\dateenglish}{Professor(s) --- }
- {}Titularis(sen):\\
- \fontfamily{phv}\fontsize{14}{20}\fontseries{m}
- \fontshape{n}\selectfont
- \raggedright \@author{}
- }
- }
- (3.3,16.7) node[anchor=north west] {
- \parbox{10cm}{
- \fontfamily{phv}\fontsize{12}{15}\fontseries{m}
- \fontshape{n}\selectfont
- \raggedright \ifdef{\dateenglish}{Last name
- --- }{}
- Naam:}
- }
- (3.3,15.25) node[anchor=north west] {
- \parbox{10cm}{
- \fontfamily{phv}\fontsize{12}{15}\fontseries{m}
- \fontshape{n}\selectfont
- \raggedright \ifdef{\dateenglish}{First name
- --- }{}
- Voornaam:}
- }
- (16.3,15.25) node[anchor=north west] {
- \parbox{5cm}{
- \fontfamily{phv}\fontsize{12}{15}\fontseries{m}
- \fontshape{n}\selectfont
- \raggedright \ifdef{\dateenglish}{Docket No. --- }
- {}Rolnr.:}
- }
-
- (3.3,11.5) node[anchor=north west] {
- \parbox{14cm}{
- \fontfamily{phv}\fontsize{12}{21}\fontseries{m}
- \fontshape{n}\selectfont
- \raggedright \ifdef{\dateenglish}{Exam duration --- }
- {}Duur van het examen: \@examlength\\
- }
- }
- (14.3,11.5) node[anchor=north west] {
- \parbox{5cm}{
- \fontfamily{phv}\fontsize{12}{15}\fontseries{m}
- \fontshape{n}\selectfont
- \raggedright \ifdef{\dateenglish}{Start --- }
- {}Begin: \@tstart \\[1ex]
- \raggedright \ifdef{\dateenglish}{End --- }
- {}Einde~: \@tend
- }
- }
- (3.3,13.5) node[anchor=north west] {
- \parbox{14cm}{
- \fontfamily{phv}\fontsize{12}{21}\fontseries{m}
- \fontshape{n}\selectfont
- \raggedright \ifdef{\dateenglish}{Room --- }
- {}Lokaal: \@rooms
-
- }
- }
- (3,27.7) node[anchor=north west] {
- \includegraphics[width=7cm]{\@logo}
- };
- \end{tikzpicture}
+ \node
+ [anchor=west,text width={\paperwidth-5cm},align=left,font=\large]
+ at (2.125,{\paperheight-5cm})
+ {%
+ \fontfamily{phv}\fontsize{12}{18}\fontseries{m}%
+ \fontshape{n}\selectfont%
+ \uantwerpendocsprop{seriesname} \@examgroupnumber{} \hfill \@examdate{}
+ };
+
+ \node[anchor=south west,align=left,inner sep=0pt] at (3,21)
+ {%
+ \fontfamily{phv}\fontsize{14}{19}\fontseries{b}%
+ \fontshape{n}\selectfont%
+ \uantwerpendocsprop{examname}
+ };
+
+ \node[anchor=south west,align=left,inner sep=0pt] at (3,19)
+ {%
+ \fontfamily{phv}\fontsize{12}{18}\fontseries{m}%
+ \fontshape{n}\selectfont%
+ \uantwerpendocsprop{lastname}
+ };
+ \foreach \nn in {0,1,...,33} {
+ \draw[fill=white] (3,18) ++({0.5*\nn},0) rectangle +(0.5,0.8);
+ }
+
+ \node[anchor=south west,align=left,inner sep=0pt] at (3,17)
+ {%
+ \fontfamily{phv}\fontsize{12}{18}\fontseries{m}%
+ \fontshape{n}\selectfont%
+ \uantwerpendocsprop{firstname}
};
+
+ \foreach \nn in {0,1,...,23} {
+ \draw[fill=white] (3,16) ++({0.5*\nn},0) rectangle +(0.5,0.8);
+ }
+
+ \node[anchor=south west,align=left,inner sep=0pt] at (16,17)
+ {%
+ \fontfamily{phv}\fontsize{12}{18}\fontseries{m}%
+ \fontshape{n}\selectfont%
+ \uantwerpendocsprop{docketname}
+ };
+ \foreach \nn in {0,1,...,7} {
+ \draw[fill=white] (16,16) ++({0.5*\nn},0) rectangle +(0.5,0.8);
+ }
+
+ \node[anchor=south west,align=left,inner sep=0pt,text width=17cm]
+ at (3,14)
+ {%
+ \fontfamily{phv}\fontsize{12}{21}\fontseries{m}%
+ \fontshape{n}\selectfont%
+ \uantwerpendocsprop{examdurationname}: \@examlength
+ };
+ \node[anchor=south west,align=left,inner sep=0pt,text width=17cm]
+ at (3,11)
+ {%
+ \fontfamily{phv}\fontsize{12}{15}\fontseries{m}%
+ \fontshape{n}\selectfont%
+ \begin{tabular}{@{}l@{}ll}%
+ \uantwerpendocsprop{examstartname}& : & \@tstart\\
+ \uantwerpendocsprop{examendname} & : & \@tend
+ \end{tabular}
+ };
+
+ \node[anchor=south west,align=left,inner sep=0pt,text width=17cm]
+ at (3,8)
+ {%
+ \fontfamily{phv}\fontsize{12}{21}\fontseries{m}%
+ \fontshape{n}\selectfont%
+ \roomsname: \jointrooms{, }
+ };
+
+ \node
+ [anchor=base west,uauamain,
+ text width={\paperwidth-5cm},align=left,font=\LARGE]
+ at (2.125,{\paperheight-6.5cm})
+ {\textsf{\textbf{\@author}}};
+
+ \fill[gray] (2.125,6)
+ -- (\paperwidth,6)
+ -- (\paperwidth,2.625)
+ -- (2.55,2.625)
+ arc (-90:-180:0.425)
+ -- cycle;
+
+ \node[white,anchor=west,align=left,font=\large]
+ (SN) at (2.55,4.9)
+ {
+ \begin{tabular}{@{}l@{~\,}p{14.5cm}}
+ \textsf{\lecturersname}
+ & \textsf{\textbf{\jointlecturers{ | }}}
+ \end{tabular}
+ };
+
+ \node[white,anchor=west,text width=17.5cm,align=left,font=\small]
+ at (2.55,3.7)
+ {\textsf{\@degree{}}\\
+ \textsf{\textbf{\@faculty{}}}};
+
+ \node[anchor=west] at (2.125,1.313)
+ {\includegraphics[width=4.75cm]{\logopos}};
\end{tikzpicture}
}
}
- \vspace*{17cm}
- \ifx\@qrtitle\@emptymacro
- \else
- \@extrainfo
- \fi
+ ~\par\relax
+ \clearpage
+ \lfoot[\small \@shorttitle]{\small \@shorttitle}
+ \rfoot[\small Groep \@examgroupnumber{} ---
+ \@academicyear]{\small Groep \@examgroupnumber{} --- \@academicyear}
+ \renewcommand*{\footrulewidth}{1pt}
}
-%</ex>
+%</ex>
% \end{macrocode}
% \end{macro}
-%
-%
+%
+%
% \subsection{Auxiliary functions to typeset exams}
-%
+%
% \begin{macro}{\question}
-% Add a small box with the weight of the question on the current line
-% (right aligned).
-%
+% Add a small box with the weight of the question on the current line
+% (right aligned).
+%
% \begin{macrocode}
-%<*ex>
+%<*ex>
\newcounter{question}
\setcounter{question}{0}
-\renewcommand\thequestion{\@arabic\c@question}
+\renewcommand*\thequestion{\@arabic\c@question}
\newcommand{\question}[1]{
\stepcounter{question}
\thequestion.~#1%
}
-%</ex>
+%</ex>
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\questionweight}
-% Add a small box with the weight of the question on the current line
-% (right aligned).
-%
+% Add a small box with the weight of the question on the current line
+% (right aligned).
+%
% \begin{macrocode}
-%<*ex>
-\newcommand{\questionweight}[1]{%
+%<*ex>
+\newcommand*{\questionweight}[1]{%
\hspace{\fill}
\begin{tabular}{|c|}
\hline
- \small \weightname: #1\\
+ \small \uantwerpendocsprop{weightname}: #1\\
\hline
\end{tabular}\\
}
-%</ex>
+%</ex>
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\engdut}
-% typesets the question in two columns, the left column taking the
-% English variant of the question and the right column taking the
-% Dutch variant.
-% \changes{v2.1}{2018/06/20}{\@ Increased intercolumn spacing for engdut}
+% typesets the question in two columns, the left column taking the
+% English variant of the question and the right column taking the
+% Dutch variant.
+% \changes{v2.1}{2018/06/20}{\@ Increased intercolumn spacing for engdut}
% \begin{macrocode}
-%<*ex>
+%<*ex>
\newcommand{\engdut}[2]{%
\begin{tabular}{ccc}%
\selectlanguage{english}%
@@ -4158,123 +4283,123 @@ L: \@qrlectureri
#1
\end{minipage}%
&~~~&
- \selectlanguage{dutch}%
- \begin{minipage}[t]{0.45\textwidth}%
- #2
- \end{minipage}%
+ \selectlanguage{dutch}%
+ \begin{minipage}[t]{0.45\textwidth}%
+ #2
+ \end{minipage}%
\end{tabular}
\selectlanguage{english}%
}
-%</ex>
+%</ex>
% \end{macrocode}
% \end{macro}
-%
-%
+%
+%
% \changes{v2.1}{2018/06/20}{Allow for setting the multiple choice
% mark symbol}
% \begin{macro}{\setmcsymbol}
-% sets the symbol to be used as multiple choice mark (by default a
-% square).
+% sets the symbol to be used as multiple choice mark (by default a
+% square).
% \begin{macrocode}
-%<*ex>
-\newcommand\@mcsymbol{\square}
-\newcommand\setmcsymbol[1]{\renewcommand\@mcsymbol{#1}}
-%</ex>
+%<*ex>
+\newcommand*\@mcsymbol{\square}
+\newcommand*\setmcsymbol[1]{\renewcommand\@mcsymbol{#1}}
+%</ex>
% \end{macrocode}
% \end{macro}
-%
+%
% \changes{v2.1}{2018/06/20}{Corrected erroneous line breaking}
% \begin{macro}{\mc}
-% typesets a multiple choice answer candidate (monolingual, i.e. in a
-% single column).
+% typesets a multiple choice answer candidate (monolingual, i.e. in a
+% single column).
% \begin{macrocode}
-%<*ex>
+%<*ex>
\newcommand\mc[1]{%
\hfill\break\qquad\begin{tabular}{cc}
- $\@mcsymbol$
- &
- \begin{minipage}[t]{0.9\textwidth}%
- #1
- \end{minipage}%
- \end{tabular}
-}
-%</ex>
+ $\@mcsymbol$
+ &
+ \begin{minipage}[t]{0.9\textwidth}%
+ #1
+ \end{minipage}%
+ \end{tabular}
+ }
+%</ex>
% \end{macrocode}
% \end{macro}
-%
+%
% \changes{v2.1}{2018/06/20}{Corrected erroneous line breaking}
-%
+%
% \begin{macro}{\engdutmc}
-% typesets a multiple choice answer candidate in two columns, the left
-% column taking the English variant of the question and the right
-% column taking the Dutch variant.
-%
+% typesets a multiple choice answer candidate in two columns, the left
+% column taking the English variant of the question and the right
+% column taking the Dutch variant.
+%
% \begin{macrocode}
-%<*ex>
+%<*ex>
\newcommand{\engdutmc}[2]{%
\hfill\break\begin{tabular}{cccc}
- $\@mcsymbol$
- &
- \selectlanguage{english}%
- \begin{minipage}[t]{0.42\textwidth}%
- #1
- \end{minipage}%
- &---&
- \selectlanguage{dutch}%
- \begin{minipage}[t]{0.42\textwidth}%
- #2
- \end{minipage}%
- \end{tabular}
- \selectlanguage{english}%
-}
-%</ex>
+ $\@mcsymbol$
+ &
+ \selectlanguage{english}%
+ \begin{minipage}[t]{0.42\textwidth}%
+ #1
+ \end{minipage}%
+ &---&
+ \selectlanguage{dutch}%
+ \begin{minipage}[t]{0.42\textwidth}%
+ #2
+ \end{minipage}%
+ \end{tabular}
+ \selectlanguage{english}%
+ }
+%</ex>
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\insertsolutionspagepartial}
% fills the remainder of the page with 'fill-out' squares.
% as observing/controlling the current line position in \LaTeX{} is
% not easiy, one has to provide the number of centimeters below the
% bottom of the page, one wants to start the fill-out squares.
-%
+%
% \changes{v2.5}{}{Corrected for 'one page too early' in solutionspagepartial}
-%
+%
% \begin{macrocode}
-%<*ex>
+%<*ex>
\newcommand\insertsolutionspagepartial[1]{
~\relax
\AddToShipoutPicture*{%
\put(0,0){%
\begin{tikzpicture}
\clip (0,0) rectangle (21,#1);
-% \draw[densely dotted, step=0.5cm,black!20] (0.999,0.990) grid (20,1.5);
- \draw[densely dotted, step=0.5cm,black!20] (0.999,1.499) grid (2,2.5);
- \draw[densely dotted, step=0.5cm,black!20] (18.999,1.499) grid (20,2.5);
-
- \draw[densely dotted, step=0.5cm,black!20] (0.999,2.499) grid (20,27);
- \draw[densely dotted, step=0.5cm,black!20] (0.999,27) grid (16,28);
- \draw[densely dotted, step=0.5cm,black!20] (19.499,27) grid (20,28);
- \draw[densely dotted, step=0.5cm,black!20] (0.99,27.999) grid
- (20,28.5);
- \draw[ultra thick] (1,#1) -- (20,#1);
- \end{tikzpicture}
- }
- }%
- \clearpage
- \relax
+% \draw[densely dotted, step=0.5cm,black!20] (0.999,0.990) grid (20,1.5);
+\draw[densely dotted, step=0.5cm,black!20] (0.999,1.499) grid (2,2.5);
+\draw[densely dotted, step=0.5cm,black!20] (18.999,1.499) grid (20,2.5);
+
+\draw[densely dotted, step=0.5cm,black!20] (0.999,2.499) grid (20,27);
+\draw[densely dotted, step=0.5cm,black!20] (0.999,27) grid (16,28);
+\draw[densely dotted, step=0.5cm,black!20] (19.499,27) grid (20,28);
+\draw[densely dotted, step=0.5cm,black!20] (0.99,27.999) grid
+(20,28.5);
+\draw[ultra thick] (1,#1) -- (20,#1);
+\end{tikzpicture}
+}
+}%
+\clearpage
+\relax
}
-%</ex>
+%</ex>
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\insertsolutionspage}
% inserts a full solutions page, i.e. flushes the current page and
% inserts a full page with 'fill-out' squares.
% The argument allows for specifying a watermark text (e.g. 'Scrap
% paper').
-%
+%
% \begin{macrocode}
-%<*ex>
+%<*ex>
\newcommand\insertsolutionspage[1]{
\clearpage
\AddToShipoutPicture*{%
@@ -4291,59 +4416,34 @@ L: \@qrlectureri
}
\put(120,150){\rotatebox{60}{\textcolor{watermark}{
\fontfamily{phv}\fontsize{105}{130}\fontseries{m}\fontshape{n}\selectfont
- #1}
+ #1}
}
}
}%
~\relax
}
-%</ex>
+%</ex>
% \end{macrocode}
% \end{macro}
-%
+%
% We add a lastpage label to the final page
% \begin{macrocode}
-%<*ex>
+%<*ex>
\AtEndDocument{
\label{lastpage}
}
-%</ex>
-% \end{macrocode
-%
+%</ex>
+% \end{macrocode
+%
% \subsection{References}
% \begin{macrocode}
-%<*ct|bmt|pt>
-\IfFileExists{varioref.sty}{\RequirePackage{varioref}}{}
-%</ct|bmt|pt>
-%
-%<*ct>
-\IfFileExists{hyperref.sty}{
- \RequirePackage[backref,hyperindex=true,pagebackref=true]{hyperref}
- \hypersetup{
- breaklinks=true,
- colorlinks=true,
- citecolor=black,
- filecolor=black,
- linkcolor=black,
- pageanchor=true,
- pdfpagemode=UseOutlines,
- urlcolor=black
- }
- \AtBeginDocument{
- \hypersetup{
- pdftitle={\@title},
- pdfsubject={\@subtitle},
- pdfauthor={\@author}
- }
- }
-}{}
-%</ct>
-%
-%
-%<*bmt|pt>
-\IfFileExists{hyperref.sty}{
- \RequirePackage[backref,hyperindex=true,pagebackref=true]{hyperref}
+%<*ct|bmt|pt|rp>
+\AtBeginDocument{
+ \@ifpackageloaded{hyperref}{
\hypersetup{
+ backref=true,
+ hyperindex=true,
+ pagebackref=true,
breaklinks=true,
colorlinks=true,
citecolor=black,
@@ -4351,23 +4451,21 @@ L: \@qrlectureri
linkcolor=black,
pageanchor=true,
pdfpagemode=UseOutlines,
- urlcolor=black
+ urlcolor=black,
+ pdftitle={\@title},
+ pdfsubject={\@subtitle},
+ pdfauthor={\@author}
}
- \AtBeginDocument{
- \hypersetup{
- pdftitle={\@title},
- pdfsubject={\@subtitle},
- pdfauthor={\@author}
- }
- }
-}{}
-%</bmt|pt>
+ }{}
+}
+%</ct|bmt|pt|rp>
% \end{macrocode}
+%
% \section{The beamer theme}
% \subsection{User guide}
-%
+%
% \begin{verbatim}
-%<*bmrug>
+%<*bmrug>
\documentclass[aspectratio=1610]{beamer}
\usetheme[ti]{uantwerpen}
\usepackage[english]{babel}
@@ -4375,12 +4473,12 @@ L: \@qrlectureri
% The packages below are for demonstration purpose only.
% They are not required for the template to work
\usepackage{metalogo}
-\usepackage{lipsum}
+\usepackage{kantlipsum}
\usepackage{pgfplots}
\usepackage{booktabs}
% some stuff to typeset code
-\newcommand\command[1]{{\tt \textbackslash #1}}
+\newcommand*\command[1]{{\tt \textbackslash #1}}
\NewEnviron{codesnippet}[1][0.8\textwidth]{
\scriptsize
\qquad\framebox[#1][l]{\texttt{
@@ -4391,9 +4489,9 @@ L: \@qrlectureri
}
}
}
-\newcommand\ind[1][2ex]{\hspace*{#1}}
-\newcommand\bframe[1][]{\command{begin}\{#1frame\}}
-\newcommand\eframe[1][]{\command{end}\{#1frame\}}
+\newcommand*\ind[1][2ex]{\hspace*{#1}}
+\newcommand*\bframe[1][]{\command{begin}\{#1frame\}}
+\newcommand*\eframe[1][]{\command{end}\{#1frame\}}
\title{This is your \texttt{\textbackslash{}title{}}}
\subtitle[my short title]{This is your \texttt{\textbackslash{}subtitle{}}}
@@ -4436,9 +4534,9 @@ L: \@qrlectureri
You can load the package in your preamble as:
\begin{codesnippet}
- \command{documentclass}[aspectratio=1610]\{beamer\}\\
- \command{usetheme}[theme-options-go-here]\{uantwerpen\}\\
- \command{usepackage}[english]\{babel\}
+ \command{documentclass}[aspectratio=1610]\{beamer\}\\
+ \command{usetheme}[theme-options-go-here]\{uantwerpen\}\\
+ \command{usepackage}[english]\{babel\}
\end{codesnippet}
\heading{Remarks}
@@ -4542,7 +4640,7 @@ L: \@qrlectureri
\ind\command{maketitle}\\
\eframe
\end{codesnippet}
-
+
with no option, or one of: \texttt{normal}, \texttt{negative},
\texttt{negativefill}.
\end{frame}
@@ -4610,8 +4708,8 @@ L: \@qrlectureri
\begin{itemize}
\item You don't need to specify the normal canvas, it is the
default.
- \item In handout mode the negative and negativefill canvas will be
- typeset as normal canvas (to allow for easy printing).
+ \item In handout mode the negative and negativefill canvas will be
+ typeset as normal canvas (to allow for easy printing).
\item The graphic option has many variants that we will discuss later.
\end{itemize}
\end{frame}
@@ -4619,7 +4717,7 @@ L: \@qrlectureri
\begin{frame}[negativefill]
{A negativefill slide}
{with a subtle subtitle}
- \lipsum[1]
+ \kant[1]
\end{frame}
\begin{frame}[negative,t]
@@ -4675,22 +4773,22 @@ L: \@qrlectureri
can be specified as \LaTeX-color \emph{sidecolor}\\
\textcolor{basecolor}{Base color}:
can be specified as \LaTeX-color
- \emph{basecolor}
-
- \heading{Advice}\\
- \begin{itemize}
- \item Stick to the standard colors or use grayscale tints!
- \item Only use color when functional (e.g. in graphs)
- \end{itemize}
-
- \heading{Alert}
- You can use \alert{\command{alert{}}} to grab the attention of the
- user. It will typeset your content in \alert{red}.
-
- \heading{Not taking any advice?}\\
- You can fiddle with the colors, but do so in smart way.
- Use \command{setbeamercolor}. You can see how it is used in the
- \texttt{beamercolorthemeuantwerpen.sty} file.
+ \emph{basecolor}
+
+ \heading{Advice}\\
+ \begin{itemize}
+ \item Stick to the standard colors or use grayscale tints!
+ \item Only use color when functional (e.g. in graphs)
+ \end{itemize}
+
+ \heading{Alert}
+ You can use \alert{\command{alert{}}} to grab the attention of the
+ user. It will typeset your content in \alert{red}.
+
+ \heading{Not taking any advice?}\\
+ You can fiddle with the colors, but do so in smart way.
+ Use \command{setbeamercolor}. You can see how it is used in the
+ \texttt{beamercolorthemeuantwerpen.sty} file.
\end{frame}
\begin{frame}[t]
@@ -4757,7 +4855,7 @@ L: \@qrlectureri
\end{center}
\end{frame}
-
+
\begin{l3qframe}[rqgraphic]
{Some Random Title}
{Please, adapt!}
@@ -4776,8 +4874,8 @@ L: \@qrlectureri
\subheading{Remarks}
\begin{itemize}
\item Load photo as:\\
- \command{includegraphics[width=0.25\command{paperwidth}, min height=\command{textheight}]
- \{image.jpg\}}
+ \command{includegraphics[width=0.25\command{paperwidth}, min height=\command{textheight}]
+ \{image.jpg\}}
\item If \texttt{rqgraphic} is specified without argument, a standard photo
is loaded.
\item Note: you can avoid rounding the corner using the
@@ -5012,7 +5110,7 @@ L: \@qrlectureri
\ind\ind\command{uantwerpencallout}[fill opacity=0.5]\{4.5\}\{2.5\}\{\\
\ind\ind\ind\command{bfseries} I'll be back!\textbackslash\textbackslash[1ex]\\
\ind\ind\ind Arnold Schwarzenegger\}\\
- \}
+ \}
\eframe
\end{codesnippet}
\medskip
@@ -5128,10 +5226,10 @@ L: \@qrlectureri
that you must load after (!) the \command{usetheme} command.\\[1ex]
\begin{codesnippet}[0.95\textwidth]
\command{AtBeginDocument\{}\\
- \ind\command{renewcommand}\command{logopos\{your-pos-logo-filename-here\}}\\
- \ind\command{renewcommand}\command{logoneg\{your-negative-logo-filename-here\}}\\
- \ind\command{renewcommand}\command{logomonowhite\{your-mono-logo-filename-here\}}\\
- \ind\command{renewcommand}\command{iconfile\{your-icon-filename-here\}}\\
+ \ind\command{renewcommand*}\command{logopos\{your-pos-logo-filename-here\}}\\
+ \ind\command{renewcommand*}\command{logoneg\{your-negative-logo-filename-here\}}\\
+ \ind\command{renewcommand*}\command{logomonowhite\{your-mono-logo-filename-here\}}\\
+ \ind\command{renewcommand*}\command{iconfile\{your-icon-filename-here\}}\\
\ind\command{colorlet\{maincolor\}\{your-favorite-color\}}\\
\ind\command{colorlet\{sidecolor\}\{your-secondfavorite-color\}}\\
\ind\command{colorlet\{basecolor\}\{some-solid-color\}}\\
@@ -5169,113 +5267,41 @@ L: \@qrlectureri
\end{frame}
\end{document}
-%</bmrug>
+%</bmrug>
% \end{verbatim}
-%
+%
% \subsection{Implementation}
-%
+%
% \subsubsection{Main beamer theme}
-%
+%
% \begin{macrocode}
-%<*bmr>
-% Copyright 2021 by Walter Daems <walter.daems@uantwerpen.be>
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/licenses/LICENSE for more details.
+%<*bmr>
+% Copyright 2021 by Walter Daems <walter.daems@uantwerpen.be>
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/licenses/LICENSE for more details.
\newif\if@nofonts
\@nofontsfalse
\DeclareOption{nofonts}{\@nofontstrue}
-\newif\if@neutralcolors
-\@neutralcolorsfalse
-\DeclareOption{neutralcolors}{\@neutralcolorstrue}
-\newcommand\colormodel{rgb}
-\newif\if@cmyk
-\@cmykfalse
-\DeclareOption{cmyk}{\renewcommand\colormodel{cmyk}\@cmyktrue}
-\DeclareOption{rgb}{\renewcommand\colormodel{rgb}\@cmykfalse}
+\input{uantwerpencommonoptions.clo}
-\newcommand\fselector{ua}
-\newcommand\lselector{en}
-\newlength\logounitheight
-\setlength\logounitheight{0.8cm}
-\DeclareOption{be}{
- \renewcommand\fselector{be}
- \setlength\logounitheight{1cm}
-}
-\DeclareOption{fbd}{
- \renewcommand\fselector{fbd}
- \setlength\logounitheight{1cm}
-}
-\DeclareOption{ggw}{
- \renewcommand\fselector{ggw}
- \setlength\logounitheight{1cm}
-}
-\DeclareOption{lw}{
- \renewcommand\fselector{lw}
- \setlength\logounitheight{1cm}
-}
-\DeclareOption{ow}{
- \renewcommand\fselector{ow}
- \setlength\logounitheight{1cm}
-}
-\DeclareOption{re}{
- \renewcommand\fselector{re}
- \setlength\logounitheight{1cm}
-}
-\DeclareOption{sw}{
- \renewcommand\fselector{sw}
- \setlength\logounitheight{1cm}
-}
-\DeclareOption{ti}{
- \renewcommand\fselector{ti}
- \setlength\logounitheight{1cm}
-}
-\DeclareOption{we}{
- \renewcommand\fselector{we}
- \setlength\logounitheight{1cm}
-}
-\DeclareOption{iob}{
- \renewcommand\fselector{iob}
- \setlength\logounitheight{1cm}
-}
+\ProcessOptions
-\AtBeginDocument{
- \makeatother
- \@ifpackageloaded{babel}{
- \addto\captionsdutch{
- \renewcommand\lselector{nl}
- }
- }
- \makeatletter
+\RequirePackage{uantwerpencolorlogoscheme}
- \newcommand\logopos{Logos/logo-uantwerpen-\fselector-\lselector-\colormodel-pos}
- \newcommand\logoneg{Logos/logo-uantwerpen-\fselector-\lselector-\colormodel-neg}
- \newcommand\logomonowhite{Logos/logo-uantwerpen-\fselector-\lselector-\colormodel-mono-white}
- \newcommand\iconfile{Logos/icon-uantwerpen-\fselector-\colormodel}
+\AtBeginDocument{
\def\appropriatelogo{\logopos}
\def\appropriateslidenumber{%
\usebeamercolor{pageno in head/foot}%
\insertframenumber/\inserttotalframenumber}%
}
-\ProcessOptions
-
-\if@neutralcolors
-\newcommand\maincolor{uauaside}
-\newcommand\sidecolor{uauamain}
-\newcommand\basecolor{uauaside}
-\else
-\newcommand\maincolor{ua\fselector main}
-\newcommand\sidecolor{ua\fselector side}
-\newcommand\basecolor{uauaside}
-\fi
-
\mode<presentation>
\RequirePackage{tikz}
@@ -5298,102 +5324,26 @@ L: \@qrlectureri
\mode
<all>
-%</bmr>
+%</bmr>
% \end{macrocode}
-%
+%
% \subsubsection{Beamer color theme}
% \begin{macrocode}
-%<*bmrcolor>
-% Copyright 2021 by Walter Daems <walter.daems@uantwerpen.be>
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/licenses/LICENSE for more details.
+%<*bmrcolor>
+% Copyright 2021 by Walter Daems <walter.daems@uantwerpen.be>
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/licenses/LICENSE for more details.
\mode<presentation>
-\if@cmyk
-
-%% UAntwerpen
-\definecolor{uauamain}{cmyk}{0.00,0.96,0.82,0.01}
-\definecolor{uauaside}{cmyk}{1.00,0.71,0.00,0.51}
-%% Faculteit Bedrijfswetenschappen en Economie
-\definecolor{uabemain}{cmyk}{0.58,0.00,1.00,0.04}
-\definecolor{uabeside}{cmyk}{0.29,0.04,0.41,0.00}
-%% Faculteit Farmaceutische, Biomedische en Diergeneeskundige Wetenschappen
-\definecolor{uafbdmain}{cmyk}{0.65,0.03,0.00,0.00}
-\definecolor{uafbdside}{cmyk}{0.33,0.03,0.00,0.00}
-%% Faculteit Geneeskunde en Gezondheidswetenschappen
-\definecolor{uaggwmain}{cmyk}{0.61,0.55,0.00,0.00}
-\definecolor{uaggwside}{cmyk}{0.21,0.27,0.03,0.00}
-%% Faculteit Letteren en Wijsbegeerte
-\definecolor{ualwmain}{cmyk}{0.00,0.27,0.85,0.00}
-\definecolor{ualwside}{cmyk}{0.00,0.16,0.51,0.00}
-%% Faculteit Ontwerpwetenschappen
-\definecolor{uaowmain}{cmyk}{0.53,0.25,0.26,0.05}
-\definecolor{uaowside}{cmyk}{0.25,0.08,0.16,0.00}
-%% Faculteit Rechten
-\definecolor{uaremain}{cmyk}{0.10,1.00,0.90,0.05}
-\definecolor{uareside}{cmyk}{0.04,0.45,0.36,0.00}
-%% Faculteit Sociale Wetenschappen
-\definecolor{uaswmain}{cmyk}{0.08,0.00,1.00,0.26}
-\definecolor{uaswside}{cmyk}{0.20,0.11,0.50,0.00}
-%% Faculteit Toegepaste Ingenieurswetenschappen
-\definecolor{uatimain}{cmyk}{0.31,1.00,0.00,0.01}
-\definecolor{uatiside}{cmyk}{0.11,0.30,0.02,0.00}
-%% Faculteit Wetenschappen
-\definecolor{uawemain}{cmyk}{1.00,0.20,0.00,0.25}
-\definecolor{uaweside}{cmyk}{0.40,0.08,0.00,0.10}
-%% IOB
-\definecolor{uaiobmain}{cmyk}{0.05,0.75,1.00,0.00}
-\definecolor{uaiobside}{cmyk}{0.40,0.08,0.00,0.10}
-
-\else
-
-%% UAntwerpen
-\definecolor{uauamain}{RGB}{234,44,56}
-\definecolor{uauaside}{RGB}{0,46,101}
-%% Faculteit Bedrijfswetenschappen en Economie
-\definecolor{uabemain}{RGB}{101,168,18}
-\definecolor{uabeside}{RGB}{185,213,169}
-%% Faculteit Farmaceutische, Biomedische en Diergeneeskundige Wetenschappen
-\definecolor{uafbdmain}{RGB}{68,184,243}
-\definecolor{uafbdside}{RGB}{181,221,247}
-%% Faculteit Geneeskunde en Gezondheidswetenschappen
-\definecolor{uaggwmain}{RGB}{117,117,203}
-\definecolor{uaggwside}{RGB}{198,182,210}
-%% Faculteit Letteren en Wijsbegeerte
-\definecolor{ualwmain}{RGB}{241,181,61}
-\definecolor{ualwside}{RGB}{255,218,145}
-%% Faculteit Ontwerpwetenschappen
-\definecolor{uaowmain}{RGB}{130,161,173}
-\definecolor{uaowside}{RGB}{200,217,216}
-%% Faculteit Rechten
-\definecolor{uaremain}{RGB}{210,8,36}
-\definecolor{uareside}{RGB}{237,157,144}
-%% Faculteit Sociale Wetenschappen
-\definecolor{uaswmain}{RGB}{173,165,0}
-\definecolor{uaswside}{RGB}{215,211,148}
-%% Faculteit Toegepaste Ingenieurswetenschappen
-\definecolor{uatimain}{RGB}{177,0,151}
-\definecolor{uatiside}{RGB}{221,184,210}
-%% Faculteit Wetenschappen
-\definecolor{uawemain}{RGB}{0,108,169}
-\definecolor{uaweside}{RGB}{151,192,223}
-%% IOB
-\definecolor{uaiobmain}{RGB}{230,98,8}
-\definecolor{uaiobside}{RGB}{151,192,223}
-
-\fi
+\RequirePackage{uantwerpencolorlogoscheme}
%% define main color
-\colorlet{maincolor}{\maincolor}
-\colorlet{sidecolor}{\sidecolor}
-\colorlet{basecolor}{\basecolor}
-
\setbeamercolor{palette primary}{fg=maincolor}
\setbeamercolor{palette secondary}{fg=sidecolor}
\setbeamercolor{palette tertiary}{fg=uauaside}
@@ -5452,27 +5402,27 @@ L: \@qrlectureri
\setbeamercolor{inverse subsection name}{fg=white!75!maincolor}
\mode
<all>
-%</bmrcolor>
+%</bmrcolor>
% \end{macrocode}
-%
+%
% \subsubsection{Beamer font theme}
-%
+%
% \begin{macrocode}
-%<*bmrfont>
-% Copyright 2021 by Walter Daems
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/licenses/LICENSE for more details.
+%<*bmrfont>
+% Copyright 2021 by Walter Daems
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/licenses/LICENSE for more details.
\usetikzlibrary{calc}
\if@nofonts
\else
- \RequirePackage{iftex}
+\RequirePackage{iftex}
% Uncomment the following line if in MiKTeX you get the error
% message that \ifluatex is already defined.
% You first option is to update all your packages both in user as in
@@ -5545,7 +5495,7 @@ L: \@qrlectureri
\setbeamerfont{footline}{parent={tiny structure}}
\setbeamerfont{frametitle}
- {parent=structure,size=\renewcommand{\baselinestretch}{0.85}\LARGE\bfseries}
+ {parent=structure,size=\renewcommand*{\baselinestretch}{0.85}\LARGE\bfseries}
\setbeamerfont{framesubtitle}{parent=frametitle,size=\normalsize\bfseries}
\setbeamerfont{caption}{size=\small}
@@ -5626,7 +5576,7 @@ L: \@qrlectureri
\newif\if@noround
\@noroundfalse
-\newcommand\uantwerpenleftshape[3][]{
+\newcommand*\uantwerpenleftshape[3][]{
\newcommand\mycradius{0.05*(\getlength{\paperheight}-1.6)}%
\coordinate (bl) at #2;
\coordinate (tr) at #3;
@@ -5637,7 +5587,7 @@ L: \@qrlectureri
arc(-90:-180:{\mycradius}) -- cycle;
\fi
}
-\newcommand\uantwerpenrightshape[3][]{
+\newcommand*\uantwerpenrightshape[3][]{
\newcommand\mycradius{0.05*(\getlength{\paperheight}-1.6)}%
\coordinate (bl) at #2;
\coordinate (tr) at #3;
@@ -5649,7 +5599,7 @@ L: \@qrlectureri
\fi
}
-\newcommand\darken[2][0.5]{%
+\newcommand*\darken[2][0.5]{%
\begin{tikzpicture}[inner sep=0pt,outer sep=0pt]
\node (a) {#2};
\fill[fill=black,opacity=#1] (a.south west) rectangle (a.north east);
@@ -5678,7 +5628,7 @@ L: \@qrlectureri
\end{tikzpicture}
}
-\newcommand\uantwerpenicon[1][scale=1]{
+\newcommand*\uantwerpenicon[1][scale=1]{
\includegraphics[#1]{\iconfile}
}
@@ -5708,8 +5658,8 @@ L: \@qrlectureri
\mode<presentation>
\newcommand*\getlength[1]{\strip@pt#1/28.45274}
-\newcommand\pw{\getlength{\paperwidth}}%
-\newcommand\ph{\getlength{\paperheight}}%
+\newcommand*\pw{\getlength{\paperwidth}}%
+\newcommand*\ph{\getlength{\paperheight}}%
\newif\if@rhtext
\@rhtextfalse
@@ -6334,9 +6284,9 @@ L: \@qrlectureri
\newdimen\yupright
\newdimen\xcurrent
\newdimen\ycurrent
-\newcommand\extractloleft[1]{\path (#1);\pgfgetlastxy{\xloleft}{\yloleft};}
-\newcommand\extractupright[1]{\path (#1);\pgfgetlastxy{\xupright}{\yupright};}
-\newcommand\extractcurrent[1]{\path (#1);\pgfgetlastxy{\xcurrent}{\ycurrent};}
+\newcommand*\extractloleft[1]{\path (#1);\pgfgetlastxy{\xloleft}{\yloleft};}
+\newcommand*\extractupright[1]{\path (#1);\pgfgetlastxy{\xupright}{\yupright};}
+\newcommand*\extractcurrent[1]{\path (#1);\pgfgetlastxy{\xcurrent}{\ycurrent};}
\DeclareRobustCommand\place{\@ifnextchar[{\@place}{\@place[align=left] }}
\def\@place[#1] at (#2,#3)#4{
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpendocs.ins b/macros/latex/contrib/uantwerpendocs/uantwerpendocs.ins
index caf675dfb6..e21ec6b85c 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpendocs.ins
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpendocs.ins
@@ -15,7 +15,7 @@
%% The Current Maintainer of this work is Walter Daems.
%%
-\input docstrip.tex
+\input l3docstrip.tex
\keepsilent
\usedir{tex/latex/uantwerpendocs}
@@ -42,6 +42,8 @@ The Current Maintainer of this work is Walter Daems.
\endpreamble
+\generate{\file{uantwerpencommonoptions.clo}{\from{uantwerpendocs.dtx}{clo}}}
+\generate{\file{uantwerpencolorlogoscheme.sty}{\from{uantwerpendocs.dtx}{cls}}}
\generate{\file{uantwerpencoursetext.cls}{\from{uantwerpendocs.dtx}{ct}}}
\generate{\file{uantwerpencoursetext-example.tex}{\from{uantwerpendocs.dtx}{ct-example}}}
@@ -53,6 +55,9 @@ The Current Maintainer of this work is Walter Daems.
\generate{\file{uantwerpenphdthesis-example1.tex}{\from{uantwerpendocs.dtx}{pt-example1}}}
\generate{\file{uantwerpenphdthesis-example2.tex}{\from{uantwerpendocs.dtx}{pt-example2}}}
+\generate{\file{uantwerpenreport.cls}{\from{uantwerpendocs.dtx}{rp}}}
+\generate{\file{uantwerpenreport-example.tex}{\from{uantwerpendocs.dtx}{rp-example}}}
+
\generate{\file{uantwerpenletter.cls}{\from{uantwerpendocs.dtx}{le}}}
\generate{\file{uantwerpenletter.cfg}{\from{uantwerpendocs.dtx}{le-cfg}}}
\generate{\file{uantwerpenletter-example.tex}{\from{uantwerpendocs.dtx}{le-example}}}
@@ -67,6 +72,10 @@ The Current Maintainer of this work is Walter Daems.
\generate{\file{beamerouterthemeuantwerpen.sty}{\from{uantwerpendocs.dtx}{bmrouter}}}
\generate{\file{beamerthemeuantwerpen.sty}{\from{uantwerpendocs.dtx}{bmr}}}
\generate{\file{beamerthemeuantwerpenuserguide.tex}{\from{uantwerpendocs.dtx}{bmrug}}}
+\nopreamble
+\nopostamble
+\generate{\file{uantwerpendocs-nl.data}{\from{uantwerpendocs.dtx}{nldata}}}
+\generate{\file{uantwerpendocs-en.data}{\from{uantwerpendocs.dtx}{endata}}}
\obeyspaces
\Msg{****************************************************************}
@@ -78,8 +87,13 @@ The Current Maintainer of this work is Walter Daems.
\Msg{* uantwerpenmasterthesis.cls *}
\Msg{* uantwerpenbamathesis.cls *}
\Msg{* uantwerpenphdthesis.cls *}
+\Msg{* uantwerpenreport.cls *}
\Msg{* uantwerpenletter.cls *}
\Msg{* uantwerpenexam.cls *}
+\Msg{* uantwerpendocs-nl.data *}
+\Msg{* uantwerpendocs-en.data *}
+\Msg{* uantwerpencommonoptions.clo *}
+\Msg{* uantwerpencolorlogoscheme.sty *}
\Msg{* beamercolorthemeuantwerpen.sty *}
\Msg{* beamerfontthemeuantwerpen.sty *}
\Msg{* beamerinnerthemeuantwerpen.sty *}
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpendocs.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpendocs.pdf
index dee1f993f9..e446d17203 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpendocs.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpendocs.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpenexam-example1.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpenexam-example1.pdf
index b33cfe3477..f91e3fd766 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpenexam-example1.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpenexam-example1.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpenexam-example2.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpenexam-example2.pdf
index 7e606d13f7..6a1131b814 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpenexam-example2.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpenexam-example2.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpenletter-example.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpenletter-example.pdf
index 1caa00fe49..fbb07439fa 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpenletter-example.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpenletter-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example1.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example1.pdf
index 5d49fcba41..8220f2216d 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example1.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example1.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example2.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example2.pdf
index 2469c14255..f5fc78abb1 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example2.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example2.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpenreport-example.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpenreport-example.pdf
new file mode 100644
index 0000000000..da2af47217
--- /dev/null
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpenreport-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/yathesis/CHANGELOG.md b/macros/latex/contrib/yathesis/CHANGELOG.md
index 46742100da..a490efc9b8 100644
--- a/macros/latex/contrib/yathesis/CHANGELOG.md
+++ b/macros/latex/contrib/yathesis/CHANGELOG.md
@@ -1,5 +1,19 @@
# [Unreleased]
+# [1.0.8] - 2021-07-13
+
+## Fixed
+- Bug gh #85 (https://git.io/JCTjv).
+- Bug gh #84 (https://git.io/JCTpu).
+- Bug gh #83 (https://git.io/JYfz8).
+
+## Changed
+- The fix of #85 above renders ineffective the `\includeonly` command when the
+ option `\localbibs` is used. This is an incompatible change but only for
+ a command that is used only temporarily, so we don't increment the major
+ version number.
+- Again expose `\listoflistings` in the samples.
+
# [1.0.7] - 2021-03-24
## Removed
diff --git a/macros/latex/contrib/yathesis/README.md b/macros/latex/contrib/yathesis/README.md
index 4c43f536a9..cf129bfa68 100644
--- a/macros/latex/contrib/yathesis/README.md
+++ b/macros/latex/contrib/yathesis/README.md
@@ -1,6 +1,6 @@
-----------------------------------------------------------------------
-- `yathesis` --- Yet Another Thesis Class, version 1.0.7
+- `yathesis` --- Yet Another Thesis Class, version 1.0.8
- E-mail: `denis.bitouze@univ-littoral.fr`
- Released under the LaTeX Project Public License v1.3c or later. See
http://www.latex-project.org/lppl.txt
diff --git a/macros/latex/contrib/yathesis/doc/yathesis-fr.pdf b/macros/latex/contrib/yathesis/doc/yathesis-fr.pdf
index f11c0f0852..6533156b70 100644
--- a/macros/latex/contrib/yathesis/doc/yathesis-fr.pdf
+++ b/macros/latex/contrib/yathesis/doc/yathesis-fr.pdf
Binary files differ
diff --git a/macros/latex/contrib/yathesis/exemples/specimen/these.pdf b/macros/latex/contrib/yathesis/exemples/specimen/these.pdf
index 2aaa151537..4a7f76b770 100644
--- a/macros/latex/contrib/yathesis/exemples/specimen/these.pdf
+++ b/macros/latex/contrib/yathesis/exemples/specimen/these.pdf
Binary files differ
diff --git a/macros/latex/contrib/yathesis/exemples/specimen/these.tex b/macros/latex/contrib/yathesis/exemples/specimen/these.tex
index 343beacb8b..9226936fc9 100644
--- a/macros/latex/contrib/yathesis/exemples/specimen/these.tex
+++ b/macros/latex/contrib/yathesis/exemples/specimen/these.tex
@@ -337,6 +337,9 @@ Thèse hilarante, comme le gaz du même nom !
% (Facultatif) Table des figures
\listoffigures
%
+% % (Facultatif) Table des listings (nécessite que le package « listings » soit
+% % chargé)
+% \lstlistoflistings
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Début de la partie principale (du « corps ») de la thèse
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/macros/latex/contrib/yathesis/source/yathesis-samples-templates.dtx b/macros/latex/contrib/yathesis/source/yathesis-samples-templates.dtx
index ae8059bcb3..7bb5006f4d 100644
--- a/macros/latex/contrib/yathesis/source/yathesis-samples-templates.dtx
+++ b/macros/latex/contrib/yathesis/source/yathesis-samples-templates.dtx
@@ -627,6 +627,12 @@
\listoffigures
%<<COMMENT
%
+%COMMENT
+%<these-sample|flat-sample>% % (Facultatif) Table des listings (nécessite que le package « listings » soit
+%<these-sample|flat-sample>% % chargé)
+%<these-sample|flat-sample>% \lstlistoflistings
+%
+%<<COMMENT
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Début de la partie principale (du « corps ») de la thèse
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/macros/latex/contrib/yathesis/source/yathesis.dtx b/macros/latex/contrib/yathesis/source/yathesis.dtx
index fe8586af30..7b59e2b682 100644
--- a/macros/latex/contrib/yathesis/source/yathesis.dtx
+++ b/macros/latex/contrib/yathesis/source/yathesis.dtx
@@ -23,7 +23,7 @@
%<*readme>
-----------------------------------------------------------------------
-- `yathesis` --- Yet Another Thesis Class, version 1.0.7
+- `yathesis` --- Yet Another Thesis Class, version 1.0.8
- E-mail: `denis.bitouze@univ-littoral.fr`
- Released under the LaTeX Project Public License v1.3c or later. See
http://www.latex-project.org/lppl.txt
@@ -70,8 +70,8 @@ Typesetting the documentation of the class requires:
\fi
%</internal>
%<*class|install>
-\def\yathesisversion{1.0.7}
-\def\yathesisdate{2021-03-24}
+\def\yathesisversion{1.0.8}
+\def\yathesisdate{2021-07-13}
%</class|install>
%<*install>
\input docstrip.tex
@@ -807,7 +807,7 @@ This work consists of the file yathesis.dtx
La valeur (`#1') passée à la cle\MessageBreak%
`localtocs/depth'\MessageBreak%
en option de classe n'est pas un des niveaux de\MessageBreak%
- sectionnement acceptes :\MessageBreak%
+ sectionnement acceptés :\MessageBreak%
`section', `subsection',`subsubsection',\MessageBreak%
`paragraph', `subparagraph'.\MessageBreak%
Le niveau `\YAD@tocdepth' va être utilisé à la place%
@@ -838,7 +838,7 @@ This work consists of the file yathesis.dtx
que vous n'avez pas chargé.\MessageBreak%
La classe `yathesis' va le faire pour vous mais\MessageBreak%
le recours à ce package pour la bibliographie sera\MessageBreak%
- alors necessaire et exclura tout autre outil\MessageBreak%
+ alors nécessaire et exclura tout autre outil\MessageBreak%
de production de la bibliographie\MessageBreak%
(notamment `BibTeX')%
}%
@@ -975,7 +975,7 @@ This work consists of the file yathesis.dtx
\YAD@ClassWarningNoLine{%
La version de `babel' utilisée est obsolète.\MessageBreak%
La classe `yathesis' va essayer de faire son possible\MessageBreak%
- mais il est possible qu'elle produise des resultats\MessageBreak%
+ mais il se peut qu'elle produise des resultats\MessageBreak%
non prévus. Il est conseillé de mettre à jour sa\MessageBreak%
distribution TeX%
}%
@@ -1145,6 +1145,11 @@ This work consists of the file yathesis.dtx
% \begin{macrocode}
\RequirePackage{etoc}[2016/09/29]%
% \end{macrocode}
+% The following command is a workaround provided by the \Package{etoc} in order
+% to fix the issue \url|https://github.com/dbitouze/yathesis/issues/83| (see below).
+% \begin{macrocode}
+\ifdefined\etockeeporiginaltableofcontents\etockeeporiginaltableofcontents\fi
+% \end{macrocode}
% Pour tester la langue en cours
% \begin{macrocode}
\RequirePackage{iflang}[2007/11/11]%
@@ -1438,7 +1443,7 @@ This work consists of the file yathesis.dtx
%
% \begin{macro}{\YAD@reach@file}
% Macro offrant la possibilité de cliquer sur un hyperlien pour ouvrir
-% les fichier permettant de modifier les mots et expressions clés du
+% les fichiers permettant de modifier les mots et expressions clés du
% canevas de thèse et les données de la thèse
% \begin{macrocode}
\definecolor{YAD@configuration@file@color}{rgb}{0.5,0,0.5}%
@@ -1908,7 +1913,7 @@ This work consists of the file yathesis.dtx
\newcommand{\YAD@error@firstlastnames@empty}[4]{%
\ifthenelse{\isempty{#2}}{%
\YAD@ClassError{%
- Prénom #1 non specifié%
+ Prénom #1 non spécifié%
}{%
Le 1er argument obligatoire de la commande \string#4\MessageBreak%
est vide (celui-ci doit être renseigné).%
@@ -1917,7 +1922,7 @@ This work consists of the file yathesis.dtx
}%
\ifthenelse{\isempty{#3}}{%
\YAD@ClassError{%
- Nom #1 non specifié%
+ Nom #1 non spécifié%
}{%
Le 2e argument obligatoire de la commande \string#4\MessageBreak%
est vide (celui-ci doit être renseigné).%
@@ -2908,7 +2913,7 @@ This work consists of the file yathesis.dtx
}{%
La commande \string#4{\YAD@daydate}{\YAD@monthdate}{\YAD@yeardate}\space\MessageBreak%
n'a pas été correctement saisie car le\MessageBreak%
- jour (`\YAD@daydate') n'est pas valide :\MessageBreak%
+ numéro de jour (`\YAD@daydate') n'est pas valide :\MessageBreak%
ce doit être un nombre entier entre 1 et 31.%
}%
}{%
@@ -2925,7 +2930,7 @@ This work consists of the file yathesis.dtx
}{%
La commande \string#4{\YAD@daydate}{\YAD@monthdate}{\YAD@yeardate}\space\MessageBreak%
n'a pas été correctement saisie car le\MessageBreak%
- numero de jour (`\YAD@daydate') n'est pas valide :\MessageBreak%
+ numéro de jour (`\YAD@daydate') n'est pas valide :\MessageBreak%
ce doit être un nombre entier entre 1 et 31.%
}%
}{%
@@ -2941,9 +2946,9 @@ This work consists of the file yathesis.dtx
}{%
La commande \string#4{\YAD@daydate}{\YAD@monthdate}{\YAD@yeardate}\space\MessageBreak%
n'a pas été correctement saisie car le\MessageBreak%
- mois (`\YAD@monthdate') n'est pas valide :\MessageBreak%
+ numéro de mois (`\YAD@monthdate') n'est pas valide :\MessageBreak%
ce doit être un nombre entier entre\MessageBreak%
- 1 (janvier) et 12 (decembre).%
+ 1 (janvier) et 12 (décembre).%
}%
}{%
\IfDecimal{\YAD@monthdate}{%
@@ -2959,9 +2964,9 @@ This work consists of the file yathesis.dtx
}{%
La commande \string#4{\YAD@daydate}{\YAD@monthdate}{\YAD@yeardate}\space\MessageBreak%
n'a pas été correctement saisie car le\MessageBreak%
- numero de mois (`\YAD@monthdate') n'est pas valide :\MessageBreak%
+ numéro de mois (`\YAD@monthdate') n'est pas valide :\MessageBreak%
ce doit être un nombre entier entre\MessageBreak%
- 1 (janvier) et 12 (decembre).%
+ 1 (janvier) et 12 (décembre).%
}%
}{%
\global\booltrue{YAD@valid@month}%
@@ -3039,7 +3044,7 @@ This work consists of the file yathesis.dtx
}{%
}{%
\YAD@ClassError[nodate]{%
- Date de soutenance non specifiée%
+ Date de soutenance non spécifiée%
}{%
La commande \protect\date\space n'a pas été utilisée\MessageBreak%
(celle-ci est requise).%
@@ -3140,6 +3145,7 @@ This work consists of the file yathesis.dtx
% \begin{macrocode}
\AfterEndPreamble{%
\let\YAD@ORI@tableofcontents\tableofcontents%
+ \let\YAD@ORI@etoctableofcontents\etoctableofcontents%
\let\YAD@ORI@localtableofcontents\localtableofcontents%
\renewcommand{\tableofcontents}{%
\booltrue{YAD@tableofcontents@used}%
@@ -3615,7 +3621,7 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@nolaboratory}{%
}{%
\YAD@ClassError[nolaboratory]{%
- Nom du laboratoire de la thèse non specifié ou vide%
+ Nom du laboratoire de la thèse non spécifié ou vide%
}{%
La commande \protect\laboratory\space n'a pas été utilisée\MessageBreak%
(celle-ci est requise) ou son 1er argument est vide\MessageBreak%
@@ -3651,7 +3657,7 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@nolaboratoryaddress}{%
}{%
\YAD@ClassError[nolaboratoryaddress]{%
- Adresse du laboratoire non specifiée ou vide%
+ Adresse du laboratoire non spécifiée ou vide%
}{%
La commande \protect\laboratory\space n'a pas été utilisée\MessageBreak%
(celle-ci est requise) ou son 2e argument est vide\MessageBreak%
@@ -3731,7 +3737,7 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@notitle}{%
}{%
\YAD@ClassError[notitle]{%
- Titre de la thèse non specifié%
+ Titre de la thèse non spécifié%
}{%
La commande \protect\title\space n'a pas été utilisée\MessageBreak%
(celle-ci est requise) ou son argument obligatoire est vide\MessageBreak%
@@ -3803,7 +3809,7 @@ This work consists of the file yathesis.dtx
\YAD@ifemptyorundef{\printinstitute}{%
\YAD@generic@argument@translate{institute}%
\YAD@ClassError[noinstitute]{%
- Institut de la thèse non specifié%
+ Institut de la thèse non spécifié%
}{%
La commande \protect\institute\space n'a pas été
utilisée\MessageBreak%
@@ -3841,7 +3847,7 @@ This work consists of the file yathesis.dtx
\YAD@ifemptyorundef{\printdoctoralschool}{%
\YAD@generic@argument@translate{doctoralschool}%
\YAD@ClassError[nodoctoralschool]{%
- École doctorale de la thèse non specifiée%
+ École doctorale de la thèse non spécifiée%
}{%
la commande \protect\doctoralschool\space n'a pas été
utilisée\MessageBreak%
@@ -3899,7 +3905,7 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@noauthor}{%
}{%
\YAD@ClassError[noauthor]{%
- Auteur de la thèse non specifié%
+ Auteur de la thèse non spécifié%
}{%
La commande \protect\author\space n'a pas été utilisée (celle-ci
est requise)\MessageBreak%
@@ -3970,7 +3976,7 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@noacademicfield}{%
}{%
\YAD@ClassError[noacademicfield]{%
- Champ disciplinaire de la thèse non specifié%
+ Champ disciplinaire de la thèse non spécifié%
}{%
La commande \protect\academicfield\space n'a pas été utilisée
(celle-ci est requise)\MessageBreak%
@@ -4034,7 +4040,7 @@ This work consists of the file yathesis.dtx
\ifbool{YAD@nosupervisor}{%
}{%
\YAD@ClassError*[nosupervisor]{%
- Directeur de thèse non specifié%
+ Directeur de thèse non spécifié%
}{%
La commande \protect\supervisor\space n'a pas été utilisée\MessageBreak%
(celle-ci est requise) ou ses arguments obligatoires sont
@@ -4195,21 +4201,21 @@ This work consists of the file yathesis.dtx
}{%
\ifdefempty{\YAD@mainkeywords}{%
\YAD@ClassError[nokeywords]{%
- Mots clés dans la langue principale non specifiés%
+ Mots clés dans la langue principale non spécifiés%
}{%
Les mots clés dans la langue principale\MessageBreak%
(1er argument de la commande \protect\keywords) n'ont\MessageBreak%
- pas été specifiés. Ceux-ci sont requis.%
+ pas été spécifiés. Ceux-ci sont requis.%
}%
}{%
\csdef{YAD@metakeywords}{\YAD@mainkeywords} }%
\ifdefempty{\YAD@secondarykeywords}{%
\YAD@ClassError[nokeywords]{%
- Mots clés dans la langue secondaire non specifiés%
+ Mots clés dans la langue secondaire non spécifiés%
}{%
Les mots clés dans la langue secondaire\MessageBreak%
(2e argument de la commande \protect\keywords) n'ont\MessageBreak%
- pas été specifiés. Ceux-ci sont requis.%
+ pas été spécifiés. Ceux-ci sont requis.%
}%
}{%
\csdef{YAD@metakeywords}{\YAD@mainkeywords (\YAD@secondarykeywords)}%
@@ -4796,7 +4802,7 @@ This work consists of the file yathesis.dtx
}{%
La 1re occurrence de l'environnement `abstract' a été
utilisée\MessageBreak%
- avec un contenu vide. Un contenu non vide est requis.%
+ avec un contenu vide. Un contenu non vide est requis.%
}%
}{%
\YAD@ClassError[noabstract]{%
@@ -4815,7 +4821,7 @@ This work consists of the file yathesis.dtx
}{%
La 2e occurrence de l'environnement `abstract' a été
utilisée\MessageBreak%
- avec un contenu vide. Un contenu non vide est requis.%
+ avec un contenu vide. Un contenu non vide est requis.%
}%
}{%
}%
@@ -4954,7 +4960,7 @@ This work consists of the file yathesis.dtx
\YAD@generic@argument@translate{epigraph}%
}%
\YAD@ClassError{%
- Epigraphe vide%
+ Épigraphe vide%
}{%
L'argument obligatoire d'une commande \protect\frontepigraph\space
est vide\MessageBreak%
@@ -5247,7 +5253,7 @@ This work consists of the file yathesis.dtx
% \end{macrocode}
% \begin{macrocode}
\newcommand*\YAD@computenumwidths [1][0.5em]{%
- \YAD@computenumwidths@ {}{#1}%
+ \YAD@computenumwidths@ {etoc}{#1}%
}
\newcommand*\YAD@computelocalnumwidths [1][0.5em]{%
\YAD@computenumwidths@ {local}{#1}%
@@ -5370,6 +5376,30 @@ This work consists of the file yathesis.dtx
}%
}%
% \end{macrocode}
+% Dans le cas où l'option "localbibs" est demandée, on redéfinit
+% "\include" en "\input" pour éviter le "\clearpage" émis juste avant
+% l'inclusion du fichier, sans quoi une bibliographie locale automatiquement
+% ajoutée avant le chapitre suivant, si ce dernier l'est via "\include", subit
+% un changement de page avant d'être affichée. La commande "\includeonly"
+% est alors inopérante et on le signale (mais ce signalement n'apparaît pas si
+% cette commande est utilisée avant "\documentclass").
+% \begin{macrocode}
+ \AddToHook{begindocument/before}{%
+ \ifbool{YAD@localbibs}{%
+ \let\include\input%
+ \if@partsw
+ \ClassWarningNoLine{yathesis}{%
+ Commande \string\includeonly\space inopérante lorsque l'option\MessageBreak
+ `localbibs' est utilisée. Le seul moyen de\MessageBreak
+ temporairement ne compiler que certains fichiers\MessageBreak
+ inclus est alors de temporairement commenter\MessageBreak
+ l'inclusion des autres%
+ }%
+ \fi
+ }{%
+ }
+ }
+% \end{macrocode}
% On redéfinit la commande "\chapter" de sorte que, dans un chapitre non
% numéroté ("\chapter*") :
% \begin{itemize}
@@ -5689,7 +5719,18 @@ This work consists of the file yathesis.dtx
}%
}{%
}%
-}%
+% \end{macrocode}
+% In case the \Package{listings} is loaded, we hack the "\lstlistoflistings"
+% command in order to fix the issue \url|https://github.com/dbitouze/yathesis/issues/83|.
+% \begin{macrocode}
+ \@ifpackageloaded{listings}{%
+ \lst@UserCommand\lstlistoflistings{\bgroup
+ \let\contentsname\lstlistlistingname
+ \let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{lol}}%
+ \YAD@ORI@tableofcontents \egroup}
+ }{%
+ }%
+ }%
% \end{macrocode}
% Les parties sont par défaut numérotées.
% \begin{macrocode}
@@ -6631,17 +6672,21 @@ This work consists of the file yathesis.dtx
#include:xstring
#
# Document class
+#
#keyvals:\documentclass/yathesis
mainlanguage=#french,english
secnumdepth=#part,chapter,section,subsection,subsubsection,paragraph,subparagraph
space=#single,onehalf,double
chap-style=#Sonny,Lenny,Glenn,Conny,Rejne,Bjarne,PetersLenny,Bjornstrup,none
+fncychap=#Sonny,Lenny,Glenn,Conny,Rejne,Bjarne,PetersLenny,Bjornstrup,none
nofrontcover#true,false
sepcorpaffilfrench=
sepcorpaffilenglish=
version=#inprogress,inprogress*,submitted,submitted*,final,draft
output=#screen,paper,paper*
-colophon=#verso-frontcover,recto-backcover,nowhere
+colophon-location=#verso-frontcover,recto-backcover,nowhere
+hdr
+numlaboratories=%<⟨nombre de laboratoires affichés⟩%>
localtocs
localtocs/depth=#section,subsection,subsubsection,paragraph,subparagraph
localbibs
@@ -6668,163 +6713,96 @@ noabstract
nomakeabstract
notableofcontents
noprintbibliography
-graphicx
-adjustbox
-setspace
-xcolor
-datatool
-titlesec
-draftwatermark
-babel
-datetime2
+graphicx={%<⟨options du package graphicx⟩%>}
+adjustbox={%<⟨options du package adjustbox⟩%>}
+setspace={%<⟨options du package setspace⟩%>}
+xcolor={%<⟨options du package xcolor⟩%>}
+datatool={%<⟨options du package datatool⟩%>}
+titlesec={%<⟨options du package titlesec⟩%>}
+draftwatermark={%<⟨options du package draftwatermark⟩%>}
+babel={%<⟨options du package babel⟩%>}
+datetime2={%<⟨options du package datetime2⟩%>}
+corps=%<⟨corporation⟩%>
+role=%<⟨role⟩%>
#endkeyvals
#
-\yadsetup{%<options%>}#n
+\yadsetup{⟨options⟩%keyvals}#n
#
# Cover and title pages
#
# Author
-\author{%<prénom%>}{%<nom%>}#n
-\author[%<email%>]{%<prénom%>}{%<nom%>}#n
+\author{⟨prénom⟩}{⟨nom⟩}#n
+\author[⟨email⟩]{⟨prénom⟩}{⟨nom⟩}#n
#
# Title, etc.
-\title[titre dans la langue secondaire%text]{titre dans la langue principale%text}#n
-\subtitle[sous-titre dans la langue secondaire%text]{sous-titre dans la langue principale%text}#n
-\academicfield[discipline dans la langue secondaire%text]{discipline dans la langue principale%text}#n
-\speciality[spécialité dans la langue secondaire%text]{spécialité dans la langue principale%text}#n
-\subject[sujet dans la langue secondaire%text]{sujet dans la langue principale%text}#n
+\title[⟨titre dans la langue secondaire⟩%text]{⟨titre dans la langue principale⟩%text}#n
+\subtitle[⟨sous-titre dans la langue secondaire⟩%text]{⟨sous-titre dans la langue principale⟩%text}#n
+\academicfield[⟨discipline dans la langue secondaire⟩%text]{⟨discipline dans la langue principale⟩%text}#n
+\speciality[⟨spécialité dans la langue secondaire⟩%text]{⟨spécialité dans la langue principale⟩%text}#n
+\subject[⟨sujet dans la langue secondaire⟩%text]{⟨sujet dans la langue principale⟩%text}#n
#
-\title{titre%text}#n
-\subtitle{sous-titre%text}#n
-\academicfield{discipline%text}#n
-\speciality{spécialité%text}#n
-\subject{sujet%text}#n
-\date{%<jour%>}{%<mois%>}{%<année%>}#n
-\submissiondate{%<jour%>}{%<mois%>}{%<année%>}#n
+\title{⟨titre⟩%text}#n
+\subtitle{⟨sous-titre⟩%text}#n
+\academicfield{⟨discipline⟩%text}#n
+\speciality{⟨spécialité⟩%text}#n
+\subject{⟨sujet⟩%text}#n
+\date{⟨jour⟩}{⟨mois⟩}{⟨année⟩}#n
+\submissiondate{⟨jour⟩}{⟨mois⟩}{⟨année⟩}#n
#
# Institute and entities
-\pres{%<nom du PRES%>}#n
-\comue{%<nom de la ComUE%>}#n
-\institute{nom de l'institut%text}#n
-\coinstitute{nom de l'institut de cotutelle%text}#n
-\company{%<nom de l'entreprise%>}#n
-\doctoralschool{nom de l'école doctorale%text}#n
-\laboratory{%<nom du laboratoire%>}{%<adresse du laboratoire%>}#n
+\pres{⟨nom du PRES⟩}#n
+\comue{⟨nom de la ComUE⟩}#n
+\institute{⟨nom de l'institut⟩%text}#n
+\coinstitute{⟨nom de l'institut de cotutelle⟩%text}#n
+\company{⟨nom de l'entreprise⟩}#n
+\doctoralschool{⟨nom de l'école doctorale⟩%text}#n
+\laboratory{⟨nom du laboratoire⟩}{⟨adresse du laboratoire⟩}#n
#
-\pres[%<précision(s)%>]{%<nom du PRES%>}#n
-\comue[%<précision(s)%>]{%<nom de la ComUE%>}#n
-\institute[%<précision(s)%>]{nom de l'institut%text}#n
-\coinstitute[%<précision(s)%>]{nom de l'institut de cotutelle%text}#n
-\company[%<précision(s)%>]{%<nom de l'entreprise%>}#n
-\doctoralschool[%<précision(s)%>]{nom de l'école doctorale%text}#n
-\laboratory[%<précision(s)%>]{%<nom du laboratoire%>}{%<adresse du laboratoire%>}#n
+\pres[⟨précisions⟩%keyvals]{⟨nom du PRES⟩}#n
+\comue[⟨précisions⟩%keyvals]{⟨nom de la ComUE⟩}#n
+\institute[⟨précisions⟩%keyvals]{⟨nom de l'institut⟩%text}#n
+\coinstitute[⟨précisions⟩%keyvals]{⟨nom de l'institut de cotutelle⟩%text}#n
+\company[⟨précisions⟩%keyvals]{⟨nom de l'entreprise⟩}#n
+\doctoralschool[⟨précisions⟩%keyvals]{⟨nom de l'école doctorale⟩%text}#n
#
-#keyvals:\pres,\comue,\doctoralschool
-logo=
-logoheight=
-url=
-#endkeyvals
-#keyvals:\institute,\coinstitute,\company
-logo=
-logoheight=
-url=
+#keyvals:\pres,\comue,\doctoralschool,\institute,\coinstitute,\company
+logo=%<⟨fichier image⟩%>
+logoheight=%<⟨hauteur⟩%>
+url=%<⟨URL⟩%>
nologo
#endkeyvals
+#
+\laboratory[⟨précisions⟩%keyvals]{⟨nom du laboratoire⟩}{⟨adresse du laboratoire⟩}#n
+#
#keyvals:\laboratory
-logo=
-logoheight=
-url=
-telephone=
-fax=
-email=
+logo=%<⟨fichier image⟩%>
+logoheight=%<⟨hauteur⟩%>
+url=%<⟨URL⟩%>
+telephone=%<⟨numéro de téléphone⟩%>
+fax=%<⟨numéro de fax⟩%>
+email=%<⟨courriel⟩%>
nonamelink
#endkeyvals
#
# Committee
-\supervisor{%<prénom%>}{%<nom%>}#n
-\cosupervisor{%<prénom%>}{%<nom%>}#n
-\comonitor{%<prénom%>}{%<nom%>}#n
-\referee{%<prénom%>}{%<nom%>}#n
-\examiner{%<prénom%>}{%<nom%>}#n
-\committeepresident{%<prénom%>}{%<nom%>}#n
-\guest{%<prénom%>}{%<nom%>}#n
+\supervisor[⟨précisions⟩%keyvals]{⟨prénom⟩}{⟨nom⟩}#n
+\cosupervisor[⟨précisions⟩%keyvals]{⟨prénom⟩}{⟨nom⟩}#n
+\comonitor[⟨précisions⟩%keyvals]{⟨prénom⟩}{⟨nom⟩}#n
+\referee[⟨précisions⟩%keyvals]{⟨prénom⟩}{⟨nom⟩}#n
+\examiner[⟨précisions⟩%keyvals]{⟨prénom⟩}{⟨nom⟩}#n
+\committeepresident[⟨précisions⟩%keyvals]{⟨prénom⟩}{⟨nom⟩}#n
+\guest[⟨précisions⟩%keyvals]{⟨prénom⟩}{⟨nom⟩}#n
#
-\supervisor[%<précision(s)%>]{%<prénom%>}{%<nom%>}#n
-\cosupervisor[%<précision(s)%>]{%<prénom%>}{%<nom%>}#n
-\comonitor[%<précision(s)%>]{%<prénom%>}{%<nom%>}#n
-\referee[%<précision(s)%>]{%<prénom%>}{%<nom%>}#n
-\examiner[%<précision(s)%>]{%<prénom%>}{%<nom%>}#n
-\committeepresident[%<précision(s)%>]{%<prénom%>}{%<nom%>}#n
-\guest[%<précision(s)%>]{%<prénom%>}{%<nom%>}#n
+\supervisor{⟨prénom⟩}{⟨nom⟩}#n
+\cosupervisor{⟨prénom⟩}{⟨nom⟩}#n
+\comonitor{⟨prénom⟩}{⟨nom⟩}#n
+\referee{⟨prénom⟩}{⟨nom⟩}#n
+\examiner{⟨prénom⟩}{⟨nom⟩}#n
+\committeepresident{⟨prénom⟩}{⟨nom⟩}#n
+\guest{⟨prénom⟩}{⟨nom⟩}#n
#
-#keyvals:\supervisor
-affiliation=
-professor
-seniorresearcher
-mcf
-mcf*
-associateprofessor
-associateprofessor*
-juniorresearcher
-juniorresearcher*
-#endkeyvals
-#keyvals:\cosupervisor
-affiliation=
-professor
-seniorresearcher
-mcf
-mcf*
-associateprofessor
-associateprofessor*
-juniorresearcher
-juniorresearcher*
-#endkeyvals
-#keyvals:\comonitor
-affiliation=
-professor
-seniorresearcher
-mcf
-mcf*
-associateprofessor
-associateprofessor*
-juniorresearcher
-juniorresearcher*
-#endkeyvals
-#keyvals:\referee
-affiliation=
-professor
-seniorresearcher
-mcf
-mcf*
-associateprofessor
-associateprofessor*
-juniorresearcher
-juniorresearcher*
-#endkeyvals
-#keyvals:\examiner
-affiliation=
-professor
-seniorresearcher
-mcf
-mcf*
-associateprofessor
-associateprofessor*
-juniorresearcher
-juniorresearcher*
-#endkeyvals
-#keyvals:\committeepresident
-affiliation=
-professor
-seniorresearcher
-mcf
-mcf*
-associateprofessor
-associateprofessor*
-juniorresearcher
-juniorresearcher*
-#endkeyvals
-#keyvals:\guest
-affiliation=
+#keyvals:\supervisor,\cosupervisor,\comonitor,\referee,\examiner,\committeepresident,\guest
+affiliation=%<⟨affiliation⟩%>
professor
seniorresearcher
mcf
@@ -6833,122 +6811,86 @@ associateprofessor
associateprofessor*
juniorresearcher
juniorresearcher*
+male
+female
#endkeyvals
#
# Misc
-\ordernumber[%<numéro d'ordre%>]#n
-\ordernumber#n*
+\ordernumber[⟨numéro d'ordre⟩]#n
+\ordernumber#*n
+#
+# Keywords
+\keywords{⟨mots clés dans la langue principale⟩%text}{⟨mots clés dans la langue secondaire⟩%text}#n
+#
+# Title
+\maketitle
+\maketitle[⟨options⟩%keyvals]
#
#keyvals:\maketitle
nofrontcover
noaim
-frametitle=#shadowbox,ovalbox,none,fbox
+frametitle=#shadowbox,ovalbox,none,fbox,{⟨autre⟩}
#endkeyvals
#
# Preliminary part
#
-\colophontext{texte%text}#n*
-\disclaimer{clause%text}#n
+\colophontext{⟨texte⟩%text}#n*
+\disclaimertext{⟨clause⟩%text}#n
\makedisclaimer#n
\makedisclaimer*#n
-\keywords{mots clés dans la langue principale%text}{mots clés dans la langue secondaire%text}#n
\makekeywords#n
\makekeywords*#n
\makelaboratory#n
\makelaboratory*#n
-\dedication{dédicace%text}#n
+\dedication{⟨dédicace⟩%text}#n
\makededications#n
\makededications*#n
-\frontepigraph{épigraphe%text}{%<auteur%>}
-\frontepigraph[%<langue%>]{épigraphe%text}{%<auteur%>}
-#keyvals:\frontepigraph
-afrikaans
-bahasa
-basque
-breton
-bulgarian
-catalan
-croatian
-czech
-danish
-dutch
-english
-esperanto
-estonian
-finnish
-french
-galician
-ngerman
-greek
-hebrew
-hungarian
-icelandic
-interlingua
-irish
-italian
-latin
-lowersorbian
-samin
-norsk
-polish
-portuguese
-romanian
-russian
-scottish
-spanish
-slovak
-slovene
-swedish
-serbian
-turkish
-ukrainian
-uppersorbian
-welsh
-#endkeyvals
+\frontepigraph{⟨épigraphe⟩%text}{⟨auteur⟩}
+\frontepigraph[⟨langue⟩]{⟨épigraphe⟩%text}{⟨auteur⟩}
\makefrontepigraphs#n
\makefrontepigraphs*#n
\begin{abstract}#n
-\begin{abstract}[intitulé alternatif%text]#n*
+\begin{abstract}[⟨titre alternatif⟩%text]#n*
\end{abstract}#n
\makeabstract#n
-\newglssymbol{%<label%>}{%<symbole%>}{%<nom%>}{description%text}#n
-\newglssymbol[%<classement%>]{%<label%>}{%<symbole%>}{%<nom%>}{description%text}#n
+\newglssymbol{⟨label⟩%labeldef}{⟨symbole⟩}{⟨nom⟩}{⟨description⟩%text}#n
+\newglssymbol[⟨classement⟩]{⟨label⟩%labeldef}{⟨symbole⟩}{⟨nom⟩}{⟨description⟩%text}#n
\tableofcontents#n*
-\tableofcontents[%<précision(s)%>]#n*
+\tableofcontents[⟨précisions⟩%keyvals]#n*
#
#keyvals:\tableofcontents
depth=#part,chapter,section,subsection,subsubsection,paragraph,subparagraph
-name=
+name=%<⟨nom de la table des matières⟩%>
#endkeyvals
#
# Main part
#
-\chapter{titre%title}#L1
-\chapter*{titre%title}#L1
-\chapter[titre alt. pour TdM et entête%short title]{titre%title}#L1
-\chapter*[titre alt. pour TdM et entête%short title]{titre%title}#L1
-\chapter[titre alt. pour TdM%short title][titre alt. pour entête%short title]{titre%title}#L1
-\chapter*[titre alt. pour TdM%short title][titre alt. pour entête%short title]{titre%title}#L1
-\section{titre%title}#L2
-\section*{titre%title}#L2
-\section[titre alt. pour TdM et entête%short title]{titre%title}#L2
-\section*[titre alt. pour TdM et entête%short title]{titre%title}#L2
-\section[titre alt. pour TdM%short title][titre alt. pour entête%short title]{titre%title}#L2
-\section*[titre alt. pour TdM%short title][titre alt. pour entête%short title]{titre%title}#L2
-\subsection{titre%title}#L3
-\subsection*{titre%title}#L3
-\subsection[titre alt. pour TdM et entête%short title]{titre%title}#L3
-\subsection*[titre alt. pour TdM et entête%short title]{titre%title}#L3
-\subsubsection{titre%title}#L4
-\subsubsection*{titre%title}#L4
-\subsubsection[titre alt. pour TdM et entête%short title]{titre%title}#L4
-\subsubsection*[titre alt. pour TdM et entête%short title]{titre%title}#L4
-\paragraph{titre%title}#L5
-\paragraph*{titre%title}#L5
-\paragraph[titre alt. pour TdM et entête%short title]{titre%title}#L5
-\paragraph*[titre alt. pour TdM et entête%short title]{titre%title}#L5
-\subparagraph{titre%title}#L6
-\subparagraph[titre alt. pour TdM et entête%short title]{titre%title}#L6
+\chapter{⟨titre⟩%title}#L1
+\chapter*{⟨titre⟩%title}#L1
+\chapter[⟨titre alt. pour TdM et entête⟩%short title]{⟨titre⟩%title}#L1
+\chapter*[⟨titre alt. pour TdM et entête⟩%short title]{⟨titre⟩%title}#L1
+\chapter[⟨titre alt. pour TdM⟩%short title][⟨titre alt. pour entête⟩%short title]{⟨titre⟩%title}#L1
+\chapter*[⟨titre alt. pour TdM⟩%short title][⟨titre alt. pour entête⟩%short title]{⟨titre⟩%title}#L1
+\section{⟨titre⟩%title}#L2
+\section*{⟨titre⟩%title}#L2
+\section[⟨titre alt. pour TdM et entête⟩%short title]{⟨titre⟩%title}#L2
+\section*[⟨titre alt. pour TdM et entête⟩%short title]{⟨titre⟩%title}#L2
+\section[⟨titre alt. pour TdM⟩%short title][⟨titre alt. pour entête⟩%short title]{⟨titre⟩%title}#L2
+\section*[⟨titre alt. pour TdM⟩%short title][⟨titre alt. pour entête⟩%short title]{⟨titre⟩%title}#L2
+\subsection{⟨titre⟩%title}#L3
+\subsection*{⟨titre⟩%title}#L3
+\subsection[⟨titre alt. pour TdM et entête⟩%short title]{⟨titre⟩%title}#L3
+\subsection*[⟨titre alt. pour TdM et entête⟩%short title]{⟨titre⟩%title}#L3
+\subsubsection{⟨titre⟩%title}#L4
+\subsubsection*{⟨titre⟩%title}#L4
+\subsubsection[⟨titre alt. pour TdM et entête⟩%short title]{⟨titre⟩%title}#L4
+\subsubsection*[⟨titre alt. pour TdM et entête⟩%short title]{⟨titre⟩%title}#L4
+\paragraph{⟨titre⟩%title}#L5
+\paragraph*{⟨titre⟩%title}#L5
+\paragraph[⟨titre alt. pour TdM et entête⟩%short title]{⟨titre⟩%title}#L5
+\paragraph*[⟨titre alt. pour TdM et entête⟩%short title]{⟨titre⟩%title}#L5
+\subparagraph{⟨titre⟩%title}#L6
+\subparagraph[⟨titre alt. pour TdM et entête⟩%short title]{⟨titre⟩%title}#L6
#
# Appendix part
#
@@ -6962,11 +6904,16 @@ name=
\stoplocaltocs
\nextwithlocaltoc
\nextwithoutlocaltoc
-\leadchapter{texte%text}
+\leadchapter{⟨texte⟩%text}
+\printsymbols[⟨options⟩%keyvals]
+#
+#keyvals:\printsymbols
+style=#yadsymbolstyle,⟨autre⟩
+#endkeyvals
#
# Customization
#
-\expression{%<label%>}{valeur (en français)%text}{valeur (en anglais)%text}#n*
+\expression{⟨label⟩%labeldef}{⟨valeur en français⟩%text}{⟨valeur en anglais⟩%text}#n*
% \end{macrocode}
%
% \begin{macrocode}
diff --git a/macros/unicodetex/latex/einfart/einfart-doc-cn.pdf b/macros/unicodetex/latex/einfart/einfart-doc-cn.pdf
index 2a9a66a48f..93a9dc97ee 100644
--- a/macros/unicodetex/latex/einfart/einfart-doc-cn.pdf
+++ b/macros/unicodetex/latex/einfart/einfart-doc-cn.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/einfart/einfart-doc-cn.tex b/macros/unicodetex/latex/einfart/einfart-doc-cn.tex
index b4cee34583..a8620ea2f2 100644
--- a/macros/unicodetex/latex/einfart/einfart-doc-cn.tex
+++ b/macros/unicodetex/latex/einfart/einfart-doc-cn.tex
@@ -1,22 +1,24 @@
-%! TEX program = xelatex
-\documentclass[Chinese,English,French,puretext]{einfart}
+\documentclass[English,Chinese,French,puretext]{einfart}
\CreateTheorem{definition}<highest>
-\CreateTheorem{theorem}<highest>
+\CreateTheorem{theorem}[definition]
-\linenumbers % 开启行号
+\linenumbers % Enable line numbers
%%================================
-%% 引入工具集
+%% Import toolkit
%%================================
\usepackage{ProjLib}
\usepackage{longtable} % breakable tables
\usepackage{hologo} % more TeX logo
+\usetikzlibrary{calc}
+
+\usepackage{blindtext}
\UseLanguage{Chinese}
%%================================
-%% 排版代码
+%% For typesetting code
%%================================
\usepackage{listings}
\definecolor{maintheme}{RGB}{70,130,180}
@@ -35,19 +37,24 @@
escapeinside={(*}{*)},
% numbers=left,
numberstyle=\scriptsize, stepnumber=1, numbersep=5pt,
- firstnumber=last,
-}
+ % firstnumber=last,
+}
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
- {linenumbers,nolinenumbers,subsection,subsubsection,href,
- color,NameTheorem,CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,ProjLib,qedhere
+ {linenumbers,nolinenumbers,part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
+ color,NameTheorem,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,ProjLib,qedhere
}
}
-\lstnewenvironment{code}%
+\lstnewenvironment{code}%
{\setstretch{1.07}\LocallyStopLineNumbers%
\setkeys{lst}{columns=fullflexible,keepspaces=true}%
}
{\ResumeLineNumbers}
+\lstnewenvironment{code*}%
+{\setstretch{1.07}\LocallyStopLineNumbers%
+\setkeys{lst}{numbers=left,columns=fullflexible,keepspaces=true}%
+}
+{\ResumeLineNumbers}
%%================================
%% tip
@@ -68,11 +75,11 @@
after skip = 0.3cm,
top = 3mm,
bottom = 3mm,
- title={\sffamily #1}]%
+ title={\scshape\sffamily #1}]%
}{\end{tcolorbox}\ResumeLineNumbers}
%%================================
-%% 名称
+%% Names
%%================================
\providecommand{\minimalist}{\textsf{minimalist}}
\providecommand{\minimart}{\textsf{minimart}}
@@ -81,13 +88,21 @@
\providecommand{\simplivre}{\textsf{simplivre}}
%%================================
-%% 正文
+%% Titles
+%%================================
+\let\LevelOneTitle\section
+\let\LevelTwoTitle\subsection
+\let\LevelThreeTitle\subsubsection
+
+%%================================
+%% Main text
%%================================
\begin{document}
\title{\einfart{},以极简主义风格排版你的文章}
\author{许锦文}
-\thanks{对应版本. \texttt{\einfart{} 2021/07/05}}
+\thanks{对应版本. \texttt{\einfart{} 2021/07/13}}
+\email{\href{mailto:ProjLib@outlook.com}{ProjLib@outlook.com}}
\date{2021年7月,北京}
\maketitle
@@ -96,22 +111,27 @@
\einfart{} 是 \minimalist{} 文档类系列的成员之一,其名称取自于德文的 einfach (``简约''),并取了 artikel (``文章'') 的前三个字母组合而成。整个 \minimalist{} 系列包含用于排版文章的 \minimart{}、\einfart{} 以及用于排版书的 \minimbook{}、\simplivre{}。我设计这一系列的初衷是为了撰写草稿与笔记,使之看上去简朴而不简陋。
\einfart{} 支持英语、法语、德语、意大利语、葡萄牙语、巴西葡萄牙语、西班牙语、简体中文、繁体中文、日文、俄文,并且同一篇文档中这些语言可以很好地协调。由于采用了自定义字体,需要用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 引擎进行编译。
-
+
这篇说明文档即是用 \einfart{} 排版的,你可以把它看作一份简短的说明与演示。
\end{abstract}
-\tableofcontents
-% \bigskip
-\vspace{-.3\baselineskip}
-\begin{tip}
- 多语言支持、定理类环境、未完成标记等功能是由 \ProjLib{} 工具箱提供的,这里只给出了将其与本文档类搭配使用的要点。如需获取更详细的信息,可以参阅 \ProjLib{} 的说明文档。
-\end{tip}
+\setcounter{tocdepth}{2}
+{\setstretch{1.07}\tableofcontents}
-\clearpage
-\section{初始化}
-\subsection{如何载入}
+\medskip
+\LevelOneTitle*{开始之前}
+为了使用这篇文档中提到的文档类,你需要:
+\begin{itemize}
+ \item 安装一个尽可能新版本的 TeX Live 或 MikTeX 套装,并确保 \texttt{minimalist} 和 \texttt{projlib} 被正确安装在你的 \TeX 封装中。
+ \item 熟悉 \LaTeX{} 的基本使用方式,并且知道如何用 \hologo{pdfLaTeX}、\hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 编译你的文档。
+\end{itemize}
+
+
+\LevelOneTitle{使用示例}
+
+\LevelTwoTitle{如何加载}
只需要在第一行写:
@@ -121,7 +141,174 @@
即可使用 \einfart{} 文档类。请注意,要使用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 引擎才能编译。
-\subsection{选项}
+\LevelTwoTitle{一篇完整的文档示例}
+
+首先来看一段完整的示例。
+
+\begin{code*}
+\documentclass{einfart}
+\usepackage{ProjLib}
+
+\UseLanguage{French}
+
+\begin{document}
+
+\title{(*\meta{title}*)}
+\author{(*\meta{author}*)}
+\date{\PLdate{2022-04-01}}
+
+\maketitle
+
+\begin{abstract}
+ Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
+\end{abstract}
+\begin{keyword}
+ AAA, BBB, CCC, DDD, EEE
+\end{keyword}
+
+\section{Un théorème}
+
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+Référence du théorème: \cref{thm:abc}
+
+\end{document}
+\end{code*}
+
+
+如果你觉得这个例子有些复杂,不要担心。现在我们来一点点地观察这个例子。
+
+\clearpage
+\LevelThreeTitle{初始化部分}
+
+\medskip
+\begin{code}
+\documentclass{einfart}
+\usepackage{ProjLib}
+\end{code}
+
+初始化部分很简单:第一行加载文档类 \einfart{},第二行加载 \ProjLib{} 工具箱,以便使用一些附加功能。
+
+\LevelThreeTitle{设定语言}
+
+\medskip
+\begin{code}
+\UseLanguage{French}
+\end{code}
+
+这一行表明文档中将使用法语(如果你的文章中只出现英语,那么可以不需要设定语言)。你也可以在文章中间用同样的方式再次切换语言。支持的语言包括简体中文、繁体中文、日文、英语、法语、德语、西班牙语、葡萄牙语、巴西葡萄牙语、俄语。
+
+对于这一命令的详细说明以及更多相关命令,可以参考后面关于多语言支持的小节。
+
+\LevelThreeTitle{标题,作者信息,摘要与关键词}
+
+\medskip
+\begin{code}
+\title{(*\meta{title}*)}
+\author{(*\meta{author}*)}
+\date{\PLdate{2022-04-01}}
+\maketitle
+
+\begin{abstract}
+ (*\meta{abstract}*)
+\end{abstract}
+\begin{keyword}
+ (*\meta{keywords}*)
+\end{keyword}
+\end{code}
+
+开头部分是标题和作者信息块。这个例子中给出的是最基本的形式,事实上你还可以这样写:
+
+\begin{code}
+\author{(*\meta{author 1}*)}
+\address{(*\meta{address 1}*)}
+\email{(*\meta{email 1}*)}
+\author{(*\meta{author 2}*)}
+\address{(*\meta{address 2}*)}
+\email{(*\meta{email 2}*)}
+...
+\end{code}
+
+另外,你还可以采用 \AmS{} 文档类的写法:
+
+\begin{code}
+\title{(*\meta{title}*)}
+\author{(*\meta{author 1}*)}
+\address{(*\meta{address 1}*)}
+\email{(*\meta{email 1}*)}
+\author{(*\meta{author 2}*)}
+\address{(*\meta{address 2}*)}
+\email{(*\meta{email 2}*)}
+\date{\PLdate{2022-04-01}}
+\subjclass{*****}
+\keywords{(*\meta{keywords}*)}
+
+\begin{abstract}
+ (*\meta{abstract}*)
+\end{abstract}
+
+\maketitle
+\end{code}
+
+\LevelThreeTitle{未完成标记}
+
+\medskip
+\begin{code}
+\dnf<(*\meta{some hint}*)>
+\end{code}
+当你有一些地方尚未完成的时候,可以用这条指令标记出来,它在草稿阶段格外有用。
+
+\LevelThreeTitle{定理类环境}
+
+\medskip
+\begin{code}
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+Référence du théorème: \cref{thm:abc}
+\end{code}
+
+常见的定理类环境可以直接使用。在引用的时候,建议采用智能引用 \lstinline|\cref{|\meta{label}\lstinline|}|——这样就不必每次都写上相应环境的名称了。
+
+\begin{tip}
+如果你之后想要切换到标准文档类,只需要把前两行换为:
+
+\begin{code}
+\documentclass{article}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino,amsfashion]{ProjLib}
+\end{code}
+
+或者使用 \AmS{} 文档类:
+
+\begin{code}
+\documentclass{amsart}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{ProjLib}
+\end{code}
+
+\end{tip}
+
+\begin{tip}
+如果你喜欢这个文档类,但又希望使用一种更加中规中矩的样式,那么不妨使用 \texttt{classical} 选项,就像这样:
+
+\begin{code}
+\documentclass[classical]{einfart}
+\end{code}
+\end{tip}
+
+
+\LevelOneTitle{关于默认字体}
+\einfart{} 默认使用 Palatino Linotype 作为英文字体,方正悠宋、悠黑GBK作为中文字体,并部分使用了 Neo Euler 作为数学字体。其中,Neo Euler可以在 \url{https://github.com/khaledhosny/euler-otf} 下载。其他字体不是免费字体,需要自行购买使用。可以在方正字库网站查询详细资料:\url{https://www.foundertype.com}。
+
+
+在没有安装相应的字体时,将采用TeX Live中自带的字体来代替,效果可能会有所折扣。
+
+
+\LevelOneTitle{选项}
\einfart{} 文档类有下面几个选项:
@@ -129,6 +316,7 @@
\item 语言选项 \texttt{EN} / \texttt{english} / \texttt{English}、\texttt{FR} / \texttt{french} / \texttt{French},等等
\begin{itemize}
\item 具体选项名称可参见下一节的 \meta{language name}。第一个指定的语言将作为默认语言。
+ \item 语言选项不是必需的,其主要用途是提高编译速度。不添加语言选项时效果是一样的,只是会更慢一些。
\end{itemize}
\item \texttt{draft} 或 \texttt{fast}
\begin{itemize}
@@ -139,9 +327,9 @@
\item 启用 \ProjLib{} 工具箱的快速模式。
\end{itemize}
\end{itemize}
-\begin{tip}
- 在文章的撰写阶段,建议使用 \verb|fast| 选项以加快编译速度,改善写作时的流畅度。使用 \verb|fast| 模式时会有“DRAFT”字样的水印,以提示目前处于草稿阶段。
-\end{tip}
+ \begin{tip}
+ 在文章的撰写阶段,建议使用 \verb|fast| 选项以加快编译速度,改善写作时的流畅度。使用 \verb|fast| 模式时会有“DRAFT”字样的水印,以提示目前处于草稿阶段。
+ \end{tip}
\item \texttt{a4paper} 或 \texttt{b5paper}
\begin{itemize}
\item 可选的纸张大小。默认的纸张大小为 7in $\times$ 10in。
@@ -151,6 +339,7 @@
\item 字体选项。顾名思义,会加载相应名称的字体。
\item \texttt{useosf} 选项用来启用“旧式”数字。
\end{itemize}
+\clearpage
\item \texttt{allowbf}
\begin{itemize}
\item 允许加粗。启用这一选项时,题目、各级标题、定理类环境名称会被加粗。
@@ -159,19 +348,18 @@
\begin{itemize}
\item 经典模式。启用这一选项时,样式会变得更加中规中矩:段落呈首行缩进样式、各类下划线减少、标题样式改变、定理类环境的样式也会更贴近常见的设置。
\end{itemize}
-\begin{tip}
- 如果你喜欢更加传统的样式,\texttt{allowbf} + \texttt{classical} 是一个不错的搭配。
-\end{tip}
+ \begin{tip}
+ 如果你喜欢更加传统的样式,\texttt{allowbf} + \texttt{classical} 是一个不错的搭配。
+ \end{tip}
\item \texttt{useindent}
\begin{itemize}
\item 采用段首缩进而不是段间间距。
\end{itemize}
- \clearpage
\item \texttt{runin}
\begin{itemize}
\item \lstinline|\subsubsection| 采用 ``runin'' 风格。
\end{itemize}
- \item \texttt{puretext} or \texttt{nothms}
+ \item \texttt{puretext} 或 \texttt{nothms}
\begin{itemize}
\item 纯文本模式,不加载定理类环境。
\end{itemize}
@@ -181,24 +369,9 @@
\end{itemize}
\end{itemize}
+\LevelOneTitle{具体说明}
-\section{关于默认字体}
-\einfart{} 默认使用 Palatino Linotype 作为英文字体,方正悠宋、悠黑GBK作为中文字体,并部分使用了 Neo Euler 作为数学字体。其中,Neo Euler可以在 \url{https://github.com/khaledhosny/euler-otf} 下载。其他字体不是免费字体,需要自行购买使用。可以在方正字库网站查询详细资料:\url{https://www.foundertype.com}。
-
-% \begin{itemize}
-% \item English main font. \textsf{English sans serif font}.
-% \item 中文主要字体,\textsf{中文无衬线字体}
-% \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
-% \end{itemize}
-
-在没有安装相应的字体时,将采用TeX Live中自带的字体来代替,效果可能会有所折扣。
-
-
-\section{使用说明}
-
-接下来介绍的许多功能是由 \ProjLib{} 工具箱提供的。这里只介绍了基本使用方法,更多细节可以直接参阅其用户文档。
-
-\subsection{语言设置}
+\LevelTwoTitle{语言设置}
\einfart{} 提供了多语言支持,包括英语、法语、德语、意大利语、葡萄牙语、巴西葡萄牙语、西班牙语、简体中文、繁体中文、日文、俄文。可以通过下列命令来选定语言:
\begin{itemize}
@@ -240,8 +413,7 @@
\end{itemize}
例如,\lstinline|\AddLanguageSetting(German){\color{orange}}| 可以让所有德语以橙色显示(当然,还需要再加上 \lstinline|\AddLanguageSetting{\color{black}}| 来修正其他语言的颜色)。
-
-\subsection{定理类环境及其引用}
+\LevelTwoTitle{定理类环境及其引用}
定义、定理等环境已经被预定义,可以直接使用。
@@ -275,15 +447,12 @@
\UseLanguage{Chinese}
-\clearpage
-\subsection{定义新的定理型环境}
+\LevelTwoTitle{定义新的定理型环境}
若需要定义新的定理类环境,首先要定义这个环境在所用语言下的名称:
-% \vspace{-.15\baselineskip}%
\begin{itemize}
\item \lstinline|\NameTheorem[|\meta{language name}\lstinline|]{|\meta{name of environment}\lstinline|}{|\meta{name string}\lstinline|}|
\end{itemize}
-% \vspace{-.15\baselineskip}%
其中,\meta{language name} 可参阅关于语言设置的小节。当不指定 \meta{language name}时,则会将该名称设置为所有支持语言下的名称。另外,带星号与不带星号的同名环境共用一个名称,因此 \lstinline|\NameTheorem{envname*}{...}| 与 \lstinline|\NameTheorem{envname}{...}| 效果相同。
然后用下面五种方式之一定义这一环境:
@@ -320,7 +489,6 @@
其内部使用了 \textsf{amsthm},因此传统的 \texttt{theoremstyle} 对其也是适用的,只需在相关定义前标明即可。
\end{tip}
-% \def\proofideanameCN{思路}
\NameTheorem[CN]{proofidea}{思路}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>
@@ -345,7 +513,8 @@
\lstinline|proofidea| 环境。
\end{proofidea}
-\subsection{未完成标记}
+\clearpage
+\LevelTwoTitle{未完成标记}
你可以通过 \lstinline|\dnf| 来标记尚未完成的部分。例如:
\begin{itemize}
@@ -357,10 +526,8 @@
\item \lstinline|\needgraph| 或 \lstinline|\needgraph<...>|。效果为:\needgraph~或 \needgraph<...>其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\needgraph}
\end{itemize}
+\LevelTwoTitle{文章标题、摘要与关键词}
-\subsection{关于文章标题、摘要与关键词}
-
-% 由于引入了 \ProjLib{} 工具箱的 \textsf{PJLamssim} 组件,
\einfart{} 同时具有标准文档类与\AmS{} 文档类的一些特性。
因此,文章的标题部分既可以按照标准文档类 \textsf{article} 的写法来写:
@@ -409,10 +576,12 @@
其中 \lstinline|\address|、\lstinline|\curraddr|、\lstinline|\email| 的相互顺序是不重要的。
-\subsection{关于行号}
+\LevelTwoTitle{其他}
+
+\LevelThreeTitle{关于行号}
行号可以随时开启和关闭。\lstinline|\linenumbers| 用来开启行号,\lstinline|\nolinenumbers| 用来关闭行号。标题、目录、索引等位置为了美观,不进行编号。
-\subsection{关于标题中的脚注}
+\LevelThreeTitle{关于标题中的脚注}
在 \lstinline|\section| 或 \lstinline|\subsection| 中,如果想使用脚注,只能:
\begin{itemize}
\item 先写 \lstinline|\mbox{\protect\footnotemark}|,
@@ -420,11 +589,10 @@
\end{itemize}
这是标题使用下划线装饰之后带来的一个缺点。
-\subsection{关于QED符号}
+\LevelThreeTitle{关于QED符号}
由于定理类环境中的字体和正文字体是一样的,为了方便看出定理类环境在哪里结束,在其结尾处放置了一个空心的QED符号。然而,如果你的定理是由公式或者列表结尾的,这个符号就无法自动地放在正确的位置。这时,你需要手动在公式或列表最后一个条目的后面加上 \lstinline|\qedhere|,以让QED符号显示到这一行的最后。
-
-\section{目前存在的问题}
+\LevelOneTitle{目前存在的问题}
\begin{itemize}[itemsep=.6em]
\item 对于字体的设置仍然不够完善。
@@ -434,110 +602,7 @@
\end{itemize}
-
-\UseLanguage{English}
-
-\clearpage
-\section{文档示例}
-
-\subsection{标准文档类写法}
-
-如果想采用标准文档类中的写法,可以参考下面的例子:
-
-\begin{code}
-\documentclass{einfart}
-\usepackage{ProjLib} % Load ProjLib toolkit
-
-\UseLanguage{French} % Use French from here
-
-\begin{document}
-
-\title{Le Titre}
-\author{Auteur}
-\date{\PLdate{2022-04-01}}
-
-\maketitle
-
-\begin{abstract}
- Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
-\end{abstract}
-\begin{keyword}
- AAA, BBB, CCC, DDD, EEE
-\end{keyword}
-
-\section{Un théorème}
-
-%% Theorem-like environments can be used directly
-\begin{theorem}\label{thm:abc}
- Ceci est un théorème.
-\end{theorem}
-
-Référence du théorème: \cref{thm:abc}
- % It is recommended to use clever reference
-
-\end{document}
-\end{code}
-
-如果以后想切换到标准文档类,只需要将前两行换为:
-
-\begin{code}
-\documentclass{article}
-\usepackage[a4paper,margin=1in]{geometry}
-\usepackage[hidelinks]{hyperref}
-\usepackage[palatino]{ProjLib} % Load ProjLib toolkit
-\end{code}
-
-
-\clearpage
-\subsection{\texorpdfstring{\AmS{}}{AMS} 文档类写法}
-
-如果日后有意切换到期刊模版,想采用 \AmS{} 文档类中的写法,可以参考下面的例子:
-
-\begin{code}
-\documentclass{einfart}
-\usepackage{ProjLib} % Load ProjLib toolkit
-
-\UseLanguage{French} % Use French from here
-
-\begin{document}
-
-\title{Le Titre}
-\author{Auteur 1}
-\address{Adresse 1}
-\email{\href{Courriel 1}{Courriel 1}}
-\author{Auteur 1}
-\address{Adresse 1}
-\email{\href{Courriel 2}{Courriel 2}}
-\date{\PLdate{2022-04-01}}
-\subjclass{*****}
-\keywords{...}
-
-\begin{abstract}
- Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
-\end{abstract}
-
-\maketitle
-
-\section{Première section}
-
-%% Theorem-like environments can be used directly
-\begin{theorem}\label{thm:abc}
- Ceci est un théorème.
-\end{theorem}
-
-Référence du théorème: \cref{thm:abc}
- % It is recommended to use clever reference
-
-\end{document}
-\end{code}
-
-这样,若想切换到 \AmS{} 文档类,只需要将前两行换为:
-
-\begin{code}
-\documentclass{amsart}
-\usepackage[a4paper,margin=1in]{geometry}
-\usepackage[hidelinks]{hyperref}
-\usepackage[palatino]{ProjLib} % Load ProjLib toolkit
-\end{code}
-
\end{document}
+\endinput
+%%
+%% End of file `einfart/einfart-doc-cn.tex'.
diff --git a/macros/unicodetex/latex/einfart/einfart-doc-en.pdf b/macros/unicodetex/latex/einfart/einfart-doc-en.pdf
index bbf036b4a8..16a81383da 100644
--- a/macros/unicodetex/latex/einfart/einfart-doc-en.pdf
+++ b/macros/unicodetex/latex/einfart/einfart-doc-en.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/einfart/einfart-doc-en.tex b/macros/unicodetex/latex/einfart/einfart-doc-en.tex
index 277de1fade..9fa383a533 100644
--- a/macros/unicodetex/latex/einfart/einfart-doc-en.tex
+++ b/macros/unicodetex/latex/einfart/einfart-doc-en.tex
@@ -1,11 +1,7 @@
-%! TEX program = xelatex
-\documentclass[English,French,puretext]{einfart}
+\documentclass[English,Chinese,French,puretext]{einfart}
\CreateTheorem{definition}<highest>
-\CreateTheorem{theorem}<highest>
-
-% \setlist{nosep}
-% \UseLanguage{English}
+\CreateTheorem{theorem}[definition]
\linenumbers % Enable line numbers
@@ -15,9 +11,14 @@
\usepackage{ProjLib}
\usepackage{longtable} % breakable tables
\usepackage{hologo} % more TeX logo
+\usetikzlibrary{calc}
+
+\usepackage{blindtext}
+
+\UseLanguage{English}
%%================================
-%% For typestting code
+%% For typesetting code
%%================================
\usepackage{listings}
\definecolor{maintheme}{RGB}{70,130,180}
@@ -36,19 +37,24 @@
escapeinside={(*}{*)},
% numbers=left,
numberstyle=\scriptsize, stepnumber=1, numbersep=5pt,
- firstnumber=last,
-}
+ % firstnumber=last,
+}
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
- {linenumbers,nolinenumbers,subsection,subsubsection,href,
+ {linenumbers,nolinenumbers,part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
color,NameTheorem,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,ProjLib,qedhere
}
}
-\lstnewenvironment{code}%
-{\LocallyStopLineNumbers%
+\lstnewenvironment{code}%
+{\setstretch{1.07}\LocallyStopLineNumbers%
\setkeys{lst}{columns=fullflexible,keepspaces=true}%
}
{\ResumeLineNumbers}
+\lstnewenvironment{code*}%
+{\setstretch{1.07}\LocallyStopLineNumbers%
+\setkeys{lst}{numbers=left,columns=fullflexible,keepspaces=true}%
+}
+{\ResumeLineNumbers}
%%================================
%% tip
@@ -73,7 +79,7 @@
}{\end{tcolorbox}\ResumeLineNumbers}
%%================================
-%% 名称
+%% Names
%%================================
\providecommand{\minimalist}{\textsf{minimalist}}
\providecommand{\minimart}{\textsf{minimart}}
@@ -82,13 +88,21 @@
\providecommand{\simplivre}{\textsf{simplivre}}
%%================================
+%% Titles
+%%================================
+\let\LevelOneTitle\section
+\let\LevelTwoTitle\subsection
+\let\LevelThreeTitle\subsubsection
+
+%%================================
%% Main text
%%================================
\begin{document}
\title{\einfart{}, write your articles in a simple and clear way}
\author{Jinwen XU}
-\thanks{Corresponding to: \texttt{\einfart{} 2021/07/05}}
+\thanks{Corresponding to: \texttt{\einfart{} 2021/07/13}}
+\email{\href{mailto:ProjLib@outlook.com}{ProjLib@outlook.com}}
\date{July 2021, Beijing}
\maketitle
@@ -97,21 +111,28 @@
\einfart{} is part of the \minimalist{} class series, whose name is taken from German word ``einfach'' (``simple''), combined with the first three letters of ``artikel'' (``article''). The entire collection includes \minimart{} and \einfart{} for typesetting articles, and \minimbook{} and \simplivre{} for typesetting books. My original intention in designing them was to write drafts and notes that look simple yet not shabby.
\einfart{} has multi-language support, including Chinese (simplified and traditional), English, French, German, Italian, Japanese, Portuguese (European and Brazilian), Russian and Spanish. These languages can be switched seamlessly in a single document. Due to the usage of custom fonts, \einfart{} requires \hologo{XeLaTeX} or \hologo{LuaLaTeX} to compile.
-
+
This documentation is typeset using \einfart{}. You can think of it as a short introduction and demonstration.
\end{abstract}
+
+\setcounter{tocdepth}{2}
\tableofcontents
-\bigskip
-\begin{tip}
- Multi-language support, theorem-like environments, draft marks and some other features are provided by the \ProjLib{} toolkit. Here we only briefly discuss how to use it with this document class. For more detailed information, you can refer to the documentation of \ProjLib{}.
-\end{tip}
-\clearpage
-\section{Initialization}
+\medskip
+\LevelOneTitle*{Before you start}
+\addcontentsline{toc}{section}{Before you start}
+In order to use the package or classes described here, you need to:
+\begin{itemize}
+ \item install TeX Live or MikTeX of the latest possible version, and make sure that \texttt{minimalist} and \texttt{projlib} are correctly installed in your \TeX{} system.
+ \item be familiar with the basic usage of \LaTeX{}, and knows how to compile your document with \hologo{pdfLaTeX}, \hologo{XeLaTeX} or \hologo{LuaLaTeX}.
+\end{itemize}
-\subsection{How to load it}
+
+\LevelOneTitle{Usage and examples}
+
+\LevelTwoTitle{How to load it}
One only needs to put
@@ -120,36 +141,206 @@ One only needs to put
\end{code}
as the first line to use the \einfart{} class. Please note that you need to use either \hologo{XeLaTeX} or \hologo{LuaLaTeX} engine to compile.
-\subsection{Options}
+\LevelTwoTitle{Example - A complete document}
+
+Let's first look at a complete document.
+
+\begin{code*}
+\documentclass{einfart}
+\usepackage{ProjLib}
+
+\UseLanguage{French}
+
+\begin{document}
+
+\title{(*\meta{title}*)}
+\author{(*\meta{author}*)}
+\date{\PLdate{2022-04-01}}
+
+\maketitle
+
+\begin{abstract}
+ Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
+\end{abstract}
+\begin{keyword}
+ AAA, BBB, CCC, DDD, EEE
+\end{keyword}
+
+\section{Un théorème}
+
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+Référence du théorème: \cref{thm:abc}
+
+\end{document}
+\end{code*}
+
+
+If you find this example a little complicated, don't worry. Let's now look at this example piece by piece.
+
+\clearpage
+\LevelThreeTitle{Initialization}
+
+\medskip
+\begin{code}
+\documentclass{einfart}
+\usepackage{ProjLib}
+\end{code}
+
+Initialization is straightforward. The first line loads the document class \einfart{}, and the second line loads the \ProjLib{} toolkit to obtain some additional functionalities.
+
+\LevelThreeTitle{Set the language}
+
+\medskip
+\begin{code}
+\UseLanguage{French}
+\end{code}
+
+This line indicates that French will be used in the document (by the way, if only English appears in your article, then there is no need to set the language). You can also switch the language in the same way later in the middle of the text. Supported languages include Simplified Chinese, Traditional Chinese, Japanese, English, French, German, Spanish, Portuguese, Brazilian Portuguese and Russian%
+.%
+
+For detailed description of this command and more related commands, please refer to the section on the multi-language support.
+
+\LevelThreeTitle{Title, author information, abstract and keywords}
+
+\medskip
+\begin{code}
+\title{(*\meta{title}*)}
+\author{(*\meta{author}*)}
+\date{\PLdate{2022-04-01}}
+\maketitle
+
+\begin{abstract}
+ (*\meta{abstract}*)
+\end{abstract}
+\begin{keyword}
+ (*\meta{keywords}*)
+\end{keyword}
+\end{code}
+
+This part begins with the title and author information block. The example shows the basic usage, but in fact, you can also write:
+
+\begin{code}
+\author{(*\meta{author 1}*)}
+\address{(*\meta{address 1}*)}
+\email{(*\meta{email 1}*)}
+\author{(*\meta{author 2}*)}
+\address{(*\meta{address 2}*)}
+\email{(*\meta{email 2}*)}
+...
+\end{code}
+
+In addition, you may also write in the \AmS{} fashion, i.e.:
+
+\begin{code}
+\title{(*\meta{title}*)}
+\author{(*\meta{author 1}*)}
+\address{(*\meta{address 1}*)}
+\email{(*\meta{email 1}*)}
+\author{(*\meta{author 2}*)}
+\address{(*\meta{address 2}*)}
+\email{(*\meta{email 2}*)}
+\date{\PLdate{2022-04-01}}
+\subjclass{*****}
+\keywords{(*\meta{keywords}*)}
+
+\begin{abstract}
+ (*\meta{abstract}*)
+\end{abstract}
+
+\maketitle
+\end{code}
+
+\LevelThreeTitle{Draft marks}
+
+\medskip
+\begin{code}
+\dnf<(*\meta{some hint}*)>
+\end{code}
+
+When you have some places that have not yet been finished yet, you can mark them with this command, which is especially useful during the draft stage.
+
+\LevelThreeTitle{Theorem-like environments}
+
+\medskip
+\begin{code}
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+Référence du théorème: \cref{thm:abc}
+\end{code}
+
+Commonly used theorem-like environments have been pre-defined. Also, when referencing a theorem-like environment, it is recommended to use \lstinline|\cref{|\meta{label}\texttt{\}} --- in this way, there is no need to explicitly write down the name of the corresponding environment every time.
+
+\begin{tip}
+If you wish to switch to the standard class later, just replace the first two lines with:
+
+\begin{code}
+\documentclass{article}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino,amsfashion]{ProjLib}
+\end{code}
+
+or to use the \AmS{} class:
-\einfart{} offers the following options:
+\begin{code}
+\documentclass{amsart}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{ProjLib}
+\end{code}
+
+\end{tip}
+
+\begin{tip}
+If you like the current document class, but want a more ``plain'' style, then you can use the option \texttt{classical}, like this:
+
+\begin{code}
+\documentclass[classical]{einfart}
+\end{code}
+\end{tip}
+
+
+\LevelOneTitle{On the default fonts}
+By default, \einfart{} uses Palatino Linotype as the English font, FounderType's YouSong and YouHei GBK as the Chinese fonts\footnote{For detail, pleaser visit FounderType's website: \url{https://www.foundertype.com}.}, and partially uses Neo Euler as the math font. Among them, Neo Euler can be downloaded at \url{https://github.com/khaledhosny/euler-otf}. The other fonts are not free, you need to purchase and install them on your own.
+
+
+When the corresponding font is not installed, fonts that comes with TeX Live will be used instead. In this case, the experience might be reduced.
+
+\LevelOneTitle{The options}
+
+\einfart{} offers the following options:
\begin{itemize}
\item The language options \texttt{EN} / \texttt{english} / \texttt{English}, \texttt{FR} / \texttt{french} / \texttt{French}, etc.
\begin{itemize}
\item For the option names of a specific language, please refer to \meta{language name} in the next section. The first specified language will be used as the default language.
+ \item The language options are optional, mainly for increasing the compilation speed. Without them the result would be the same, only slower.
\end{itemize}
\item \texttt{draft} or \texttt{fast}
\begin{itemize}
\item The option \verb|fast| enables a faster but slightly rougher style, main differences are:
\begin{itemize}
- \item Use simpler math font configuration;
- \item Do not use \textsf{hyperref};
+ \item Use simpler math font configuration;
+ \item Do not use \textsf{hyperref};
\item Enable the fast mode of \ProjLib{} toolkit.
\end{itemize}
\end{itemize}
-\begin{tip}
- During the draft stage, it is recommended to use the \verb|fast| option to speed up compilation. When in \verb|fast| mode, there will be a watermark ``DRAFT'' to indicate that you are currently in the draft mode.
-\end{tip}
+ \begin{tip}
+ During the draft stage, it is recommended to use the \verb|fast| option to speed up compilation. When in \verb|fast| mode, there will be a watermark ``DRAFT'' to indicate that you are currently in the draft mode.
+ \end{tip}
\item \texttt{a4paper} or \texttt{b5paper}
\begin{itemize}
- \item Optional paper size. The default paper size is 7in $\times$ 10in.
+ \item Paper size options. The default paper size is 7in $\times$ 10in.
\end{itemize}
\item \texttt{palatino}, \texttt{times}, \texttt{garamond}, \texttt{biolinum} ~$|$~ \texttt{useosf}
\begin{itemize}
- \item Font options. As the name suggest, font with corresponding name will be loaded.
+ \item Font options. As the name suggest, font with corresponding name will be loaded.
\item The \texttt{useosf} option is used to enable the old-style figures.
\end{itemize}
+\clearpage
\item \texttt{allowbf}
\begin{itemize}
\item Allow boldface. When this option is enabled, the main title, the titles of all levels and the names of theorem-like environments will be bolded.
@@ -158,9 +349,9 @@ as the first line to use the \einfart{} class. Please note that you need to use
\begin{itemize}
\item Classic mode. When this option is enabled, the style will become more regular: paragraphs are indented, the use of underlines are reduced, heading styles are changed, and the theorem styles will be much closer to common styles.
\end{itemize}
-\begin{tip}
- \texttt{allowbf} + \texttt{classical} is probably a good choice if you prefer traditional style.
-\end{tip}
+ \begin{tip}
+ \texttt{allowbf} + \texttt{classical} is probably a good choice if you prefer traditional style.
+ \end{tip}
\item \texttt{useindent}
\begin{itemize}
\item Use paragraph indentation instead of inter-paragraph spacing.
@@ -179,22 +370,10 @@ as the first line to use the \einfart{} class. Please note that you need to use
\end{itemize}
\end{itemize}
-\section{On the default fonts}
-By default, \einfart{} uses Palatino Linotype as the English font, FounderType's YouSong and YouHei GBK as the Chinese fonts, and partially uses Neo Euler as the math font. Among them, Neo Euler can be downloaded at \url{https://github.com/khaledhosny/euler-otf}. The other fonts are not free, you need to purchase and install them on your own. (For the Chinese fonts, visit FounderType's website for detail: \url{https://www.foundertype.com} ).
-
-% \begin{itemize}
-% \item English main font. \textsf{English sans serif font}.
-% \item 中文主要字体, \textsf{中文无衬线字体}
-% \item Math demonstration: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
-% \end{itemize}
-
-When the corresponding font is not installed, fonts that comes with TeX Live will be used instead. In this case, the experience might be reduced.
-\section{Instructions}
+\LevelOneTitle{Instructions by topic}
-Many of the features described next are provided by the \ProjLib{} toolkit. Only the basic usage is mentioned here. For more details, please refer to its user documentation.
-
-\subsection{Language configuration}
+\LevelTwoTitle{Language configuration}
\einfart{} has multi-language support, including Chinese (simplified and traditional), English, French, German, Italian, Japanese, Portuguese (European and Brazilian), Russian and Spanish. The language can be selected by the following macros:
@@ -232,12 +411,11 @@ In addition, you can also add new settings to selected language:
\end{itemize}
For example, \lstinline|\AddLanguageSetting(German){\color{orange}}| can make all German text displayed in orange (of course, one then need to add \lstinline|\AddLanguageSetting{\color{black}}| in order to correct the color of the text in other languages).
+\LevelTwoTitle{Theorems and how to reference them}
-\subsection{Theorems and how to reference them}
-
-Environments such as \texttt{definition} and \texttt{theorem} have been pre-defined and can be used directly.
+Environments such as \texttt{definition} and \texttt{theorem} have been preset and can be used directly.
-More specifically, preset environments include:
+More specifically, preset environments include:
\texttt{assumption}, \texttt{axiom}, \texttt{conjecture}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{definition-proposition}, \texttt{definition-theorem}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{notation}, \texttt{observation}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{remark}, \texttt{theorem}, and the corresponding unnumbered version with an asterisk \lstinline|*| in the name. The titles will change with the current language. For example, \texttt{theorem} will be displayed as ``Theorem" in English mode and ``Théorème" in French mode.
When referencing a theorem-like environment, it is recommended to use \lstinline|\cref{|\meta{label}\texttt{\}}. In this way, there is no need to explicitly write down the name of the corresponding environment every time.
@@ -266,16 +444,15 @@ By default, when referenced, the name of the theorem always matches the language
\UseLanguage{English}
-\clearpage
-\subsection{Define a new theorem-like environment}
+\LevelTwoTitle{Define a new theorem-like environment}
If you need to define a new theorem-like environment, you must first define the name of the environment in the language to use:
-\vspace{-0.3\baselineskip}
\begin{itemize}
\item \lstinline|\NameTheorem[|\meta{language name}\lstinline|]{|\meta{name of environment}\lstinline|}{|\meta{name string}\lstinline|}|
\end{itemize}
For \meta{language name}, please refer to the section on language configuration. When \meta{language name} is not specified, the name will be set for all supported languages. In addition, environments with or without asterisk share the same name, therefore, \lstinline|\NameTheorem{envname*}{...}| has the same effect as \lstinline|\NameTheorem{envname}{...}| .
+\medskip
And then define this environment in one of following five ways:
\begin{itemize}
\item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
@@ -292,7 +469,7 @@ And then define this environment in one of following five ways:
\end{itemize}
\item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
\begin{itemize}
- \item Define a numbered environment \meta{name of environment}, numbered within the \\counter \meta{numbered within}
+ \item Define a numbered environment \meta{name of environment}, numbered within the counter \meta{numbered within}
\end{itemize}
\item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
\lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
@@ -300,8 +477,8 @@ And then define this environment in one of following five ways:
\item Identify \meta{name of environment} with \meta{existed environment} or \meta{existed environment}\lstinline|*|.
\item This method is usually useful in the following two situations:
\begin{enumerate}
- \item To use a more concise name. For example, with \lstinline|\CreateTheorem{thm}|\\\lstinline|(theorem)|, one can then use the name \texttt{thm} to write theorem.
- \item To remove the numbering. For example, one can remove the numbering of the \texttt{remark} environment with \lstinline|\CreateTheorem{remark}(remark*)|.
+ \item To use a more concise name. For example, with \lstinline|\CreateTheorem{thm}(theorem)|, one can then use the name \texttt{thm} to write theorem.
+ \item To remove the numbering of some environments. For example, one can remove the numbering of the \texttt{remark} environment with \lstinline|\CreateTheorem{remark}(remark*)|.
\end{enumerate}
\end{itemize}
\end{itemize}
@@ -310,7 +487,6 @@ And then define this environment in one of following five ways:
This macro utilizes the feature of \textsf{amsthm} internally, so the traditional \texttt{theoremstyle} is also applicable to it. One only needs declare the style before the relevant definitions.
\end{tip}
-% \def\proofideanameEN{Idea}
\NameTheorem[EN]{proofidea}{Idea}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>
@@ -324,7 +500,8 @@ Here is an example. The following code:
\CreateTheorem{proofidea}<subsection>
\end{code}
-defines an unnumbered environment \lstinline|proofidea*| and a numbered environment \lstinline|proofidea| (numbered within subsection) respectively. They can be used in English context. The effect is as follows:
+defines an unnumbered environment \lstinline|proofidea*| and a numbered environment \lstinline|proofidea| (numbered within subsection) respectively. They can be used in English context.
+The effect is as follows:
\vspace{-0.3\baselineskip}
\begin{proofidea*}
@@ -336,20 +513,19 @@ defines an unnumbered environment \lstinline|proofidea*| and a numbered environm
The \lstinline|proofidea| environment.
\end{proofidea}
-\subsection{Draft mark}
+\LevelTwoTitle{Draft mark}
You can use \lstinline|\dnf| to mark the unfinished part. For example:
\begin{itemize}
\item \lstinline|\dnf| or \lstinline|\dnf<...>|. The effect is: \dnf~ or \dnf<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\dnf} in French mode.
\end{itemize}
-Similarly, there is \lstinline|\needgraph| :
+Similarly, there is \lstinline|\needgraph| :
\begin{itemize}
\item \lstinline|\needgraph| or \lstinline|\needgraph<...>|. The effect is: \needgraph or \needgraph<...>The prompt text changes according to the current language. For example, in French mode, it will be displayed as \UseOtherLanguage{French}{\needgraph}
\end{itemize}
-
-\subsection{On the title, abstract and keywords}
+\LevelTwoTitle{Title, abstract and keywords}
\einfart{} has both the features of standard classes and that of the \AmS{} classes.
@@ -385,7 +561,6 @@ or written in the way of \AmS{} classes:
\maketitle
\end{code}
-\medskip
The author information can contain multiple groups, written as:
\begin{code}
@@ -400,132 +575,33 @@ The author information can contain multiple groups, written as:
Among them, the mutual order of \lstinline|\address|, \lstinline|\curraddr|, \lstinline|\email| is not important.
+\LevelTwoTitle{Miscellaneous}
-\subsection{On the line numbers}
+\LevelThreeTitle{On the line numbers}
Line numbers can be turned on and off at any time. \lstinline|\linenumbers| is used to enable the line numbers, and \lstinline|\nolinenumbers| is used to disable them. For the sake of beauty, the title, table of contents, index and some other elements are not numbered.
-\subsection{On the footnotes in the title}
+\LevelThreeTitle{On the footnotes in the title}
In \lstinline|\section| or \lstinline|\subsection| , if you wish to add footnotes, you can only:
\begin{itemize}
- \item first write \lstinline|\mbox{\protect\footnotemark}|,
- \item then add \lstinline|\footnotetext{...}| afterwards.
+ \item first write \lstinline|\mbox{\protect\footnotemark}|,
+ \item then add \lstinline|\footnotetext{...}| afterwards.
\end{itemize}
This is a disadvantage brought about by the underline decoration of the title.
-\subsection{On the QED symbols}
+\LevelThreeTitle{On the QED symbols}
Since the font in the theorem-like environments is the same as that of the main text, in order to indicate where the environments end, a hollow QED symbol \simpleqedsymbol{} is placed at the end of the theorem-like environments. However, if your theorem ends with an equation or list (itemize, enumerate, description, etc.), this symbol cannot be automatically placed in the correct position. In this case, you need to manually add a \lstinline|\qedhere| at the end of your equation or the last entry of your list to make the QED symbol appear at the end of the line.
-
-\section{Known issues}
+\LevelOneTitle{Known issues}
\begin{itemize}[itemsep=.6em]
\item The font settings are still not perfect.
- \item Since many features are based on the \ProjLib{} toolkit, \einfart{} inherits all its problems. For details, please refer to the "Known Issues" section of the \ProjLib{} documentation.
+ \item Since many features are based on the \ProjLib{} toolkit, \minimalist{} (and hence \minimart{}, \einfart{} and \minimbook{}, \simplivre{}) inherits all its problems. For details, please refer to the ``Known Issues'' section of the \ProjLib{} documentation.
\item The error handling mechanism is incomplete: there is no corresponding error prompt when some problems occur.
\item There are still many things that can be optimized in the code.
\end{itemize}
-\clearpage
-\section{Document templates}
-
-\subsection{The standard way}
-
-If you want to write in the standard way, you can refer to the following example:
-
-\begin{code}
-\documentclass{einfart}
-\usepackage{ProjLib} % Load ProjLib toolkit
-
-\UseLanguage{French} % Use French from here
-
-\begin{document}
-
-\title{Le Titre}
-\author{Auteur}
-\date{\PLdate{2022-04-01}}
-
-\maketitle
-
-\begin{abstract}
- Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
-\end{abstract}
-\begin{keyword}
- AAA, BBB, CCC, DDD, EEE
-\end{keyword}
-
-\section{Un théorème}
-
-%% Theorem-like environments can be used directly
-\begin{theorem}\label{thm:abc}
- Ceci est un théorème.
-\end{theorem}
-
-Référence du théorème: \cref{thm:abc}
- % It is recommended to use clever reference
-
-\end{document}
-\end{code}
-
-If you wish to switch to the standard class later, just replace the first two lines with:
-
-\begin{code}
-\documentclass{article}
-\usepackage[a4paper,margin=1in]{geometry}
-\usepackage[hidelinks]{hyperref}
-\usepackage[palatino]{ProjLib} % Load ProjLib toolkit
-\end{code}
-
-
-\clearpage
-\subsection{The \texorpdfstring{\AmS{}}{AMS} way}
-
-If you intend to switch to the journal template in the future and thus want to use the writing style as in the \AmS{} classes, you can refer to the following example:
-
-\begin{code}
-\documentclass{einfart}
-\usepackage{ProjLib} % Load ProjLib toolkit
-
-\UseLanguage{French} % Use French from here
-
-\begin{document}
-
-\title{Le Titre}
-\author{Auteur 1}
-\address{Adresse 1}
-\email{\href{Courriel 1}{Courriel 1}}
-\author{Auteur 1}
-\address{Adresse 1}
-\email{\href{Courriel 2}{Courriel 2}}
-\date{\PLdate{2022-04-01}}
-\subjclass{*****}
-\keywords{...}
-
-\begin{abstract}
- Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
-\end{abstract}
-
-\maketitle
-
-\section{Première section}
-
-%% Theorem-like environments can be used directly
-\begin{theorem}\label{thm:abc}
- Ceci est un théorème.
-\end{theorem}
-
-Référence du théorème: \cref{thm:abc}
- % It is recommended to use clever reference
-
-\end{document}
-\end{code}
-
-In this way, if you wish to switch to \AmS{} class later, just replace the first two lines with:
-
-\begin{code}
-\documentclass{amsart}
-\usepackage[a4paper,margin=1in]{geometry}
-\usepackage[hidelinks]{hyperref}
-\usepackage[palatino]{ProjLib} % Load ProjLib toolkit
-\end{code}
\end{document}
+\endinput
+%%
+%% End of file `einfart/einfart-doc-en.tex'.
diff --git a/macros/unicodetex/latex/einfart/einfart-doc-fr.pdf b/macros/unicodetex/latex/einfart/einfart-doc-fr.pdf
new file mode 100644
index 0000000000..1685bbabba
--- /dev/null
+++ b/macros/unicodetex/latex/einfart/einfart-doc-fr.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/einfart/einfart-doc-fr.tex b/macros/unicodetex/latex/einfart/einfart-doc-fr.tex
new file mode 100644
index 0000000000..bc3b2870bc
--- /dev/null
+++ b/macros/unicodetex/latex/einfart/einfart-doc-fr.tex
@@ -0,0 +1,604 @@
+\documentclass[English,Chinese,French,puretext]{einfart}
+
+\CreateTheorem{definition}<highest>
+\CreateTheorem{theorem}[definition]
+
+\linenumbers % Enable line numbers
+
+%%================================
+%% Import toolkit
+%%================================
+\usepackage{ProjLib}
+\usepackage{longtable} % breakable tables
+\usepackage{hologo} % more TeX logo
+\usetikzlibrary{calc}
+
+\usepackage{blindtext}
+
+\UseLanguage{French}
+
+%%================================
+%% For typesetting code
+%%================================
+\usepackage{listings}
+\definecolor{maintheme}{RGB}{70,130,180}
+\definecolor{forestgreen}{RGB}{21,122,81}
+\definecolor{lightergray}{gray}{0.99}
+\lstset{language=[LaTeX]TeX,
+ keywordstyle=\color{maintheme},
+ basicstyle=\ttfamily,
+ commentstyle=\color{forestgreen}\ttfamily,
+ stringstyle=\rmfamily,
+ showstringspaces=false,
+ breaklines=true,
+ frame=lines,
+ backgroundcolor=\color{lightergray},
+ flexiblecolumns=true,
+ escapeinside={(*}{*)},
+ % numbers=left,
+ numberstyle=\scriptsize, stepnumber=1, numbersep=5pt,
+ % firstnumber=last,
+}
+\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
+\lstset{moretexcs=%
+ {linenumbers,nolinenumbers,part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
+ color,NameTheorem,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,ProjLib,qedhere
+ }
+}
+\lstnewenvironment{code}%
+{\setstretch{1.07}\LocallyStopLineNumbers%
+\setkeys{lst}{columns=fullflexible,keepspaces=true}%
+}
+{\ResumeLineNumbers}
+\lstnewenvironment{code*}%
+{\setstretch{1.07}\LocallyStopLineNumbers%
+\setkeys{lst}{numbers=left,columns=fullflexible,keepspaces=true}%
+}
+{\ResumeLineNumbers}
+
+%%================================
+%% tip
+%%================================
+\usepackage[many]{tcolorbox}
+\newenvironment{tip}[1][Astuce]{%
+ \LocallyStopLineNumbers%
+ \begin{tcolorbox}[breakable,
+ enhanced,
+ width = \textwidth,
+ colback = paper, colbacktitle = paper,
+ colframe = gray!50, boxrule=0.2mm,
+ coltitle = black,
+ fonttitle = \sffamily,
+ attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=.5cm},
+ boxed title style = {boxrule=0pt, colframe=paper},
+ before skip = 0.3cm,
+ after skip = 0.3cm,
+ top = 3mm,
+ bottom = 3mm,
+ title={\scshape\sffamily #1}]%
+}{\end{tcolorbox}\ResumeLineNumbers}
+
+%%================================
+%% Names
+%%================================
+\providecommand{\minimalist}{\textsf{minimalist}}
+\providecommand{\minimart}{\textsf{minimart}}
+\providecommand{\minimbook}{\textsf{minimbook}}
+\providecommand{\einfart}{\textsf{einfart}}
+\providecommand{\simplivre}{\textsf{simplivre}}
+
+%%================================
+%% Titles
+%%================================
+\let\LevelOneTitle\section
+\let\LevelTwoTitle\subsection
+\let\LevelThreeTitle\subsubsection
+
+%%================================
+%% Main text
+%%================================
+\begin{document}
+
+\title{\einfart{}, écrivez vos articles de manière simple et claire}
+\author{Jinwen XU}
+\thanks{Correspondant à : \texttt{\einfart{} 2021/07/13}}
+\email{\href{mailto:ProjLib@outlook.com}{ProjLib@outlook.com}}
+\date{juillet 2021, à Pékin}
+
+\maketitle
+
+\begin{abstract}
+ \einfart{} fait partie de la série de classes \minimalist{}, dont le nom est tiré du mot allemand « einfach » (simple), combiné avec les trois premières lettres de « artikel » (article) . L'ensemble de la collection comprend \minimart{} et \einfart{} pour la composition d'articles, et \minimbook{} et \simplivre{} pour celle des livres. Mon intention initiale en les concevant était d'écrire des brouillons et des notes qui semblent simples mais pas grossières.
+
+ \einfart{} prend en charge plusieurs langues, notamment le chinois (simplifié et traditionnel), l'anglais, le français, l'allemand, l'italien, le japonais, le portugais (européen et brésilien), le russe et l'espagnol. Ces langues peuvent être commutées de manière transparente dans un seul document. En raison de l'utilisation de polices personnalisées, \einfart{} demande soit \hologo{XeLaTeX} soit \hologo{LuaLaTeX} pour la compilation.
+
+ Cette documentation est composée à l'aide de \einfart{}. Vous pouvez le considérer comme une courte introduction et une démonstration.
+\end{abstract}
+
+
+\setcounter{tocdepth}{2}
+\tableofcontents
+
+
+\LevelOneTitle*{Avant de commencer}
+\addcontentsline{toc}{section}{Avant de commencer}
+
+Pour utiliser les classes de documents décrites ici, vous devez :
+\begin{itemize}
+ \item installer TeX Live ou MikTeX de la dernière version possible, et vous assurer que \texttt{minimalist} et \texttt{projlib} sont correctement installés dans votre système \TeX{}.
+ \item être familiarisé avec l'utilisation de base de \LaTeX{}, et savoir comment compiler vos documents avec \hologo{pdfLaTeX}, \hologo{XeLaTeX} ou \hologo{LuaLaTeX}.
+\end{itemize}
+
+
+\LevelOneTitle{Utilisation et exemples}
+
+\LevelTwoTitle{Comment l'ajouter}
+
+Il suffit simplement de mettre
+
+\begin{code}
+ \documentclass{einfart}
+\end{code}
+
+comme première ligne pour utiliser la classe \einfart{}. Veuillez noter que vous devez utiliser le moteur \hologo{XeLaTeX} ou \hologo{LuaLaTeX} pour compiler.
+
+\LevelTwoTitle{Exemple - Un document complet}
+
+Regardons d'abord un document complet.
+
+\begin{code*}
+\documentclass{einfart}
+\usepackage{ProjLib}
+
+\UseLanguage{French}
+
+\begin{document}
+
+\title{(*\meta{title}*)}
+\author{(*\meta{author}*)}
+\date{\PLdate{2022-04-01}}
+
+\maketitle
+
+\begin{abstract}
+ Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
+\end{abstract}
+\begin{keyword}
+ AAA, BBB, CCC, DDD, EEE
+\end{keyword}
+
+\section{Un théorème}
+
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+Référence du théorème: \cref{thm:abc}
+
+\end{document}
+\end{code*}
+
+
+Si vous trouvez cela un peu compliqué, ne vous inquiétez pas. Examinons maintenant cet exemple pièce par pièce.
+
+\clearpage
+\LevelThreeTitle{Initialisation}
+
+\medskip
+\begin{code}
+\documentclass{einfart}
+\usepackage{ProjLib}
+\end{code}
+
+L'initialisation est simple. La première ligne ajoute la classe de document \einfart{}, et la deuxième ligne ajoute la boîte à outils \ProjLib{} pour obtenir des fonctionnalités supplémentaires.
+
+\LevelThreeTitle{Choisir la langue}
+
+\medskip
+\begin{code}
+\UseLanguage{French}
+\end{code}
+
+Cette ligne indique que le français sera utilisé dans le document (d'ailleurs, si seul l'anglais apparaît dans votre article, alors il n'est pas nécessaire de choisir la langue). Vous pouvez également changer de langue de la même manière plus tard au milieu du texte. Les langues prises en charge sont les suivantes : chinois simplifié, chinois traditionnel, japonais, anglais, français, allemand, espagnol, portugais, portugais brésilien et russe.
+
+Pour une description détaillée de cette commande et d'autres commandes associées, veuillez vous référer à la section sur le support multilingue.
+
+\LevelThreeTitle{Titre, informations sur l'auteur, résumé et mots-clés}
+
+\medskip
+\begin{code}
+\title{(*\meta{title}*)}
+\author{(*\meta{author}*)}
+\date{\PLdate{2022-04-01}}
+\maketitle
+
+\begin{abstract}
+ (*\meta{abstract}*)
+\end{abstract}
+\begin{keyword}
+ (*\meta{keywords}*)
+\end{keyword}
+\end{code}
+
+Cette partie commence par le titre et le bloc d'informations sur l'auteur. L'exemple montre l'utilisation de base, mais en fait, vous pouvez également écrire comme :
+
+\begin{code}
+\author{(*\meta{author 1}*)}
+\address{(*\meta{address 1}*)}
+\email{(*\meta{email 1}*)}
+\author{(*\meta{author 2}*)}
+\address{(*\meta{address 2}*)}
+\email{(*\meta{email 2}*)}
+...
+\end{code}
+
+De plus, vous pouvez également écrire à la manière \AmS{}, c'est-à-dire :
+
+\begin{code}
+\title{(*\meta{title}*)}
+\author{(*\meta{author 1}*)}
+\address{(*\meta{address 1}*)}
+\email{(*\meta{email 1}*)}
+\author{(*\meta{author 2}*)}
+\address{(*\meta{address 2}*)}
+\email{(*\meta{email 2}*)}
+\date{\PLdate{2022-04-01}}
+\subjclass{*****}
+\keywords{(*\meta{keywords}*)}
+
+\begin{abstract}
+ (*\meta{abstract}*)
+\end{abstract}
+
+\maketitle
+\end{code}
+
+\LevelThreeTitle{Marques de brouillon}
+
+\medskip
+\begin{code}
+\dnf<(*\meta{some hint}*)>
+\end{code}
+Lorsque vous avez des endroits qui ne sont pas encore finis, vous pouvez les marquer avec cette commande, ce qui est particulièrement utile lors de la phase de brouillon.
+
+\LevelThreeTitle{Environnements de type théorème}
+
+\medskip
+\begin{code}
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+Référence du théorème: \cref{thm:abc}
+\end{code}
+
+Les environnements de type théorème couramment utilisés ont été prédéfinis. De plus, lors du référencement d'un environnement de type théorème, il est recommandé d'utiliser \lstinline|\cref{|\meta{label}\texttt{\}} --- de cette manière, il ne serait pas nécessaire d'écrire explicitement le nom de l'environnement correspondant à chaque fois.
+
+\begin{tip}
+Si vous souhaitez utiliser la classe standard à la place plus tard, remplacez simplement les deux premières lignes par :
+
+\begin{code}
+\documentclass{article}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino,amsfashion]{ProjLib}
+\end{code}
+
+ou utilisez la classe \AmS{} :
+
+\begin{code}
+\documentclass{amsart}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{ProjLib}
+\end{code}
+\vspace{-.5\baselineskip}
+\end{tip}
+
+\begin{tip}
+Si vous aimez la classe de document actuelle, mais que vous souhaitez un style plus « simple », vous pouvez utiliser l'option \texttt{classical}, comme ceci :
+
+\begin{code}
+\documentclass[classical]{einfart}
+\end{code}
+\vspace{-.5\baselineskip}
+\end{tip}
+
+
+\LevelOneTitle{À propos des polices par défaut}
+Par défaut, cette classe de document utilise Palatino Linotype comme police anglaise, YouSong et YouHei GBK de FounderType comme polices chinoises\footnote{Pour plus de détails, veuillez visiter le site Web de FounderType : \url{https://www.foundertype.com}.}, et utilise partiellement Neo Euler comme police mathématique. Parmi eux, Neo Euler peut être téléchargé sur \url{https://github.com/khaledhosny/euler-otf}. Les autres polices ne sont pas gratuites, vous devez les acheter et les installer vous-même.
+
+
+Lorsque la police correspondante n'est pas installée, les polices fournies avec TeX Live seront utilisées à la place. Dans ce cas, l'expérience peut être réduite.
+
+
+\LevelOneTitle{Les options}
+
+
+\begin{itemize}
+ \item Les options de langue \texttt{EN} / \texttt{english} / \texttt{English}, \texttt{FR} / \texttt{french} / \texttt{French}, etc.
+ \begin{itemize}
+ \item Pour les noms d'options d'une langue spécifique, veuillez vous référer à \meta{language name} dans la section suivante. La première langue spécifiée sera considérée comme la langue par défaut.
+ \item Les options de langue ne sont pas nécessaires, elles servent principalement à augmenter la vitesse de compilation. Sans eux, le résultat serait le même, justement plus lent.
+ \end{itemize}
+ \item \texttt{draft} ou \texttt{fast}
+ \begin{itemize}
+ \item L'option \verb|fast| permet un style plus rapide mais légèrement plus rugueux, les principales différences sont :
+ \begin{itemize}
+ \item Utilisez une configuration de police mathématique plus simple ;
+ \item N'utilisez pas \textsf{hyperref} ;
+ \item Activez le mode rapide de la boîte à outils \ProjLib{}.
+ \end{itemize}
+ \end{itemize}
+ \begin{tip}
+ Pendant la phase de brouillon, il est recommandé d'utiliser le \verb|fast| option pour accélérer la compilation. Quand dans \verb|fast| mode, il y aura un filigrane ``DRAFT'' pour indiquer que vous êtes actuellement en mode brouillon.
+ \end{tip}
+ \item \texttt{a4paper} ou \texttt{b5paper}
+ \begin{itemize}
+ \item Options de format de papier. Le format de papier par défaut est 7 pouces $\times$ 10 pouces.
+ \end{itemize}
+ \item \texttt{palatino}, \texttt{times}, \texttt{garamond}, \texttt{biolinum} ~$|$~ \texttt{useosf}
+ \begin{itemize}
+ \item Options de police. Comme son nom l'indique, la police avec le nom correspondant sera utilisée.
+ \item L'option \texttt{useosf} est pour activer les chiffres à l'ancienne.
+ \end{itemize}
+ \item \texttt{allowbf}
+ \begin{itemize}
+ \item Pour activer les titres en gras. Lorsque cette option est utilisée, le titre principal, les titres de tous les niveaux et les noms des environnements de type théorème seront en gras.
+ \end{itemize}
+ \item \texttt{classical}
+ \begin{itemize}
+ \item Mode classique. Lorsque cette option est utilisée, le style deviendra plus régulier : les paragraphes sont en retrait, l'utilisation de soulignements est réduite, les styles de titres sont modifiés et les styles de théorème seront beaucoup plus proches des styles par défaut.
+ \end{itemize}
+ \begin{tip}
+ \texttt{allowbf} + \texttt{classical} est probablement un bon choix si vous préférez le style traditionnel.
+ \end{tip}
+ \item \texttt{useindent}
+ \begin{itemize}
+ \item Utilisez l'indentation des paragraphes au lieu de l'espacement entre les paragraphes.
+ \end{itemize}
+ \item \texttt{runin}
+ \begin{itemize}
+ \item Utilisez le style « runin » pour \lstinline|\subsubsection|
+ \end{itemize}
+ \item \texttt{puretext} ou \texttt{nothms}
+ \begin{itemize}
+ \item Mode texte pur. Ne pas définir les environnements de type théorème.
+ \end{itemize}
+ \item \texttt{nothmnum}
+ \begin{itemize}
+ \item Ne pas numéroter les environnements de type théorème.
+ \end{itemize}
+\end{itemize}
+
+\LevelOneTitle{Instructions par sujet}
+
+\LevelTwoTitle{Configurer la langue}
+
+\einfart{} prend en charge plusieurs langues, notamment le chinois (simplifié et traditionnel), l'anglais, le français, l'allemand, l'italien, le japonais, le portugais (européen et brésilien), le russe et l'espagnol. La langue peut être sélectionnée par les macros suivantes :
+
+\begin{itemize}
+ \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}| est utilisé pour spécifier la langue. Le réglage correspondant de la langue sera appliqué après celui-ci. Il peut être utilisé soit dans le préambule ou dans le texte. Lorsqu'aucune langue n'est spécifiée, « English » est sélectionné par défaut.
+ \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|, qui utilise les paramètres de langue spécifiés pour composer \meta{content}. Par rapport à \lstinline|\UseLanguage|, il ne modifiera pas l'interligne, donc l'interligne restera stable lorsque le texte CJK et occidental sont mélangés.
+\end{itemize}
+
+\clearpage
+\meta{language name} peut être (il n'est pas sensible à la casse, par exemple, \texttt{French} et \texttt{french} ont le même effet) :
+\begin{itemize}
+ \item chinois simplifié : \texttt{CN}, \texttt{Chinese}, \texttt{SChinese} ou \texttt{SimplifiedChinese}
+ \item chinois traditionnel : \texttt{TC}, \texttt{TChinese} ou \texttt{TraditionalChinese}
+ \item anglais : \texttt{EN} ou \texttt{English}
+ \item français : \texttt{FR} ou \texttt{French}
+ \item allemand : \texttt{DE}, \texttt{German} ou \texttt{ngerman}
+ \item italien : \texttt{IT} ou \texttt{Italian}
+ \item portugais : \texttt{PT} ou \texttt{Portuguese}
+ \item portugais (brésilien) : \texttt{BR} ou \texttt{Brazilian}
+ \item espagnol : \texttt{ES} ou \texttt{Spanish}
+ \item japonais : \texttt{JP} ou \texttt{Japanese}
+ \item russe : \texttt{RU} ou \texttt{Russian}
+\end{itemize}
+
+\medskip
+De plus, vous pouvez également ajouter de nouveaux paramètres à la langue sélectionnée :
+\begin{itemize}
+ \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item Ajoutez \meta{settings} à toutes les langues prises en charge.
+ \end{itemize}
+ \item \lstinline|\AddLanguageSetting(|\meta{language name}\lstinline|){|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item Ajoutez \meta{settings} à la langue \meta{language name} sélectionnée.
+ \end{itemize}
+\end{itemize}
+Par exemple, \lstinline|\AddLanguageSetting(German){\color{orange}}| peut rendre tout le texte allemand affiché en orange (bien sûr, il faut alors ajouter \lstinline|\AddLanguageSetting{\color{black}}| afin de corriger la couleur du texte dans d'autres langues).
+
+\LevelTwoTitle{Théorèmes et comment les référencer}
+
+Des environnements tels que \texttt{definition} et \texttt{theorem} ont été prédéfinis et peuvent être utilisés directement.
+
+Plus précisement, les environnements prédéfinis incluent : \texttt{assumption}, \texttt{axiom}, \texttt{conjecture}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{definition-proposition}, \texttt{definition-theorem}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{notation}, \texttt{observation}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{remark}, \texttt{theorem}, et la version non numérotée correspondante avec un astérisque \lstinline|*| dans le nom. Les titres changeront avec la langue actuelle. Par exemple, \texttt{theorem} sera affiché comme « Theorem » en mode anglais et « Théorème » en mode français.
+
+Lors du référencement d'un environnement de type théorème, il est recommandé d'utiliser \lstinline|\cref{|\meta{label}\texttt{\}}. De cette façon, il n'est pas nécessaire d'écrire explicitement le nom de l'environnement correspondant à chaque fois.
+
+\begin{tip}[Exemple]
+\begin{code}
+ \begin{definition}[Des choses étranges] \label{def: strange} ...
+\end{code}
+
+will produce
+\begin{definition}[Des choses étranges]\label{def: strange}
+ C'est la définition de certains objets étranges. Il y a approximativement un espace d'une ligne avant et après l'environnement de type théorème, et il y aura un symbole pour marquer la fin de l'environnement.
+\end{definition}
+
+\lstinline|\cref{def: strange}| s'affichera sous la forme : \cref{def: strange}.
+
+Après avoir utilisé \lstinline|\UseLanguage{French}|, un théorème s'affichera sous la forme :
+
+\UseLanguage{English}
+\begin{theorem}[Useless]\label{thm}
+ A theorem in English.
+\end{theorem}
+
+Par défaut, lorsqu'il est référencé, le nom de l'environnement de type théorème correspond toujours à la langue du contexte dans lequel se trouve l'environnement. Par exemple, la définition ci-dessus est toujours affichée en français dans le mode anglais courant : \cref{def: strange} et \cref{thm}. Si vous voulez que le nom du théorème corresponde au contexte actuel lors du référencement, vous pouvez ajouter \texttt{regionalref} aux options globales.
+\end{tip}
+
+\UseLanguage{French}
+
+\LevelTwoTitle{Définir un nouvel environnement de type théorème}
+
+Si vous avez besoin de définir un nouvel environnement de type théorème, vous devez d'abord définir le nom de l'environnement dans le langage à utiliser :
+\begin{itemize}
+ \item \lstinline|\NameTheorem[|\meta{language name}\lstinline|]{|\meta{name of environment}\lstinline|}{|\meta{name string}\lstinline|}|
+\end{itemize}
+Pour \meta{language name}, veuillez vous référer à la section sur la configuration de la langue. Lorsqu'il n'est pas spécifié, le nom sera défini pour toutes les langues prises en charge. De plus, les environnements avec ou sans astérisque partagent le même nom, donc \lstinline|\NameTheorem{envname*}{...}| a le même effet que \lstinline|\NameTheorem{envname}{...}| .
+
+\medskip
+Ensuite, créez cet environnement de l'une des cinq manières suivantes :
+\begin{itemize}
+ \item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item Définir un environnement non numéroté \meta{name of environment}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item Définir un environnement numéroté \meta{name of environment}, numéroté dans l'ordre 1, 2, 3, \dots
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}[|\meta{numbered like}\lstinline|]|
+ \begin{itemize}
+ \item Définir un environnement numéroté \meta{name of environment}, qui partage le compteur \meta{numbered like}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
+ \begin{itemize}
+ \item Définir un environnement numéroté \meta{name of environment}, numéroté dans le compteur \meta{numbered within}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
+ \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
+ \begin{itemize}
+ \item Identifiez \meta{name of environment} avec \meta{existed environment} ou \meta{existed environment}\lstinline|*|.
+ \item Cette méthode est généralement utile dans les deux situations suivantes :
+ \begin{enumerate}
+ \item Pour utiliser un nom plus concis. Par exemple, avec \lstinline|\CreateTheorem{thm}(theorem)|, on peut alors utiliser le nom \texttt{thm} pour écrire le théorème.
+ \item Pour supprimer la numérotation de certains environnements. Par exemple, on peut supprimer la numérotation de l'environnement \texttt{remark} avec \lstinline|\CreateTheorem{remark}(remark*)|.
+ \end{enumerate}
+ \end{itemize}
+\end{itemize}
+
+\begin{tip}
+ Cette macro utilise la fonctionnalité de \textsf{amsthm} en interne, donc le traditionnel \texttt{theoremstyle} lui est également applicable. Il suffit de déclarer le style avant les définitions pertinentes.
+\end{tip}
+
+\NameTheorem[FR]{proofidea}{Idée}
+\CreateTheorem*{proofidea*}
+\CreateTheorem{proofidea}<subsection>
+
+\bigskip
+Voici un exemple. Le code suivant :
+
+\begin{code}
+ \NameTheorem[FR]{proofidea}{Idée}
+ \CreateTheorem*{proofidea*}
+ \CreateTheorem{proofidea}<subsection>
+\end{code}
+
+définit un environnement non numéroté \lstinline|proofidea*| et un environnement numéroté \lstinline|proofidea| (numérotés dans la sous-section) respectivement. Ils peuvent être utilisés dans le contexte français. L'effet est le suivant :
+
+\vspace{-0.3\baselineskip}
+\begin{proofidea*}
+ La environnement \lstinline|proofidea*| .
+\end{proofidea*}
+
+\vspace{-\baselineskip}
+\begin{proofidea}
+ La environnement \lstinline|proofidea| .
+\end{proofidea}
+
+\LevelTwoTitle{Draft mark}
+
+Vous pouvez utiliser \lstinline|\dnf| pour marquer la partie inachevée. Par example :
+\begin{itemize}
+ \item \lstinline|\dnf| ou \lstinline|\dnf<...>|. L'effet est : \dnf~ ou \dnf<...>. \\Le texte à l'intérieur changera en fonction de la langue actuelle. Par exemple, il sera affiché sous la forme \UseOtherLanguage{English}{\dnf} en mode anglais.
+\end{itemize}
+
+De même, il y a aussi \lstinline|\needgraph| :
+\begin{itemize}
+ \item \lstinline|\needgraph| ou \lstinline|\needgraph<...>|. L'effet est : \needgraph ou \needgraph<...>Le texte de l'invite change en fonction de la langue actuelle. Par exemple, en mode anglais, il sera affiché sous la forme \UseOtherLanguage{English}{\needgraph}
+\end{itemize}
+
+\LevelTwoTitle{Titre, résumé et mots-clés}
+
+\einfart{} possède à la fois les caractéristiques des classes standard et celles des classes \AmS{}.
+
+Par conséquent, le titre et les informations sur l'auteur peuvent être soit écrits de la manière habituelle, conformément à la classe standard \textsf{article} :
+
+\begin{code}
+ \title{(*\meta{title}*)}
+ \author{(*\meta{author}*)\thanks{(*\meta{text}*)}}
+ \date{(*\meta{date}*)}
+ \maketitle
+ \begin{abstract}
+ (*\meta{abstract}*)
+ \end{abstract}
+ \begin{keyword}
+ (*\meta{keywords}*)
+ \end{keyword}
+\end{code}
+
+ou écrit à la manière des classes \AmS{} :
+
+\begin{code}
+ \title{(*\meta{title}*)}
+ \author{(*\meta{author}*)}
+ \thanks{(*\meta{text}*)}
+ \address{(*\meta{address}*)}
+ \email{(*\meta{email}*)}
+ \date{(*\meta{date}*)}
+ \keywords{(*\meta{keywords}*)}
+ \subjclass{(*\meta{subjclass}*)}
+ \begin{abstract}
+ (*\meta{abstract}*)
+ \end{abstract}
+ \maketitle
+\end{code}
+
+Les informations sur l'auteur peuvent contenir plusieurs groupes, écrits comme suit :
+
+\begin{code}
+ \author{(*\meta{author 1}*)}
+ \address{(*\meta{address 1}*)}
+ \email{(*\meta{email 1}*)}
+ \author{(*\meta{author 2}*)}
+ \address{(*\meta{address 2}*)}
+ \email{(*\meta{email 2}*)}
+ ...
+\end{code}
+
+Parmi eux, l'ordre mutuel de \lstinline|\address|, \lstinline|\curraddr|, \lstinline|\email| n'est pas important.
+
+\LevelTwoTitle{Divers}
+
+\LevelThreeTitle{Les numéros de ligne}
+Les numéros de ligne peuvent être activés et désactivés n'importe où dans votre texte. \lstinline|\linenumbers| est pour activer les numéros de ligne, et \lstinline|\nolinenumbers| est pour les désactiver. Par souci de beauté, le titre, la table des matières, l'index et certains autres éléments ne sont pas numérotés.
+
+\LevelThreeTitle{Les notes de bas de page dans le titre}
+Dans \lstinline|\section| ou \lstinline|\subsection| , si vous souhaitez ajouter des notes de bas de page, vous n'avez d'autre choix que :
+\begin{itemize}
+ \item écrivez d'abord \lstinline|\mbox{\protect\footnotemark}|,
+ \item puis ajoutez \lstinline|\footnotetext{...}| après le titre.
+\end{itemize}
+C'est un inconvénient provoqué par la décoration de soulignement du titre.
+
+\LevelThreeTitle{Les symboles QED}
+Puisque la police dans les environnements de type théorème est la même que celle du texte principal, afin d'indiquer où se terminent les environnements, un symbole QED creux \simpleqedsymbol{} est placé à la fin des environnements de type théorème. Cependant, si votre théorème se termine par une équation ou une liste (itemize, énumérer, description, etc.), ce symbole ne peut pas être automatiquement placé à la bonne position. Dans ce cas, vous devez ajouter manuellement un \lstinline|\qedhere| à la fin de votre équation ou la dernière entrée de votre liste pour faire apparaître le symbole QED en fin de ligne.
+
+\LevelOneTitle{Problèmes connus}
+
+\begin{itemize}[itemsep=.6em]
+ \item Les paramètres de police ne sont pas encore parfaits.
+ \item Comme de nombreuses fonctionnalités sont basées sur la boîte à outils \ProjLib{}, \minimalist{} (et donc \minimart{}, \einfart{} et \minimbook{}, \simplivre{}) hérite de tous ses problèmes. Pour plus de détails, veuillez vous référer à la section « Problèmes connus » de la documentation de \ProjLib{}.
+ \item Le mécanisme de gestion des erreurs est incomplet : pas de messages correspondants lorsque certains problèmes surviennent.
+ \item Il y a encore beaucoup de choses qui peuvent être optimisées dans le code.
+\end{itemize}
+
+
+\end{document}
+\endinput
+%%
+%% End of file `einfart/einfart-doc-fr.tex'.
diff --git a/macros/unicodetex/latex/einfart/einfart.cls b/macros/unicodetex/latex/einfart/einfart.cls
index 70a747e367..0471027bba 100644
--- a/macros/unicodetex/latex/einfart/einfart.cls
+++ b/macros/unicodetex/latex/einfart/einfart.cls
@@ -17,7 +17,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesClass{einfart}
- [2021/07/05 A simple and clear article style]
+ [2021/07/13 A simple and clear article style]
\def\minimclass@baseclass{article}
\RequirePackage{kvoptions}
\RequirePackage{etoolbox}
@@ -240,6 +240,7 @@
\renewcommand{\nmid}{\hspace{-.2em}\nmid@original\hspace{-.2em}}
}
+\RequirePackage{tikz-cd}
\newbox\xratbelow
\newbox\xratabove
\renewcommand{\xrightarrow}[2][]{%
diff --git a/macros/unicodetex/latex/simplivre/simplivre-doc-cn.pdf b/macros/unicodetex/latex/simplivre/simplivre-doc-cn.pdf
index 26a44b253f..ceac6a1df4 100644
--- a/macros/unicodetex/latex/simplivre/simplivre-doc-cn.pdf
+++ b/macros/unicodetex/latex/simplivre/simplivre-doc-cn.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/simplivre/simplivre-doc-cn.tex b/macros/unicodetex/latex/simplivre/simplivre-doc-cn.tex
index 5ce2d00a7d..351cdd73f3 100644
--- a/macros/unicodetex/latex/simplivre/simplivre-doc-cn.tex
+++ b/macros/unicodetex/latex/simplivre/simplivre-doc-cn.tex
@@ -1,22 +1,24 @@
-%! TEX program = xelatex
-\documentclass[Chinese,English,French,puretext]{simplivre}
+\documentclass[English,Chinese,French,puretext]{simplivre}
\CreateTheorem{definition}<highest>
-\CreateTheorem{theorem}<highest>
+\CreateTheorem{theorem}[definition]
-\linenumbers % 开启行号
+\linenumbers % Enable line numbers
%%================================
-%% 引入工具集
+%% Import toolkit
%%================================
\usepackage{ProjLib}
\usepackage{longtable} % breakable tables
\usepackage{hologo} % more TeX logo
+\usetikzlibrary{calc}
+
+\usepackage{blindtext}
\UseLanguage{Chinese}
%%================================
-%% 排版代码
+%% For typesetting code
%%================================
\usepackage{listings}
\definecolor{maintheme}{RGB}{70,130,180}
@@ -35,19 +37,24 @@
escapeinside={(*}{*)},
% numbers=left,
numberstyle=\scriptsize, stepnumber=1, numbersep=5pt,
- firstnumber=last,
-}
+ % firstnumber=last,
+}
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
- {linenumbers,nolinenumbers,part,chapter,section,subsection,subsubsection,href,
- color,NameTheorem,CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,ProjLib,parttext,qedhere
+ {linenumbers,nolinenumbers,part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
+ color,NameTheorem,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,ProjLib,qedhere
}
}
-\lstnewenvironment{code}%
-{\LocallyStopLineNumbers%
+\lstnewenvironment{code}%
+{\setstretch{1.07}\LocallyStopLineNumbers%
\setkeys{lst}{columns=fullflexible,keepspaces=true}%
}
{\ResumeLineNumbers}
+\lstnewenvironment{code*}%
+{\setstretch{1.07}\LocallyStopLineNumbers%
+\setkeys{lst}{numbers=left,columns=fullflexible,keepspaces=true}%
+}
+{\ResumeLineNumbers}
%%================================
%% tip
@@ -58,21 +65,21 @@
\begin{tcolorbox}[breakable,
enhanced,
width = \textwidth,
- colback = white, colbacktitle = paper,
+ colback = paper, colbacktitle = paper,
colframe = gray!50, boxrule=0.2mm,
coltitle = black,
fonttitle = \sffamily,
- attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=\tcboxedtitlewidth/4},
+ attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=.5cm},
boxed title style = {boxrule=0pt, colframe=paper},
before skip = 0.3cm,
after skip = 0.3cm,
top = 3mm,
bottom = 3mm,
- title={\sffamily #1}]%
+ title={\scshape\sffamily #1}]%
}{\end{tcolorbox}\ResumeLineNumbers}
%%================================
-%% 名称
+%% Names
%%================================
\providecommand{\minimalist}{\textsf{minimalist}}
\providecommand{\minimart}{\textsf{minimart}}
@@ -80,21 +87,18 @@
\providecommand{\einfart}{\textsf{einfart}}
\providecommand{\simplivre}{\textsf{simplivre}}
-\usetikzlibrary{calc}
-
-\usepackage{blindtext}
+%%================================
+%% Titles
+%%================================
+\let\LevelOneTitle\chapter
+\let\LevelTwoTitle\section
+\let\LevelThreeTitle\subsection
%%================================
-%% 正文
+%% Main text
%%================================
\begin{document}
-% \title{\simplivre{},以极简主义风格排版你的图书\thanks{对应版本. \texttt{\simplivre{} 2021/06/07}}}
-% \author{许锦文}
-% \date{2021年6月,北京}
-
-% \maketitle
-
\frontmatter
\begin{titlepage} % Suppresses displaying the page number on the title page and the subsequent page counts as page 1
@@ -102,13 +106,14 @@
\fill [cyan!90!black] ($(current page.south west)+(0,7)$) rectangle ($(current page.north west)+(21,-7)$);
\fill [yellow] (current page.south west) rectangle ($(current page.north west)+(3,0)$);
\node[text width=10cm] at ($(current page.north west)+(8.5,-6)$) {\huge\ProjLib};
- \node[text width=6cm,text height=3.5cm,scale=2.5] at ($(current page.north west)+(11,-9)$) {\textcolor{white}{\sffamily\simplivre{}\\[5pt]\footnotesize\hspace*{-.05em}以极简主义风格排版你的图书\\[10pt]\tiny 对应版本. \texttt{\simplivre{} 2021/07/05}}};
+ \node[text width=6cm,text height=3.5cm,scale=2.5] at ($(current page.north west)+(11,-9)$) {\textcolor{white}{\sffamily\simplivre{}\\[5pt]\footnotesize\hspace*{-.05em}以极简主义风格排版你的图书\\[10pt]\tiny 对应版本. \texttt{\simplivre{} 2021/07/13}}};
\node at ($(current page.south)+(1.5,3)$) {\fontsize{16pt}{0pt}\selectfont\textcolor{gray}{许锦文}};
\node at ($(current page.south)+(1.5,2)$) {\fontsize{12pt}{0pt}\selectfont\textcolor{gray}{2021年7月,北京}};
\end{tikzpicture}%
\end{titlepage}%
\cleardoublepage%
+
\chapter*{前言}
\simplivre{} 是 \minimalist{} 文档类系列的成员之一,其名称取自于法文的 simple (“简约”),以及 livre (“书”),由二者组合而成。整个 \minimalist{} 系列包含用于排版文章的 \minimart{}、\einfart{} 以及用于排版书的 \minimbook{}、\simplivre{}。我设计这一系列的初衷是为了撰写草稿与笔记,使之看上去简朴而不简陋。
@@ -129,9 +134,18 @@
\part{说明}
\parttext{可以通过 \lstinline|\\parttext|\meta{text} 在这里添加一些说明}
-\chapter{初始化}
+\medskip
+\LevelOneTitle*{开始之前}
+为了使用这篇文档中提到的文档类,你需要:
+\begin{itemize}
+ \item 安装一个尽可能新版本的 TeX Live 或 MikTeX 套装,并确保 \texttt{minimalist} 和 \texttt{projlib} 被正确安装在你的 \TeX 封装中。
+ \item 熟悉 \LaTeX{} 的基本使用方式,并且知道如何用 \hologo{pdfLaTeX}、\hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 编译你的文档。
+\end{itemize}
+
+
+\LevelOneTitle{使用示例}
-\section{如何载入}
+\LevelTwoTitle{如何加载}
只需要在第一行写:
@@ -145,7 +159,110 @@
要使用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 引擎才能编译。
\end{tip}
-\section{选项}
+\LevelTwoTitle{一篇完整的文档示例}
+
+首先来看一段完整的示例。
+
+
+\begin{code*}
+\documentclass{minimbook}
+\usepackage{ProjLib}
+
+\UseLanguage{French}
+
+\begin{document}
+
+\frontmatter
+
+\begin{titlepage}
+ (*\meta{code for titlepage}*)
+\end{titlepage}
+
+\tableofcontents
+
+\mainmatter
+
+\part{(*\meta{part title}*)}
+\parttext{(*\meta{text after part title}*)}
+
+\chapter{(*\meta{chapter title}*)}
+
+\section{(*\meta{section title}*)}
+
+\dnf<Plus de contenu est nécessaire.>
+
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+Référence du théorème: \cref{thm:abc}
+
+\backmatter
+
+...
+
+\end{document}
+\end{code*}
+
+如果你觉得这个例子有些复杂,不要担心。现在我们来一点点地观察这个例子。
+
+\LevelThreeTitle{初始化部分}
+
+\medskip
+\begin{code}
+\documentclass{simplivre}
+\usepackage{ProjLib}
+\end{code}
+
+初始化部分很简单:第一行加载文档类 \simplivre{},第二行加载 \ProjLib{} 工具箱,以便使用一些附加功能。
+
+\LevelThreeTitle{设定语言}
+
+\medskip
+\begin{code}
+\UseLanguage{French}
+\end{code}
+
+这一行表明文档中将使用法语(如果你的文章中只出现英语,那么可以不需要设定语言)。你也可以在文章中间用同样的方式再次切换语言。支持的语言包括简体中文、繁体中文、日文、英语、法语、德语、西班牙语、葡萄牙语、巴西葡萄牙语、俄语。
+
+对于这一命令的详细说明以及更多相关命令,可以参考后面关于多语言支持的小节。
+
+
+\LevelThreeTitle{未完成标记}
+
+\medskip
+\begin{code}
+\dnf<(*\meta{some hint}*)>
+\end{code}
+当你有一些地方尚未完成的时候,可以用这条指令标记出来,它在草稿阶段格外有用。
+
+\LevelThreeTitle{定理类环境}
+
+\medskip
+\begin{code}
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+Référence du théorème: \cref{thm:abc}
+\end{code}
+
+常见的定理类环境可以直接使用。在引用的时候,建议采用智能引用 \lstinline|\cref{|\meta{label}\lstinline|}|——这样就不必每次都写上相应环境的名称了。
+
+
+
+
+\LevelOneTitle{关于默认字体}
+\einfart{} 默认使用 Palatino Linotype 作为英文字体,方正悠宋、悠黑GBK作为中文字体,并部分使用了 Neo Euler 作为数学字体。其中,Neo Euler可以在 \url{https://github.com/khaledhosny/euler-otf} 下载。其他字体不是免费字体,需要自行购买使用。可以在方正字库网站查询详细资料:\url{https://www.foundertype.com}。
+
+\begin{itemize}
+ \item English main font. \textsf{English sans serif font}.
+ \item 中文主要字体,\textsf{中文无衬线字体}
+ \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+\end{itemize}
+
+在没有安装相应的字体时,将采用TeX Live中自带的字体来代替,效果可能会有所折扣。
+
+
+\LevelOneTitle{选项}
\simplivre{} 文档类有下面几个选项:
@@ -153,6 +270,7 @@
\item 语言选项 \texttt{EN} / \texttt{english} / \texttt{English}、\texttt{FR} / \texttt{french} / \texttt{French},等等
\begin{itemize}
\item 具体选项名称可参见下一节的 \meta{language name}。第一个指定的语言将作为默认语言。
+ \item 语言选项不是必需的,其主要用途是提高编译速度。不添加语言选项时效果是一样的,只是会更慢一些。
\end{itemize}
\item \texttt{draft} 或 \texttt{fast}
\begin{itemize}
@@ -163,14 +281,13 @@
\item 启用 \ProjLib{} 工具箱的快速模式。
\end{itemize}
\end{itemize}
-\begin{tip}
- 在文章的撰写阶段,建议使用 \verb|fast| 选项以加快编译速度,改善写作时的流畅度。使用 \verb|fast| 模式时会有“DRAFT”字样的水印,以提示目前处于草稿阶段。
-\end{tip}
+ \begin{tip}
+ 在文章的撰写阶段,建议使用 \verb|fast| 选项以加快编译速度,改善写作时的流畅度。使用 \verb|fast| 模式时会有“DRAFT”字样的水印,以提示目前处于草稿阶段。
+ \end{tip}
\item \texttt{a4paper} 或 \texttt{b5paper}
\begin{itemize}
\item 可选的纸张大小。默认的纸张大小为 7in $\times$ 10in。
\end{itemize}
- \clearpage
\item \texttt{palatino}、\texttt{times}、\texttt{garamond}、\texttt{biolinum} ~$|$~ \texttt{useosf}
\begin{itemize}
\item 字体选项。顾名思义,会加载相应名称的字体。
@@ -184,10 +301,10 @@
\begin{itemize}
\item 经典模式。启用这一选项时,样式会变得更加中规中矩:段落呈首行缩进样式、各类下划线减少、标题样式改变、定理类环境的样式也会更贴近常见的设置。
\end{itemize}
-\begin{tip}
- 如果你喜欢更加传统的样式,\texttt{allowbf} + \texttt{classical} 是一个不错的搭配。
-\end{tip}
- \item \texttt{useindent}
+ \begin{tip}
+ 如果你喜欢更加传统的样式,\texttt{allowbf} + \texttt{classical} 是一个不错的搭配。
+ \end{tip}
+ \item \texttt{useindent}
\begin{itemize}
\item 采用段首缩进而不是段间间距。
\end{itemize}
@@ -195,7 +312,7 @@
\begin{itemize}
\item \lstinline|\subsubsection| 采用 ``runin'' 风格。
\end{itemize}
- \item \texttt{puretext} or \texttt{nothms}
+ \item \texttt{puretext} 或 \texttt{nothms}
\begin{itemize}
\item 纯文本模式,不加载定理类环境。
\end{itemize}
@@ -204,32 +321,12 @@
\item 定理类环境不编号。
\end{itemize}
\end{itemize}
-
\bigskip
另外,排版图书时常用的 \texttt{oneside}、\texttt{twoside} 选项也是可以使用的。默认采用双页排版。
-\chapter{关于默认字体}
-\simplivre{} 默认使用 Palatino Linotype 作为英文字体,方正悠宋、悠黑GBK作为中文字体,并部分使用了 Neo Euler 作为数学字体。其中,Neo Euler可以在 \url{https://github.com/khaledhosny/euler-otf} 下载。其他字体不是免费字体,需要自行购买使用。可以在方正字库网站查询详细资料:\url{https://www.foundertype.com}。
-
-\begin{tip}[字体演示]
- \begin{itemize}
- \item English main font. \textsf{English sans serif font}. \texttt{English typewriter font}.
- \item 中文主要字体,\textsf{中文无衬线字体}
- \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
- \end{itemize}
-\end{tip}
-
-\bigskip
-在没有安装相应的字体时,将采用TeX Live中自带的字体来代替,效果可能会有所折扣。
-
-
-\chapter{使用说明}
-
-\vspace{-\baselineskip}
+\LevelOneTitle{具体说明}
-接下来介绍的许多功能是由 \ProjLib{} 工具箱提供的。这里只介绍了基本使用方法,更多细节可以直接参阅其用户文档。
-
-\section{语言设置}
+\LevelTwoTitle{语言设置}
\simplivre{} 提供了多语言支持,包括英语、法语、德语、意大利语、葡萄牙语、巴西葡萄牙语、西班牙语、简体中文、繁体中文、日文、俄文。可以通过下列命令来选定语言:
\begin{itemize}
@@ -271,8 +368,7 @@
\end{itemize}
例如,\lstinline|\AddLanguageSetting(German){\color{orange}}| 可以让所有德语以橙色显示(当然,还需要再加上 \lstinline|\AddLanguageSetting{\color{black}}| 来修正其他语言的颜色)。
-
-\section{定理类环境及其引用}
+\LevelTwoTitle{定理类环境及其引用}
定义、定理等环境已经被预定义,可以直接使用。
@@ -281,6 +377,7 @@
在引用定理类环境时,建议使用智能引用 \lstinline|\cref{|\meta{label}\lstinline|}|。这样就不必每次都写上相应环境的名称了。
+\medskip
\begin{tip}[例子]
\begin{code}
\begin{definition}[奇异物品] \label{def: strange} ...
@@ -292,6 +389,7 @@
\lstinline|\cref{def: strange}| 会显示为:\cref{def: strange}。
+\medskip
使用 \lstinline|\UseLanguage{English}| 后,定理会显示为:
\UseLanguage{English}
@@ -304,17 +402,15 @@
\UseLanguage{Chinese}
-
-\section{定义新的定理型环境}
+\LevelTwoTitle{定义新的定理型环境}
若需要定义新的定理类环境,首先要定义这个环境在所用语言下的名称:
-% \vspace{-.15\baselineskip}%
\begin{itemize}
\item \lstinline|\NameTheorem[|\meta{language name}\lstinline|]{|\meta{name of environment}\lstinline|}{|\meta{name string}\lstinline|}|
\end{itemize}
-% \vspace{-.15\baselineskip}%
其中,\meta{language name} 可参阅关于语言设置的小节。当不指定 \meta{language name}时,则会将该名称设置为所有支持语言下的名称。另外,带星号与不带星号的同名环境共用一个名称,因此 \lstinline|\NameTheorem{envname*}{...}| 与 \lstinline|\NameTheorem{envname}{...}| 效果相同。
+\clearpage
然后用下面五种方式之一定义这一环境:
\begin{itemize}
\item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
@@ -349,7 +445,6 @@
其内部使用了 \textsf{amsthm},因此传统的 \texttt{theoremstyle} 对其也是适用的,只需在相关定义前标明即可。
\end{tip}
-% \def\proofideanameCN{思路}
\NameTheorem[CN]{proofidea}{思路}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<section>
@@ -365,15 +460,16 @@
可以分别定义不编号的环境 \lstinline|proofidea*| 和编号的环境 \lstinline|proofidea| (在 section 内编号),它们支持在简体中文语境中使用,效果如下所示:
+\vspace{-.3\baselineskip}
\begin{proofidea*}
\lstinline|proofidea*| 环境。
\end{proofidea*}
-
+\vspace{-.5\baselineskip}
\begin{proofidea}
\lstinline|proofidea| 环境。
\end{proofidea}
-\section{未完成标记}
+\LevelTwoTitle{未完成标记}
你可以通过 \lstinline|\dnf| 来标记尚未完成的部分。例如:
\begin{itemize}
@@ -386,60 +482,12 @@
\end{itemize}
-% \section{关于文章标题、摘要与关键词}
-
-% % 由于引入了 \ProjLib{} 工具箱的 \textsf{PJLamssim} 组件,
-% \simplivre{} 同时具有标准文档类与\AmS{} 文档类的一些特性。
-
-% 因此,文章的标题部分既可以按照标准文档类 \textsf{article} 的写法来写:
-
-% \begin{code}
-% \title{(*\meta{title}*)}
-% \author{(*\meta{author}*)}
-% \date{(*\meta{date}*)}
-% \maketitle
-% \begin{abstract}
-% (*\meta{abstract}*)
-% \end{abstract}
-% \begin{keyword}
-% (*\meta{keywords}*)
-% \end{keyword}
-% \end{code}
-
-% 也可以按照 \AmS{} 文档类的方式来写:
-
-% \begin{code}
-% \title{(*\meta{title}*)}
-% \author{(*\meta{author}*)}
-% \address{(*\meta{address}*)}
-% \email{(*\meta{email}*)}
-% \date{(*\meta{date}*)}
-% \keywords{(*\meta{keywords}*)}
-% \subjclass{(*\meta{subjclass}*)}
-% \begin{abstract}
-% (*\meta{abstract}*)
-% \end{abstract}
-% \maketitle
-% \end{code}
-
-% 作者信息可以包含多组,输入方式为:
-
-% \begin{code}
-% \author{(*\meta{author 1}*)}
-% \address{(*\meta{address 1}*)}
-% \email{(*\meta{email 1}*)}
-% \author{(*\meta{author 2}*)}
-% \address{(*\meta{address 2}*)}
-% \email{(*\meta{email 2}*)}
-% ...
-% \end{code}
-
-% 其中 \lstinline|\address|、\lstinline|\curraddr|、\lstinline|\email| 的相互顺序是不重要的。
-
-\section{关于行号}
+\LevelTwoTitle{其他}
+
+\LevelThreeTitle{关于行号}
行号可以随时开启和关闭。\lstinline|\linenumbers| 用来开启行号,\lstinline|\nolinenumbers| 用来关闭行号。标题、目录、索引等位置为了美观,不进行编号。
-\section{关于标题中的脚注}
+\LevelThreeTitle{关于标题中的脚注}
在 \lstinline|\section| 或 \lstinline|\subsection| 中,如果想使用脚注,只能:
\begin{itemize}
\item 先写 \lstinline|\mbox{\protect\footnotemark}|,
@@ -447,118 +495,22 @@
\end{itemize}
这是标题使用下划线装饰之后带来的一个缺点。
-\section{关于QED符号}
+\LevelThreeTitle{关于QED符号}
由于定理类环境中的字体和正文字体是一样的,为了方便看出定理类环境在哪里结束,在其结尾处放置了一个空心的QED符号。然而,如果你的定理是由公式或者列表结尾的,这个符号就无法自动地放在正确的位置。这时,你需要手动在公式或列表最后一个条目的后面加上 \lstinline|\qedhere|,以让QED符号显示到这一行的最后。
-
-\section{目前存在的问题}
+\LevelOneTitle{目前存在的问题}
\begin{itemize}[itemsep=.6em]
\item 对于字体的设置仍然不够完善。
- \item 由于很多核心功能建立在 \ProjLib{} 工具箱的基础上,因此 \simplivre{} 自然继承了其所有问题。详情可以参阅 \ProjLib{} 用户文档的“目前存在的问题”这一小节。
+ \item 由于很多核心功能建立在 \ProjLib{} 工具箱的基础上,因此 \einfart{} 自然继承了其所有问题。详情可以参阅 \ProjLib{} 用户文档的“目前存在的问题”这一小节。
\item 错误处理功能不完善,在出现一些问题时没有相应的错误提示。
\item 代码中仍有许多可优化之处。
\end{itemize}
-
-
-\UseLanguage{English}
-
\part{演示}
-
-\chapter{文档示例}
-
-\vspace*{-1.5\baselineskip}
-
-\section{标准文档类写法}
-
-如果想采用标准文档类中的写法,可以参考下面的例子:
-
-\begin{code}
-\documentclass{simplivre}
-\usepackage{ProjLib} % Load ProjLib toolkit
-
-\UseLanguage{French} % Use French from here
-
-\begin{document}
-
-\title{Le Titre}
-\author{Auteur}
-\date{\PLdate{2022-04-01}}
-
-\maketitle
-
-\chapter{Un théorème}
-
-%% Theorem-like environments can be used directly
-\begin{theorem}\label{thm:abc}
- Ceci est un théorème.
-\end{theorem}
-
-Référence du théorème: \cref{thm:abc}
- % It is recommended to use clever reference
-
-\end{document}
-\end{code}
-
-如果以后想切换到标准文档类,只需要将前两行换为:
-
-\begin{code}
-\documentclass{book}
-\usepackage[a4paper,margin=1in]{geometry}
-\usepackage[hidelinks]{hyperref}
-\usepackage[palatino]{ProjLib} % Load ProjLib toolkit
-\end{code}
-
-
-% \clearpage
-\section{\texorpdfstring{\AmS{}}{AMS} 文档类写法}
-
-如果日后有意切换到期刊模版,想采用 \AmS{} 文档类中的写法,可以参考下面的例子:
-
-\begin{code}
-\documentclass{simplivre}
-\usepackage{ProjLib} % Load ProjLib toolkit
-
-\UseLanguage{French} % Use French from here
-
-\begin{document}
-
-\title{Le Titre}
-\author{Auteur 1}
-\address{Adresse 1}
-\email{\href{Courriel 1}{Courriel 1}}
-\author{Auteur 1}
-\address{Adresse 1}
-\email{\href{Courriel 2}{Courriel 2}}
-\date{\PLdate{2022-04-01}}
-\subjclass{*****}
-\keywords{...}
-
-\maketitle
-
-\section{Première section}
-
-%% Theorem-like environments can be used directly
-\begin{theorem}\label{thm:abc}
- Ceci est un théorème.
-\end{theorem}
-
-Référence du théorème: \cref{thm:abc}
- % It is recommended to use clever reference
-
-\end{document}
-\end{code}
-
-这样,若想切换到 \AmS{} 文档类,只需要将前两行换为:
-
-\begin{code}
-\documentclass{amsbook}
-\usepackage[a4paper,margin=1in]{geometry}
-\usepackage[hidelinks]{hyperref}
-\usepackage[palatino]{ProjLib} % Load ProjLib toolkit
-\end{code}
-
\blinddocument
\end{document}
+\endinput
+%%
+%% End of file `simplivre/simplivre-doc-cn.tex'.
diff --git a/macros/unicodetex/latex/simplivre/simplivre-doc-en.pdf b/macros/unicodetex/latex/simplivre/simplivre-doc-en.pdf
index 6b4ed825c1..34a65c050f 100644
--- a/macros/unicodetex/latex/simplivre/simplivre-doc-en.pdf
+++ b/macros/unicodetex/latex/simplivre/simplivre-doc-en.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/simplivre/simplivre-doc-en.tex b/macros/unicodetex/latex/simplivre/simplivre-doc-en.tex
index 1885bfd03c..96012c739b 100644
--- a/macros/unicodetex/latex/simplivre/simplivre-doc-en.tex
+++ b/macros/unicodetex/latex/simplivre/simplivre-doc-en.tex
@@ -1,8 +1,7 @@
-%! TEX program = xelatex
-\documentclass[English,French,puretext]{simplivre}
+\documentclass[English,Chinese,French,puretext]{simplivre}
\CreateTheorem{definition}<highest>
-\CreateTheorem{theorem}<highest>
+\CreateTheorem{theorem}[definition]
\linenumbers % Enable line numbers
@@ -12,9 +11,14 @@
\usepackage{ProjLib}
\usepackage{longtable} % breakable tables
\usepackage{hologo} % more TeX logo
+\usetikzlibrary{calc}
+
+\usepackage{blindtext}
+
+\UseLanguage{English}
%%================================
-%% For typestting code
+%% For typesetting code
%%================================
\usepackage{listings}
\definecolor{maintheme}{RGB}{70,130,180}
@@ -33,19 +37,24 @@
escapeinside={(*}{*)},
% numbers=left,
numberstyle=\scriptsize, stepnumber=1, numbersep=5pt,
- firstnumber=last,
-}
+ % firstnumber=last,
+}
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
- {linenumbers,nolinenumbers,part,chapter,section,subsection,subsubsection,href,
- color,NameTheorem,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,ProjLib,parttext,qedhere
+ {linenumbers,nolinenumbers,part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
+ color,NameTheorem,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,ProjLib,qedhere
}
}
-\lstnewenvironment{code}%
-{\LocallyStopLineNumbers%
+\lstnewenvironment{code}%
+{\setstretch{1.07}\LocallyStopLineNumbers%
\setkeys{lst}{columns=fullflexible,keepspaces=true}%
}
{\ResumeLineNumbers}
+\lstnewenvironment{code*}%
+{\setstretch{1.07}\LocallyStopLineNumbers%
+\setkeys{lst}{numbers=left,columns=fullflexible,keepspaces=true}%
+}
+{\ResumeLineNumbers}
%%================================
%% tip
@@ -70,7 +79,7 @@
}{\end{tcolorbox}\ResumeLineNumbers}
%%================================
-%% 名称
+%% Names
%%================================
\providecommand{\minimalist}{\textsf{minimalist}}
\providecommand{\minimart}{\textsf{minimart}}
@@ -78,21 +87,18 @@
\providecommand{\einfart}{\textsf{einfart}}
\providecommand{\simplivre}{\textsf{simplivre}}
-\usetikzlibrary{calc}
-
-\usepackage{blindtext}
+%%================================
+%% Titles
+%%================================
+\let\LevelOneTitle\chapter
+\let\LevelTwoTitle\section
+\let\LevelThreeTitle\subsection
%%================================
%% Main text
%%================================
\begin{document}
-% \title{\simplivre{}, write your books in a simple and clear way}
-% \author{Jinwen XU}
-% \thanks{Corresponding to: \texttt{\simplivre{} 2021/05/23}}
-% \date{May 2021, Beijing}
-
-% \maketitle
\frontmatter
@@ -101,13 +107,14 @@
\fill [cyan!90!black] ($(current page.south west)+(0,7)$) rectangle ($(current page.north west)+(21,-7)$);
\fill [yellow] (current page.south west) rectangle ($(current page.north west)+(3,0)$);
\node[text width=10cm] at ($(current page.north west)+(8.5,-6)$) {\huge\ProjLib};
- \node[text width=6cm,text height=3.5cm,scale=2.5] at ($(current page.north west)+(11,-9)$) {\textcolor{white}{\sffamily\simplivre{}\\[5pt]\footnotesize\textsc{Write your books in \\a simple and clear way}\\[10pt]\tiny Corresponding to: \texttt{\simplivre{} 2021/07/05}}};
+ \node[text width=6cm,text height=3.5cm,scale=2.5] at ($(current page.north west)+(11,-9)$) {\textcolor{white}{\sffamily\simplivre{}\\[5pt]\footnotesize\textsc{Write your books in \\a simple and clear way}\\[10pt]\tiny Corresponding to: \texttt{\simplivre{} 2021/07/13}}};
\node at ($(current page.south)+(1.5,3)$) {\fontsize{16pt}{0pt}\selectfont\textcolor{gray}{\scshape Jinwen XU}};
\node at ($(current page.south)+(1.5,2)$) {\fontsize{12pt}{0pt}\selectfont\textcolor{gray}{July 2021, Beijing}};
\end{tikzpicture}%
\end{titlepage}%
\cleardoublepage%
+
\chapter*{Preface}
\simplivre{} is part of the \minimalist{} class series. Its name is taken from French words ``simple'' and ``livre'' (for ``book''). The entire collection includes \minimart{} and \einfart{} for typesetting articles, and \minimbook{} and \simplivre{} for typesetting books. My original intention in designing them was to write drafts and notes that look simple yet not shabby.
@@ -126,53 +133,166 @@ This documentation is typeset using \simplivre{}. You can think of it as a short
\mainmatter
\part{Instruction}
-\parttext{You can add some introduction text here via \lstinline|\\parttext|\meta{text}.}
+\parttext{You can add some introductory text here via \lstinline|\\parttext|\meta{text}.}
+
+\medskip
+\LevelOneTitle*{Before you start}
+\addcontentsline{toc}{chapter}{Before you start}
+In order to use the package or classes described here, you need to:
+\begin{itemize}
+ \item install TeX Live or MikTeX of the latest possible version, and make sure that \texttt{minimalist} and \texttt{projlib} are correctly installed in your \TeX{} system.
+ \item be familiar with the basic usage of \LaTeX{}, and knows how to compile your document with \hologo{pdfLaTeX}, \hologo{XeLaTeX} or \hologo{LuaLaTeX}.
+\end{itemize}
-\chapter{Initialization}
-\section{How to load it}
+\LevelOneTitle{Usage and examples}
+
+\LevelTwoTitle{How to load it}
One only needs to put
\begin{code}
\documentclass{simplivre}
\end{code}
-
as the first line to use the \simplivre{} class.
\begin{tip}[Attention]
You need to use either \hologo{XeLaTeX} or \hologo{LuaLaTeX} engine to compile.
\end{tip}
-\section{Options}
+\LevelTwoTitle{Example - A complete document}
+
+Let's first look at a complete document.
+
+
+\begin{code*}
+\documentclass{minimbook}
+\usepackage{ProjLib}
+
+\UseLanguage{French}
+
+\begin{document}
+
+\frontmatter
+
+\begin{titlepage}
+ (*\meta{code for titlepage}*)
+\end{titlepage}
+
+\tableofcontents
+
+\mainmatter
+
+\part{(*\meta{part title}*)}
+\parttext{(*\meta{text after part title}*)}
+
+\chapter{(*\meta{chapter title}*)}
+
+\section{(*\meta{section title}*)}
+
+\dnf<Plus de contenu est nécessaire.>
+
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+Référence du théorème: \cref{thm:abc}
+
+\backmatter
+
+...
+
+\end{document}
+\end{code*}
+
+If you find this example a little complicated, don't worry. Let's now look at this example piece by piece.
+
+\LevelThreeTitle{Initialization}
+
+\medskip
+\begin{code}
+\documentclass{simplivre}
+\usepackage{ProjLib}
+\end{code}
+
+Initialization is straightforward. The first line loads the document class \simplivre{}, and the second line loads the \ProjLib{} toolkit to obtain some additional functionalities.
+
+\LevelThreeTitle{Set the language}
+
+\medskip
+\begin{code}
+\UseLanguage{French}
+\end{code}
+
+This line indicates that French will be used in the document (by the way, if only English appears in your article, then there is no need to set the language). You can also switch the language in the same way later in the middle of the text. Supported languages include Simplified Chinese, Traditional Chinese, Japanese, English, French, German, Spanish, Portuguese, Brazilian Portuguese and Russian%
+.%
+
+For detailed description of this command and more related commands, please refer to the section on the multi-language support.
+
+
+\LevelThreeTitle{Draft marks}
+
+\medskip
+\begin{code}
+\dnf<(*\meta{some hint}*)>
+\end{code}
+
+When you have some places that have not yet been finished yet, you can mark them with this command, which is especially useful during the draft stage.
+
+\LevelThreeTitle{Theorem-like environments}
+
+\medskip
+\begin{code}
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+Référence du théorème: \cref{thm:abc}
+\end{code}
+
+Commonly used theorem-like environments have been pre-defined. Also, when referencing a theorem-like environment, it is recommended to use \lstinline|\cref{|\meta{label}\texttt{\}} --- in this way, there is no need to explicitly write down the name of the corresponding environment every time.
+
+
-\simplivre{} offers the following options:
+
+\LevelOneTitle{On the default fonts}
+By default, \einfart{} uses Palatino Linotype as the English font, FounderType's YouSong and YouHei GBK as the Chinese fonts\footnote{For detail, pleaser visit FounderType's website: \url{https://www.foundertype.com}.}, and partially uses Neo Euler as the math font. Among them, Neo Euler can be downloaded at \url{https://github.com/khaledhosny/euler-otf}. The other fonts are not free, you need to purchase and install them on your own.
+
+\begin{itemize}
+ \item English main font. \textsf{English sans serif font}.
+ \item 中文主要字体, \textsf{中文无衬线字体}
+ \item Math demonstration: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+\end{itemize}
+
+When the corresponding font is not installed, fonts that comes with TeX Live will be used instead. In this case, the experience might be reduced.
+
+\LevelOneTitle{The options}
+
+\simplivre{} offers the following options:
\begin{itemize}
\item The language options \texttt{EN} / \texttt{english} / \texttt{English}, \texttt{FR} / \texttt{french} / \texttt{French}, etc.
\begin{itemize}
\item For the option names of a specific language, please refer to \meta{language name} in the next section. The first specified language will be used as the default language.
+ \item The language options are optional, mainly for increasing the compilation speed. Without them the result would be the same, only slower.
\end{itemize}
\item \texttt{draft} or \texttt{fast}
\begin{itemize}
\item The option \verb|fast| enables a faster but slightly rougher style, main differences are:
\begin{itemize}
- \item Use simpler math font configuration;
- \item Do not use \textsf{hyperref};
+ \item Use simpler math font configuration;
+ \item Do not use \textsf{hyperref};
\item Enable the fast mode of \ProjLib{} toolkit.
\end{itemize}
\end{itemize}
-\begin{tip}
- During the draft stage, it is recommended to use the \verb|fast| option to speed up compilation. When in \verb|fast| mode, there will be a watermark ``DRAFT'' to indicate that you are currently in the draft mode.
-\end{tip}
+ \begin{tip}
+ During the draft stage, it is recommended to use the \verb|fast| option to speed up compilation. When in \verb|fast| mode, there will be a watermark ``DRAFT'' to indicate that you are currently in the draft mode.
+ \end{tip}
\item \texttt{a4paper} or \texttt{b5paper}
\begin{itemize}
- \item Optional paper size. The default paper size is 7in $\times$ 10in.
+ \item Paper size options. The default paper size is 7in $\times$ 10in.
\end{itemize}
- \clearpage
\item \texttt{palatino}, \texttt{times}, \texttt{garamond}, \texttt{biolinum} ~$|$~ \texttt{useosf}
\begin{itemize}
- \item Font options. As the name suggest, font with corresponding name will be loaded.
+ \item Font options. As the name suggest, font with corresponding name will be loaded.
\item The \texttt{useosf} option is used to enable the old-style figures.
\end{itemize}
\item \texttt{allowbf}
@@ -183,9 +303,9 @@ as the first line to use the \simplivre{} class.
\begin{itemize}
\item Classic mode. When this option is enabled, the style will become more regular: paragraphs are indented, the use of underlines are reduced, heading styles are changed, and the theorem styles will be much closer to common styles.
\end{itemize}
-\begin{tip}
- \texttt{allowbf} + \texttt{classical} is probably a good choice if you prefer traditional style.
-\end{tip}
+ \begin{tip}
+ \texttt{allowbf} + \texttt{classical} is probably a good choice if you prefer traditional style.
+ \end{tip}
\item \texttt{useindent}
\begin{itemize}
\item Use paragraph indentation instead of inter-paragraph spacing.
@@ -207,26 +327,9 @@ as the first line to use the \simplivre{} class.
\bigskip
In addition, the commonly used \texttt{oneside} and \texttt{twoside} options are also available. Two-page layout is used by default.
-\chapter{On the default fonts}
-By default, \simplivre{} uses Palatino Linotype as the English font, FounderType's YouSong and YouHei GBK as the Chinese fonts, and partially uses Neo Euler as the math font. Among them, Neo Euler can be downloaded at \url{https://github.com/khaledhosny/euler-otf}. The other fonts are not free, you need to purchase and install them on your own. (For the Chinese fonts, visit FounderType's website for detail: \url{https://www.foundertype.com} ).
-
-\begin{tip}[Font demonstration]
- \begin{itemize}
- \item English main font. \textsf{English sans serif font}. \texttt{English typewriter font}.
- \item 中文主要字体,\textsf{中文无衬线字体}
- \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
- \end{itemize}
-\end{tip}
-
-\bigskip
-When the corresponding font is not installed, fonts that comes with TeX Live will be used instead. In this case, the experience might be reduced.
-
-
-\chapter{Some instructions}
+\LevelOneTitle{Instructions by topic}
-Many of the features described next are provided by the \ProjLib{} toolkit. Only the basic usage is mentioned here. For more details, please refer to its user documentation.
-
-\section{Language configuration}
+\LevelTwoTitle{Language configuration}
\simplivre{} has multi-language support, including Chinese (simplified and traditional), English, French, German, Italian, Japanese, Portuguese (European and Brazilian), Russian and Spanish. The language can be selected by the following macros:
@@ -264,13 +367,12 @@ In addition, you can also add new settings to selected language:
\end{itemize}
For example, \lstinline|\AddLanguageSetting(German){\color{orange}}| can make all German text displayed in orange (of course, one then need to add \lstinline|\AddLanguageSetting{\color{black}}| in order to correct the color of the text in other languages).
+\LevelTwoTitle{Theorems and how to reference them}
-\section{Theorems and how to reference them}
-
-Environments such as \texttt{definition} and \texttt{theorem} have been pre-defined and can be used directly.
+Environments such as \texttt{definition} and \texttt{theorem} have been preset and can be used directly.
-More specifically, preset environments include:
-\texttt{assumption}, \texttt{axiom}, \texttt{conjecture}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{definition-proposition}, \texttt{definition-theorem}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{notation}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{remark}, \texttt{theorem}, and the corresponding unnumbered version with an asterisk \lstinline|*| in the name. The titles will change with the current language. For example, \texttt{theorem} will be displayed as ``Theorem" in English mode and ``Théorème" in French mode.
+More specifically, preset environments include:
+\texttt{assumption}, \texttt{axiom}, \texttt{conjecture}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{definition-proposition}, \texttt{definition-theorem}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{notation}, \texttt{observation}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{remark}, \texttt{theorem}, and the corresponding unnumbered version with an asterisk \lstinline|*| in the name. The titles will change with the current language. For example, \texttt{theorem} will be displayed as ``Theorem" in English mode and ``Théorème" in French mode.
When referencing a theorem-like environment, it is recommended to use \lstinline|\cref{|\meta{label}\texttt{\}}. In this way, there is no need to explicitly write down the name of the corresponding environment every time.
@@ -298,8 +400,7 @@ By default, when referenced, the name of the theorem always matches the language
\UseLanguage{English}
-
-\section{Define a new theorem-like environment}
+\LevelTwoTitle{Define a new theorem-like environment}
If you need to define a new theorem-like environment, you must first define the name of the environment in the language to use:
\begin{itemize}
@@ -324,7 +425,7 @@ And then define this environment in one of following five ways:
\end{itemize}
\item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
\begin{itemize}
- \item Define a numbered environment \meta{name of environment}, numbered within the \\counter \meta{numbered within}
+ \item Define a numbered environment \meta{name of environment}, numbered within the counter \meta{numbered within}
\end{itemize}
\item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
\lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
@@ -332,8 +433,8 @@ And then define this environment in one of following five ways:
\item Identify \meta{name of environment} with \meta{existed environment} or \meta{existed environment}\lstinline|*|.
\item This method is usually useful in the following two situations:
\begin{enumerate}
- \item To use a more concise name. For example, with \lstinline|\CreateTheorem{thm}|\\\lstinline|(theorem)|, one can then use the name \texttt{thm} to write theorem.
- \item To remove the numbering. For example, one can remove the numbering of the \texttt{remark} environment with \lstinline|\CreateTheorem{remark}(remark*)|.
+ \item To use a more concise name. For example, with \lstinline|\CreateTheorem{thm}(theorem)|, one can then use the name \texttt{thm} to write theorem.
+ \item To remove the numbering of some environments. For example, one can remove the numbering of the \texttt{remark} environment with \lstinline|\CreateTheorem{remark}(remark*)|.
\end{enumerate}
\end{itemize}
\end{itemize}
@@ -342,7 +443,6 @@ And then define this environment in one of following five ways:
This macro utilizes the feature of \textsf{amsthm} internally, so the traditional \texttt{theoremstyle} is also applicable to it. One only needs declare the style before the relevant definitions.
\end{tip}
-% \def\proofideanameEN{Idea}
\NameTheorem[EN]{proofidea}{Idea}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<section>
@@ -356,203 +456,62 @@ Here is an example. The following code:
\CreateTheorem{proofidea}<section>
\end{code}
-defines an unnumbered environment \lstinline|proofidea*| and a numbered environment \lstinline|proofidea| (numbered within section) respectively. They can be used in English context. The effect is as follows:
+defines an unnumbered environment \lstinline|proofidea*| and a numbered environment \lstinline|proofidea| (numbered within section) respectively. They can be used in English context.
+The effect is as follows:
+\vspace{-0.3\baselineskip}
\begin{proofidea*}
The \lstinline|proofidea*| environment.
\end{proofidea*}
+\vspace{-\baselineskip}
\begin{proofidea}
The \lstinline|proofidea| environment.
\end{proofidea}
-% \clearpage
-\section{Draft mark}
+\clearpage
+\LevelTwoTitle{Draft mark}
You can use \lstinline|\dnf| to mark the unfinished part. For example:
\begin{itemize}
\item \lstinline|\dnf| or \lstinline|\dnf<...>|. The effect is: \dnf~ or \dnf<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\dnf} in French mode.
\end{itemize}
-Similarly, there is \lstinline|\needgraph| :
+Similarly, there is \lstinline|\needgraph| :
\begin{itemize}
\item \lstinline|\needgraph| or \lstinline|\needgraph<...>|. The effect is: \needgraph or \needgraph<...>The prompt text changes according to the current language. For example, in French mode, it will be displayed as \UseOtherLanguage{French}{\needgraph}
\end{itemize}
-% \vspace{-.5\baselineskip}
-% \section{On the title, abstract and keywords}
-
-% \simplivre{} has both the features of standard classes and that of the \AmS{} classes.
-
-% Therefore, the title part can either be written in the usual way, in accordance with the standard class \textsf{article}:
-
-% \begin{code}
-% \title{(*\meta{title}*)}
-% \author{(*\meta{author}*)}
-% \date{(*\meta{date}*)}
-% \maketitle
-% \begin{abstract}
-% (*\meta{abstract}*)
-% \end{abstract}
-% \begin{keyword}
-% (*\meta{keywords}*)
-% \end{keyword}
-% \end{code}
-
-% \vspace{-.5\baselineskip}
-% or written in the way of \AmS{} classes:
-
-% \begin{code}
-% \title{(*\meta{title}*)}
-% \author{(*\meta{author}*)}
-% \address{(*\meta{address}*)}
-% \email{(*\meta{email}*)}
-% \date{(*\meta{date}*)}
-% \keywords{(*\meta{keywords}*)}
-% \subjclass{(*\meta{subjclass}*)}
-% \begin{abstract}
-% (*\meta{abstract}*)
-% \end{abstract}
-% \maketitle
-% \end{code}
-
-% \medskip
-% The author information can contain multiple groups, written as:
-
-% \begin{code}
-% \author{(*\meta{author 1}*)}
-% \address{(*\meta{address 1}*)}
-% \email{(*\meta{email 1}*)}
-% \author{(*\meta{author 2}*)}
-% \address{(*\meta{address 2}*)}
-% \email{(*\meta{email 2}*)}
-% ...
-% \end{code}
-
-% Among them, the mutual order of \lstinline|\address|, \lstinline|\curraddr|, \lstinline|\email| is not important.
-
-\section{On the line numbers}
+
+\LevelTwoTitle{Miscellaneous}
+
+\LevelThreeTitle{On the line numbers}
Line numbers can be turned on and off at any time. \lstinline|\linenumbers| is used to enable the line numbers, and \lstinline|\nolinenumbers| is used to disable them. For the sake of beauty, the title, table of contents, index and some other elements are not numbered.
-\section{On the footnotes in the title}
+\LevelThreeTitle{On the footnotes in the title}
In \lstinline|\section| or \lstinline|\subsection| , if you wish to add footnotes, you can only:
\begin{itemize}
- \item first write \lstinline|\mbox{\protect\footnotemark}|,
- \item then add \lstinline|\footnotetext{...}| afterwards.
+ \item first write \lstinline|\mbox{\protect\footnotemark}|,
+ \item then add \lstinline|\footnotetext{...}| afterwards.
\end{itemize}
This is a disadvantage brought about by the underline decoration of the title.
-\section{On the QED symbols}
+\LevelThreeTitle{On the QED symbols}
Since the font in the theorem-like environments is the same as that of the main text, in order to indicate where the environments end, a hollow QED symbol \simpleqedsymbol{} is placed at the end of the theorem-like environments. However, if your theorem ends with an equation or list (itemize, enumerate, description, etc.), this symbol cannot be automatically placed in the correct position. In this case, you need to manually add a \lstinline|\qedhere| at the end of your equation or the last entry of your list to make the QED symbol appear at the end of the line.
-
-\clearpage
-\section{Known issues}
+\LevelOneTitle{Known issues}
\begin{itemize}[itemsep=.6em]
\item The font settings are still not perfect.
- \item Since many features are based on the \ProjLib{} toolkit, \simplivre{} inherits all its problems. For details, please refer to the "Known Issues" section of the \ProjLib{} documentation.
+ \item Since many features are based on the \ProjLib{} toolkit, \minimalist{} (and hence \minimart{}, \einfart{} and \minimbook{}, \simplivre{}) inherits all its problems. For details, please refer to the ``Known Issues'' section of the \ProjLib{} documentation.
\item The error handling mechanism is incomplete: there is no corresponding error prompt when some problems occur.
\item There are still many things that can be optimized in the code.
\end{itemize}
-
\part{Demonstration}
-
-\chapter{Document templates}
-
-\vspace*{-1.5\baselineskip}
-
-\section{The standard way}
-
-If you want to write in the standard way, you can refer to the following example:
-
-\begin{code}
-\documentclass{simplivre}
-\usepackage{ProjLib} % Load ProjLib toolkit
-
-\UseLanguage{French} % Use French from here
-
-\begin{document}
-
-\title{Le Titre}
-\author{Auteur}
-\date{\PLdate{2022-04-01}}
-
-\maketitle
-
-\chapter{Un théorème}
-
-%% Theorem-like environments can be used directly
-\begin{theorem}\label{thm:abc}
- Ceci est un théorème.
-\end{theorem}
-
-Référence du théorème: \cref{thm:abc}
- % It is recommended to use clever reference
-
-\end{document}
-\end{code}
-
-If you wish to switch to the standard class later, just replace the first two lines with:
-
-\begin{code}
-\documentclass{article}
-\usepackage[a4paper,margin=1in]{geometry}
-\usepackage[hidelinks]{hyperref}
-\usepackage[palatino]{ProjLib} % Load ProjLib toolkit
-\end{code}
-
-
-\clearpage
-\section{The \texorpdfstring{\AmS{}}{AMS} way}
-
-If you intend to switch to the journal template in the future and thus want to use the writing style as in the \AmS{} classes, you can refer to the following example:
-
-\begin{code}
-\documentclass{simplivre}
-\usepackage{ProjLib} % Load ProjLib toolkit
-
-\UseLanguage{French} % Use French from here
-
-\begin{document}
-
-\title{Le Titre}
-\author{Auteur 1}
-\address{Adresse 1}
-\email{\href{Courriel 1}{Courriel 1}}
-\author{Auteur 1}
-\address{Adresse 1}
-\email{\href{Courriel 2}{Courriel 2}}
-\date{\PLdate{2022-04-01}}
-\subjclass{*****}
-\keywords{...}
-
-\maketitle
-
-\chapter{Première section}
-
-%% Theorem-like environments can be used directly
-\begin{theorem}\label{thm:abc}
- Ceci est un théorème.
-\end{theorem}
-
-Référence du théorème: \cref{thm:abc}
- % It is recommended to use clever reference
-
-\end{document}
-\end{code}
-
-\vspace{-0.3\baselineskip}
-In this way, if you wish to switch to \AmS{} class later, just replace the first two lines with:
-
-\begin{code}
-\documentclass{amsart}
-\usepackage[a4paper,margin=1in]{geometry}
-\usepackage[hidelinks]{hyperref}
-\usepackage[palatino]{ProjLib} % Load ProjLib toolkit
-\end{code}
-
\blinddocument
\end{document}
+\endinput
+%%
+%% End of file `simplivre/simplivre-doc-en.tex'.
diff --git a/macros/unicodetex/latex/simplivre/simplivre-doc-fr.pdf b/macros/unicodetex/latex/simplivre/simplivre-doc-fr.pdf
new file mode 100644
index 0000000000..de83ca3ed2
--- /dev/null
+++ b/macros/unicodetex/latex/simplivre/simplivre-doc-fr.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/simplivre/simplivre-doc-fr.tex b/macros/unicodetex/latex/simplivre/simplivre-doc-fr.tex
new file mode 100644
index 0000000000..fd50796985
--- /dev/null
+++ b/macros/unicodetex/latex/simplivre/simplivre-doc-fr.tex
@@ -0,0 +1,511 @@
+\documentclass[English,Chinese,French,puretext]{simplivre}
+
+\CreateTheorem{definition}<highest>
+\CreateTheorem{theorem}[definition]
+
+\linenumbers % Enable line numbers
+
+%%================================
+%% Import toolkit
+%%================================
+\usepackage{ProjLib}
+\usepackage{longtable} % breakable tables
+\usepackage{hologo} % more TeX logo
+\usetikzlibrary{calc}
+
+\usepackage{blindtext}
+
+\UseLanguage{French}
+
+%%================================
+%% For typesetting code
+%%================================
+\usepackage{listings}
+\definecolor{maintheme}{RGB}{70,130,180}
+\definecolor{forestgreen}{RGB}{21,122,81}
+\definecolor{lightergray}{gray}{0.99}
+\lstset{language=[LaTeX]TeX,
+ keywordstyle=\color{maintheme},
+ basicstyle=\ttfamily,
+ commentstyle=\color{forestgreen}\ttfamily,
+ stringstyle=\rmfamily,
+ showstringspaces=false,
+ breaklines=true,
+ frame=lines,
+ backgroundcolor=\color{lightergray},
+ flexiblecolumns=true,
+ escapeinside={(*}{*)},
+ % numbers=left,
+ numberstyle=\scriptsize, stepnumber=1, numbersep=5pt,
+ % firstnumber=last,
+}
+\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
+\lstset{moretexcs=%
+ {linenumbers,nolinenumbers,part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
+ color,NameTheorem,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,ProjLib,qedhere
+ }
+}
+\lstnewenvironment{code}%
+{\setstretch{1.07}\LocallyStopLineNumbers%
+\setkeys{lst}{columns=fullflexible,keepspaces=true}%
+}
+{\ResumeLineNumbers}
+\lstnewenvironment{code*}%
+{\setstretch{1.07}\LocallyStopLineNumbers%
+\setkeys{lst}{numbers=left,columns=fullflexible,keepspaces=true}%
+}
+{\ResumeLineNumbers}
+
+%%================================
+%% tip
+%%================================
+\usepackage[many]{tcolorbox}
+\newenvironment{tip}[1][Astuce]{%
+ \LocallyStopLineNumbers%
+ \begin{tcolorbox}[breakable,
+ enhanced,
+ width = \textwidth,
+ colback = paper, colbacktitle = paper,
+ colframe = gray!50, boxrule=0.2mm,
+ coltitle = black,
+ fonttitle = \sffamily,
+ attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=.5cm},
+ boxed title style = {boxrule=0pt, colframe=paper},
+ before skip = 0.3cm,
+ after skip = 0.3cm,
+ top = 3mm,
+ bottom = 3mm,
+ title={\scshape\sffamily #1}]%
+}{\end{tcolorbox}\ResumeLineNumbers}
+
+%%================================
+%% Names
+%%================================
+\providecommand{\minimalist}{\textsf{minimalist}}
+\providecommand{\minimart}{\textsf{minimart}}
+\providecommand{\minimbook}{\textsf{minimbook}}
+\providecommand{\einfart}{\textsf{einfart}}
+\providecommand{\simplivre}{\textsf{simplivre}}
+
+%%================================
+%% Titles
+%%================================
+\let\LevelOneTitle\chapter
+\let\LevelTwoTitle\section
+\let\LevelThreeTitle\subsection
+
+%%================================
+%% Main text
+%%================================
+\begin{document}
+
+\frontmatter
+
+\begin{titlepage} % Suppresses displaying the page number on the title page and the subsequent page counts as page 1
+\begin{tikzpicture}[overlay,remember picture]
+ \fill [cyan!90!black] ($(current page.south west)+(0,7)$) rectangle ($(current page.north west)+(21,-7)$);
+ \fill [yellow] (current page.south west) rectangle ($(current page.north west)+(3,0)$);
+ \node[text width=10cm] at ($(current page.north west)+(8.5,-6)$) {\huge\ProjLib};
+ \node[text width=6cm,text height=3.5cm,scale=2.5] at ($(current page.north west)+(11,-9)$) {\textcolor{white}{\sffamily\simplivre{}\\[5pt]\footnotesize\textsc{Écrivez vos livres \\de manière simple et claire}\\[10pt]\tiny Correspondant à : \texttt{\simplivre{} 2021/07/13}}};
+ \node at ($(current page.south)+(1.5,3)$) {\fontsize{16pt}{0pt}\selectfont\textcolor{gray}{\scshape Jinwen XU}};
+ \node at ($(current page.south)+(1.5,2)$) {\fontsize{12pt}{0pt}\selectfont\textcolor{gray}{juillet 2021, à Pékin}};
+\end{tikzpicture}%
+\end{titlepage}%
+\cleardoublepage%
+
+
+\chapter*{Préface}
+
+\simplivre{} fait partie de la série de classes \minimalist{}, dont le nom est tiré des mots « simple » et « livre ». L'ensemble de la collection comprend \minimart{} et \einfart{} pour la composition d'articles, et \minimbook{} et \simplivre{} pour celle des livres. Mon intention initiale en les concevant était d'écrire des brouillons et des notes qui semblent simples mais pas grossières.
+
+\simplivre{} prend en charge plusieurs langues, notamment le chinois (simplifié et traditionnel), l'anglais, le français, l'allemand, l'italien, le japonais, le portugais (européen et brésilien), le russe et l'espagnol. Ces langues peuvent être commutées de manière transparente dans un seul document. En raison de l'utilisation de polices personnalisées, \simplivre{} demande soit \hologo{XeLaTeX} soit \hologo{LuaLaTeX} pour la compilation.
+
+Cette documentation est composée à l'aide de \simplivre{}. Vous pouvez le considérer comme une courte introduction et une démonstration.
+
+\bigskip
+\begin{tip}
+ La prise en charge multilingue, les environnements de type théorème, les marques de brouillon et quelques autres fonctionnalités sont fournis par la boîte à outils \ProjLib{}. Ici, nous ne discutons que brièvement de la façon de l'utiliser avec cette classe de document. Pour plus d'informations, veuillez vous référer à la documentation de \ProjLib{}.
+\end{tip}
+
+\tableofcontents
+
+\mainmatter
+
+\part{Instruction}
+\parttext{Vous pouvez ajouter quelque texte d'introduction ici via \lstinline|\\parttext|\meta{text}.}
+
+\LevelOneTitle*{Avant de commencer}
+\addcontentsline{toc}{chapter}{Avant de commencer}
+
+Pour utiliser les classes de documents décrites ici, vous devez :
+\begin{itemize}
+ \item installer TeX Live ou MikTeX de la dernière version possible, et vous assurer que \texttt{minimalist} et \texttt{projlib} sont correctement installés dans votre système \TeX{}.
+ \item être familiarisé avec l'utilisation de base de \LaTeX{}, et savoir comment compiler vos documents avec \hologo{pdfLaTeX}, \hologo{XeLaTeX} ou \hologo{LuaLaTeX}.
+\end{itemize}
+
+
+\LevelOneTitle{Utilisation et exemples}
+
+\LevelTwoTitle{Comment l'ajouter}
+
+Il suffit simplement de mettre
+
+\begin{code}
+ \documentclass{simplivre}
+\end{code}
+
+comme première ligne pour utiliser la classe \simplivre{}.
+
+\begin{tip}[Attention]
+ Vous devez utiliser le moteur \hologo{XeLaTeX} ou \hologo{LuaLaTeX} pour compiler.
+\end{tip}
+
+\LevelTwoTitle{Exemple - Un document complet}
+
+Regardons d'abord un document complet.
+
+
+\begin{code*}
+\documentclass{minimbook}
+\usepackage{ProjLib}
+
+\UseLanguage{French}
+
+\begin{document}
+
+\frontmatter
+
+\begin{titlepage}
+ (*\meta{code for titlepage}*)
+\end{titlepage}
+
+\tableofcontents
+
+\mainmatter
+
+\part{(*\meta{part title}*)}
+\parttext{(*\meta{text after part title}*)}
+
+\chapter{(*\meta{chapter title}*)}
+
+\section{(*\meta{section title}*)}
+
+\dnf<Plus de contenu est nécessaire.>
+
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+Référence du théorème: \cref{thm:abc}
+
+\backmatter
+
+...
+
+\end{document}
+\end{code*}
+
+Si vous trouvez cela un peu compliqué, ne vous inquiétez pas. Examinons maintenant cet exemple pièce par pièce.
+
+\LevelThreeTitle{Initialisation}
+
+\medskip
+\begin{code}
+\documentclass{simplivre}
+\usepackage{ProjLib}
+\end{code}
+
+L'initialisation est simple. La première ligne ajoute la classe de document \simplivre{}, et la deuxième ligne ajoute la boîte à outils \ProjLib{} pour obtenir des fonctionnalités supplémentaires.
+
+\LevelThreeTitle{Choisir la langue}
+
+\medskip
+\begin{code}
+\UseLanguage{French}
+\end{code}
+
+Cette ligne indique que le français sera utilisé dans le document (d'ailleurs, si seul l'anglais apparaît dans votre article, alors il n'est pas nécessaire de choisir la langue). Vous pouvez également changer de langue de la même manière plus tard au milieu du texte. Les langues prises en charge sont les suivantes : chinois simplifié, chinois traditionnel, japonais, anglais, français, allemand, espagnol, portugais, portugais brésilien et russe.
+
+Pour une description détaillée de cette commande et d'autres commandes associées, veuillez vous référer à la section sur le support multilingue.
+
+
+\LevelThreeTitle{Marques de brouillon}
+
+\medskip
+\begin{code}
+\dnf<(*\meta{some hint}*)>
+\end{code}
+Lorsque vous avez des endroits qui ne sont pas encore finis, vous pouvez les marquer avec cette commande, ce qui est particulièrement utile lors de la phase de brouillon.
+
+\LevelThreeTitle{Environnements de type théorème}
+
+\medskip
+\begin{code}
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+Référence du théorème: \cref{thm:abc}
+\end{code}
+
+Les environnements de type théorème couramment utilisés ont été prédéfinis. De plus, lors du référencement d'un environnement de type théorème, il est recommandé d'utiliser \lstinline|\cref{|\meta{label}\texttt{\}} --- de cette manière, il ne serait pas nécessaire d'écrire explicitement le nom de l'environnement correspondant à chaque fois.
+
+
+
+
+\LevelOneTitle{À propos des polices par défaut}
+Par défaut, cette classe de document utilise Palatino Linotype comme police anglaise, YouSong et YouHei GBK de FounderType comme polices chinoises\footnote{Pour plus de détails, veuillez visiter le site web de FounderType : \url{https://www.foundertype.com}.}, et utilise partiellement Neo Euler comme police mathématique. Parmi eux, Neo Euler peut être téléchargé sur \url{https://github.com/khaledhosny/euler-otf}. Les autres polices ne sont pas gratuites, vous devez les acheter et les installer vous-même.
+
+\begin{itemize}
+ \item English main font. \textsf{English sans serif font}.
+ \item 中文主要字体, \textsf{中文无衬线字体}
+ \item Démonstration de maths : \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+\end{itemize}
+
+Lorsque la police correspondante n'est pas installée, les polices fournies avec TeX Live seront utilisées à la place. Dans ce cas, l'expérience peut être réduite.
+
+
+\LevelOneTitle{Les options}
+
+
+\begin{itemize}
+ \item Les options de langue \texttt{EN} / \texttt{english} / \texttt{English}, \texttt{FR} / \texttt{french} / \texttt{French}, etc.
+ \begin{itemize}
+ \item Pour les noms d'options d'une langue spécifique, veuillez vous référer à \meta{language name} dans la section suivante. La première langue spécifiée sera considérée comme la langue par défaut.
+ \item Les options de langue ne sont pas nécessaires, elles servent principalement à augmenter la vitesse de compilation. Sans eux, le résultat serait le même, justement plus lent.
+ \end{itemize}
+ \item \texttt{draft} ou \texttt{fast}
+ \begin{itemize}
+ \item L'option \verb|fast| permet un style plus rapide mais légèrement plus rugueux, les principales différences sont :
+ \begin{itemize}
+ \item Utilisez une configuration de police mathématique plus simple ;
+ \item N'utilisez pas \textsf{hyperref} ;
+ \item Activez le mode rapide de la boîte à outils \ProjLib{}.
+ \end{itemize}
+ \end{itemize}
+ \begin{tip}
+ Pendant la phase de brouillon, il est recommandé d'utiliser le \verb|fast| option pour accélérer la compilation. Quand dans \verb|fast| mode, il y aura un filigrane ``DRAFT'' pour indiquer que vous êtes actuellement en mode brouillon.
+ \end{tip}
+ \item \texttt{a4paper} ou \texttt{b5paper}
+ \begin{itemize}
+ \item Options de format de papier. Le format de papier par défaut est 7 pouces $\times$ 10 pouces.
+ \end{itemize}
+ \item \texttt{palatino}, \texttt{times}, \texttt{garamond}, \texttt{biolinum} ~$|$~ \texttt{useosf}
+ \begin{itemize}
+ \item Options de police. Comme son nom l'indique, la police avec le nom correspondant sera utilisée.
+ \item L'option \texttt{useosf} est pour activer les chiffres à l'ancienne.
+ \end{itemize}
+ \item \texttt{allowbf}
+ \begin{itemize}
+ \item Pour activer les titres en gras. Lorsque cette option est utilisée, le titre principal, les titres de tous les niveaux et les noms des environnements de type théorème seront en gras.
+ \end{itemize}
+ \item \texttt{classical}
+ \begin{itemize}
+ \item Mode classique. Lorsque cette option est utilisée, le style deviendra plus régulier : les paragraphes sont en retrait, l'utilisation de soulignements est réduite, les styles de titres sont modifiés et les styles de théorème seront beaucoup plus proches des styles par défaut.
+ \end{itemize}
+ \begin{tip}
+ \texttt{allowbf} + \texttt{classical} est probablement un bon choix si vous préférez le style traditionnel.
+ \end{tip}
+ \item \texttt{useindent}
+ \begin{itemize}
+ \item Utilisez l'indentation des paragraphes au lieu de l'espacement entre les paragraphes.
+ \end{itemize}
+ \item \texttt{runin}
+ \begin{itemize}
+ \item Utilisez le style « runin » pour \lstinline|\subsubsection|
+ \end{itemize}
+ \item \texttt{puretext} ou \texttt{nothms}
+ \begin{itemize}
+ \item Mode texte pur. Ne pas définir les environnements de type théorème.
+ \end{itemize}
+ \item \texttt{nothmnum}
+ \begin{itemize}
+ \item Ne pas numéroter les environnements de type théorème.
+ \end{itemize}
+\end{itemize}
+\bigskip
+De plus, les options \texttt{oneside} et \texttt{twoside} couramment utilisées lors de la composition de livres sont également disponibles. La disposition recto-verso est utilisée par défaut.
+
+\LevelOneTitle{Instructions par sujet}
+
+\LevelTwoTitle{Configurer la langue}
+
+\simplivre{} prend en charge plusieurs langues, notamment le chinois (simplifié et traditionnel), l'anglais, le français, l'allemand, l'italien, le japonais, le portugais (européen et brésilien), le russe et l'espagnol. La langue peut être sélectionnée par les macros suivantes :
+
+\begin{itemize}
+ \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}| est utilisé pour spécifier la langue. Le réglage correspondant de la langue sera appliqué après celui-ci. Il peut être utilisé soit dans le préambule ou dans le texte. Lorsqu'aucune langue n'est spécifiée, « English » est sélectionné par défaut.
+ \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|, qui utilise les paramètres de langue spécifiés pour composer \meta{content}. Par rapport à \lstinline|\UseLanguage|, il ne modifiera pas l'interligne, donc l'interligne restera stable lorsque le texte CJK et occidental sont mélangés.
+\end{itemize}
+
+\meta{language name} peut être (il n'est pas sensible à la casse, par exemple, \texttt{French} et \texttt{french} ont le même effet) :
+\begin{itemize}
+ \item chinois simplifié : \texttt{CN}, \texttt{Chinese}, \texttt{SChinese} ou \texttt{SimplifiedChinese}
+ \item chinois traditionnel : \texttt{TC}, \texttt{TChinese} ou \texttt{TraditionalChinese}
+ \item anglais : \texttt{EN} ou \texttt{English}
+ \item français : \texttt{FR} ou \texttt{French}
+ \item allemand : \texttt{DE}, \texttt{German} ou \texttt{ngerman}
+ \item italien : \texttt{IT} ou \texttt{Italian}
+ \item portugais : \texttt{PT} ou \texttt{Portuguese}
+ \item portugais (brésilien) : \texttt{BR} ou \texttt{Brazilian}
+ \item espagnol : \texttt{ES} ou \texttt{Spanish}
+ \item japonais : \texttt{JP} ou \texttt{Japanese}
+ \item russe : \texttt{RU} ou \texttt{Russian}
+\end{itemize}
+
+\medskip
+De plus, vous pouvez également ajouter de nouveaux paramètres à la langue sélectionnée :
+\begin{itemize}
+ \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item Ajoutez \meta{settings} à toutes les langues prises en charge.
+ \end{itemize}
+ \item \lstinline|\AddLanguageSetting(|\meta{language name}\lstinline|){|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item Ajoutez \meta{settings} à la langue \meta{language name} sélectionnée.
+ \end{itemize}
+\end{itemize}
+Par exemple, \lstinline|\AddLanguageSetting(German){\color{orange}}| peut rendre tout le texte allemand affiché en orange (bien sûr, il faut alors ajouter \lstinline|\AddLanguageSetting{\color{black}}| afin de corriger la couleur du texte dans d'autres langues).
+
+\LevelTwoTitle{Théorèmes et comment les référencer}
+
+Des environnements tels que \texttt{definition} et \texttt{theorem} ont été prédéfinis et peuvent être utilisés directement.
+
+Plus précisement, les environnements prédéfinis incluent : \texttt{assumption}, \texttt{axiom}, \texttt{conjecture}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{definition-proposition}, \texttt{definition-theorem}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{notation}, \texttt{observation}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{remark}, \texttt{theorem}, et la version non numérotée correspondante avec un astérisque \lstinline|*| dans le nom. Les titres changeront avec la langue actuelle. Par exemple, \texttt{theorem} sera affiché comme « Theorem » en mode anglais et « Théorème » en mode français.
+
+Lors du référencement d'un environnement de type théorème, il est recommandé d'utiliser \lstinline|\cref{|\meta{label}\texttt{\}}. De cette façon, il n'est pas nécessaire d'écrire explicitement le nom de l'environnement correspondant à chaque fois.
+
+\begin{tip}[Exemple]
+\begin{code}
+ \begin{definition}[Des choses étranges] \label{def: strange} ...
+\end{code}
+
+will produce
+\begin{definition}[Des choses étranges]\label{def: strange}
+ C'est la définition de certains objets étranges. Il y a approximativement un espace d'une ligne avant et après l'environnement de type théorème, et il y aura un symbole pour marquer la fin de l'environnement.
+\end{definition}
+
+\lstinline|\cref{def: strange}| s'affichera sous la forme : \cref{def: strange}.
+
+Après avoir utilisé \lstinline|\UseLanguage{French}|, un théorème s'affichera sous la forme :
+
+\UseLanguage{English}
+\begin{theorem}[Useless]\label{thm}
+ A theorem in English.
+\end{theorem}
+
+Par défaut, lorsqu'il est référencé, le nom de l'environnement de type théorème correspond toujours à la langue du contexte dans lequel se trouve l'environnement. Par exemple, la définition ci-dessus est toujours affichée en français dans le mode anglais courant : \cref{def: strange} et \cref{thm}. Si vous voulez que le nom du théorème corresponde au contexte actuel lors du référencement, vous pouvez ajouter \texttt{regionalref} aux options globales.
+\end{tip}
+
+\UseLanguage{French}
+
+\LevelTwoTitle{Définir un nouvel environnement de type théorème}
+
+Si vous avez besoin de définir un nouvel environnement de type théorème, vous devez d'abord définir le nom de l'environnement dans le langage à utiliser :
+\begin{itemize}
+ \item \lstinline|\NameTheorem[|\meta{language name}\lstinline|]{|\meta{name of environment}\lstinline|}{|\meta{name string}\lstinline|}|
+\end{itemize}
+Pour \meta{language name}, veuillez vous référer à la section sur la configuration de la langue. Lorsqu'il n'est pas spécifié, le nom sera défini pour toutes les langues prises en charge. De plus, les environnements avec ou sans astérisque partagent le même nom, donc \lstinline|\NameTheorem{envname*}{...}| a le même effet que \lstinline|\NameTheorem{envname}{...}| .
+
+\medskip
+Ensuite, créez cet environnement de l'une des cinq manières suivantes :
+\begin{itemize}
+ \item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item Définir un environnement non numéroté \meta{name of environment}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item Définir un environnement numéroté \meta{name of environment}, numéroté dans l'ordre 1, 2, 3, \dots
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}[|\meta{numbered like}\lstinline|]|
+ \begin{itemize}
+ \item Définir un environnement numéroté \meta{name of environment}, qui partage le compteur \meta{numbered like}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
+ \begin{itemize}
+ \item Définir un environnement numéroté \meta{name of environment}, numéroté dans le compteur \meta{numbered within}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
+ \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
+ \begin{itemize}
+ \item Identifiez \meta{name of environment} avec \meta{existed environment} ou \meta{existed environment}\lstinline|*|.
+ \item Cette méthode est généralement utile dans les deux situations suivantes :
+ \begin{enumerate}
+ \item Pour utiliser un nom plus concis. Par exemple, avec \lstinline|\CreateTheorem{thm}(theorem)|, on peut alors utiliser le nom \texttt{thm} pour écrire le théorème.
+ \item Pour supprimer la numérotation de certains environnements. Par exemple, on peut supprimer la numérotation de l'environnement \texttt{remark} avec \lstinline|\CreateTheorem{remark}(remark*)|.
+ \end{enumerate}
+ \end{itemize}
+\end{itemize}
+
+\begin{tip}
+ Cette macro utilise la fonctionnalité de \textsf{amsthm} en interne, donc le traditionnel \texttt{theoremstyle} lui est également applicable. Il suffit de déclarer le style avant les définitions pertinentes.
+\end{tip}
+
+\NameTheorem[FR]{proofidea}{Idée}
+\CreateTheorem*{proofidea*}
+\CreateTheorem{proofidea}<section>
+
+\bigskip
+Voici un exemple. Le code suivant :
+
+\begin{code}
+ \NameTheorem[FR]{proofidea}{Idée}
+ \CreateTheorem*{proofidea*}
+ \CreateTheorem{proofidea}<section>
+\end{code}
+
+définit un environnement non numéroté \lstinline|proofidea*| et un environnement numéroté \lstinline|proofidea| (numérotés dans la section) respectivement. Ils peuvent être utilisés dans le contexte français. L'effet est le suivant :
+
+\vspace{-0.3\baselineskip}
+\begin{proofidea*}
+ La environnement \lstinline|proofidea*| .
+\end{proofidea*}
+
+\vspace{-\baselineskip}
+\begin{proofidea}
+ La environnement \lstinline|proofidea| .
+\end{proofidea}
+
+\LevelTwoTitle{Draft mark}
+
+Vous pouvez utiliser \lstinline|\dnf| pour marquer la partie inachevée. Par example :
+\begin{itemize}
+ \item \lstinline|\dnf| ou \lstinline|\dnf<...>|. L'effet est : \dnf~ ou \dnf<...>. \\Le texte à l'intérieur changera en fonction de la langue actuelle. Par exemple, il sera affiché sous la forme \UseOtherLanguage{English}{\dnf} en mode anglais.
+\end{itemize}
+
+De même, il y a aussi \lstinline|\needgraph| :
+\begin{itemize}
+ \item \lstinline|\needgraph| ou \lstinline|\needgraph<...>|. L'effet est : \needgraph ou \needgraph<...>Le texte de l'invite change en fonction de la langue actuelle. Par exemple, en mode anglais, il sera affiché sous la forme \UseOtherLanguage{English}{\needgraph}
+\end{itemize}
+
+
+\LevelTwoTitle{Divers}
+
+\LevelThreeTitle{Les numéros de ligne}
+Les numéros de ligne peuvent être activés et désactivés n'importe où dans votre texte. \lstinline|\linenumbers| est pour activer les numéros de ligne, et \lstinline|\nolinenumbers| est pour les désactiver. Par souci de beauté, le titre, la table des matières, l'index et certains autres éléments ne sont pas numérotés.
+
+\LevelThreeTitle{Les notes de bas de page dans le titre}
+Dans \lstinline|\section| ou \lstinline|\subsection| , si vous souhaitez ajouter des notes de bas de page, vous n'avez d'autre choix que :
+\begin{itemize}
+ \item écrivez d'abord \lstinline|\mbox{\protect\footnotemark}|,
+ \item puis ajoutez \lstinline|\footnotetext{...}| après le titre.
+\end{itemize}
+C'est un inconvénient provoqué par la décoration de soulignement du titre.
+
+\LevelThreeTitle{Les symboles QED}
+Puisque la police dans les environnements de type théorème est la même que celle du texte principal, afin d'indiquer où se terminent les environnements, un symbole QED creux \simpleqedsymbol{} est placé à la fin des environnements de type théorème. Cependant, si votre théorème se termine par une équation ou une liste (itemize, énumérer, description, etc.), ce symbole ne peut pas être automatiquement placé à la bonne position. Dans ce cas, vous devez ajouter manuellement un \lstinline|\qedhere| à la fin de votre équation ou la dernière entrée de votre liste pour faire apparaître le symbole QED en fin de ligne.
+
+\LevelOneTitle{Problèmes connus}
+
+\begin{itemize}[itemsep=.6em]
+ \item Les paramètres de police ne sont pas encore parfaits.
+ \item Comme de nombreuses fonctionnalités sont basées sur la boîte à outils \ProjLib{}, \minimalist{} (et donc \minimart{}, \einfart{} et \minimbook{}, \simplivre{}) hérite de tous ses problèmes. Pour plus de détails, veuillez vous référer à la section « Problèmes connus » de la documentation de \ProjLib{}.
+ \item Le mécanisme de gestion des erreurs est incomplet : pas de messages correspondants lorsque certains problèmes surviennent.
+ \item Il y a encore beaucoup de choses qui peuvent être optimisées dans le code.
+\end{itemize}
+
+\part{Démonstration}
+\blinddocument
+
+\end{document}
+\endinput
+%%
+%% End of file `simplivre/simplivre-doc-fr.tex'.
diff --git a/macros/unicodetex/latex/simplivre/simplivre.cls b/macros/unicodetex/latex/simplivre/simplivre.cls
index 28b2e7d16c..b234e411a5 100644
--- a/macros/unicodetex/latex/simplivre/simplivre.cls
+++ b/macros/unicodetex/latex/simplivre/simplivre.cls
@@ -17,7 +17,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesClass{simplivre}
- [2021/07/05 A simple and clear book style]
+ [2021/07/13 A simple and clear book style]
\def\minimclass@baseclass{book}
\RequirePackage{kvoptions}
\RequirePackage{etoolbox}
@@ -240,6 +240,7 @@
\renewcommand{\nmid}{\hspace{-.2em}\nmid@original\hspace{-.2em}}
}
+\RequirePackage{tikz-cd}
\newbox\xratbelow
\newbox\xratabove
\renewcommand{\xrightarrow}[2][]{%
diff --git a/macros/xetex/generic/xetexko/ChangeLog b/macros/xetex/generic/xetexko/ChangeLog
index f1b41e9cef..a5d5b28d03 100644
--- a/macros/xetex/generic/xetexko/ChangeLog
+++ b/macros/xetex/generic/xetexko/ChangeLog
@@ -1,3 +1,9 @@
+2021-07-13 Dohyun Kim <nomos at ktug org>
+
+ Version 3.8
+
+ * assign 0xAE and 0xB0 to XeTeXcharclassAA
+
2021-06-18 Dohyun Kim <nomos at ktug org>
Version 3.7
diff --git a/macros/xetex/generic/xetexko/README b/macros/xetex/generic/xetexko/README
index fcec961996..49586a7504 100644
--- a/macros/xetex/generic/xetexko/README
+++ b/macros/xetex/generic/xetexko/README
@@ -1,4 +1,4 @@
-XeTeX-ko Package version 3.7 (2021/06/18)
+XeTeX-ko Package version 3.8 (2021/07/13)
=========================================
XeTeX-ko is a macro package for Xe(La)TeX which supports typesetting
diff --git a/macros/xetex/generic/xetexko/xetexko-doc.pdf b/macros/xetex/generic/xetexko/xetexko-doc.pdf
index e8c210813e..0fe8a65b1f 100644
--- a/macros/xetex/generic/xetexko/xetexko-doc.pdf
+++ b/macros/xetex/generic/xetexko/xetexko-doc.pdf
Binary files differ
diff --git a/macros/xetex/generic/xetexko/xetexko-doc.tex b/macros/xetex/generic/xetexko/xetexko-doc.tex
index 226dc96105..92ff99343f 100644
--- a/macros/xetex/generic/xetexko/xetexko-doc.tex
+++ b/macros/xetex/generic/xetexko/xetexko-doc.tex
@@ -74,7 +74,7 @@
\title{\xetexko\ 간단 매뉴얼}
\author{Dohyun Kim \normalsize <\texttt{nomos at ktug org}> \and
\normalsize <\url{http://github.com/dohyunkim/xetexko}>}
-\date{Version 3.7\quad 2021/06/18}
+\date{Version 3.8\quad 2021/07/13}
\maketitle
\begin{quote}\small
diff --git a/macros/xetex/generic/xetexko/xetexko.sty b/macros/xetex/generic/xetexko/xetexko.sty
index edd8221c8c..d2410a29f0 100644
--- a/macros/xetex/generic/xetexko/xetexko.sty
+++ b/macros/xetex/generic/xetexko/xetexko.sty
@@ -16,7 +16,7 @@
\ifdefined\ProvidesPackage
\NeedsTeXFormat{LaTeX2e}[2021/06/01]
- \ProvidesPackage{xetexko}[2021/06/18 v3.7 typesetting Korean with XeTeX]
+ \ProvidesPackage{xetexko}[2021/07/13 v3.8 typesetting Korean with XeTeX]
\else
\ifdefined\@tempcnta\else \newcount\@tempcnta \fi
\ifdefined\@sptoken \else
@@ -142,8 +142,6 @@
% 결락기호
\XeTeXcharclass "25A1=\XeTeXcharclassID % □
% some KS symbols
-\XeTeXcharclass "00AE=\XeTeXcharclassSY % ®
-\XeTeXcharclass "00B0=\XeTeXcharclassSY % °
\XeTeXcharclass "2030=\XeTeXcharclassSY % ‰
\XeTeXcharclass "2032=\XeTeXcharclassSY % ′
\XeTeXcharclass "2033=\XeTeXcharclassSY % ″
@@ -401,6 +399,7 @@
\typesetvertical
}
\protected\def\endvertical{%
+ \ifinner\else \par\fi
\egroup
\XeKo@rotatebox\z@
\box\z@
@@ -415,6 +414,7 @@
\typesethorizontal
}
\protected\def\endhorizontal{%
+ \ifinner\else \par\fi
\egroup
\XeKo@unrotatebox\z@
\ifdefined\xetexkocharraise \raise\xetexkocharraise \fi