summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-02-25 03:01:07 +0000
committerNorbert Preining <norbert@preining.info>2020-02-25 03:01:07 +0000
commite55e56ce482cc9d01a0b83f22dac4851eb4c0357 (patch)
tree70f092a544725d3d02ae011e0bbf877785658465 /macros
parent33f4ae660b866731387e4c21e528aaa283009d6c (diff)
CTAN sync 202002250301
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/base/README.md2
-rw-r--r--macros/latex/base/alltt.pdfbin178219 -> 173077 bytes
-rw-r--r--macros/latex/base/cfgguide.pdfbin226636 -> 220211 bytes
-rw-r--r--macros/latex/base/changes.txt21
-rw-r--r--macros/latex/base/classes.pdfbin526206 -> 521080 bytes
-rw-r--r--macros/latex/base/clsguide.pdfbin378926 -> 372505 bytes
-rw-r--r--macros/latex/base/cmfonts.pdfbin273304 -> 264453 bytes
-rw-r--r--macros/latex/base/cyrguide.pdfbin223564 -> 216976 bytes
-rw-r--r--macros/latex/base/doc.pdfbin645809 -> 629695 bytes
-rw-r--r--macros/latex/base/docstrip.pdfbin469280 -> 469433 bytes
-rw-r--r--macros/latex/base/encguide.pdfbin1267972 -> 1532114 bytes
-rw-r--r--macros/latex/base/exscale.pdfbin195881 -> 195880 bytes
-rw-r--r--macros/latex/base/fix-cm.pdfbin267213 -> 262051 bytes
-rw-r--r--macros/latex/base/fntguide.pdfbin367426 -> 360915 bytes
-rw-r--r--macros/latex/base/graphpap.pdfbin156288 -> 156280 bytes
-rw-r--r--macros/latex/base/ifthen.pdfbin205211 -> 205205 bytes
-rw-r--r--macros/latex/base/inputenc.pdfbin299980 -> 294824 bytes
-rw-r--r--macros/latex/base/latexchanges.pdfbin396400 -> 231199 bytes
-rw-r--r--macros/latex/base/latexchanges.tex11
-rw-r--r--macros/latex/base/latexrelease.pdfbin251282 -> 246174 bytes
-rw-r--r--macros/latex/base/latexsym.pdfbin192305 -> 192289 bytes
-rw-r--r--macros/latex/base/lb2.pdfbin238183 -> 138223 bytes
-rw-r--r--macros/latex/base/letter.pdfbin310116 -> 305150 bytes
-rw-r--r--macros/latex/base/lgc2.pdfbin202897 -> 101344 bytes
-rw-r--r--macros/latex/base/ltclass.dtx5
-rw-r--r--macros/latex/base/ltfssbas.dtx52
-rw-r--r--macros/latex/base/ltluatex.pdfbin304111 -> 304104 bytes
-rw-r--r--macros/latex/base/ltnews.pdfbin950047 -> 950041 bytes
-rw-r--r--macros/latex/base/ltnews01.pdfbin150027 -> 150020 bytes
-rw-r--r--macros/latex/base/ltnews02.pdfbin139901 -> 134750 bytes
-rw-r--r--macros/latex/base/ltnews03.pdfbin139882 -> 134730 bytes
-rw-r--r--macros/latex/base/ltnews04.pdfbin133913 -> 128768 bytes
-rw-r--r--macros/latex/base/ltnews05.pdfbin162314 -> 157174 bytes
-rw-r--r--macros/latex/base/ltnews06.pdfbin133140 -> 133132 bytes
-rw-r--r--macros/latex/base/ltnews07.pdfbin129172 -> 124028 bytes
-rw-r--r--macros/latex/base/ltnews08.pdfbin144478 -> 144471 bytes
-rw-r--r--macros/latex/base/ltnews09.pdfbin120216 -> 120208 bytes
-rw-r--r--macros/latex/base/ltnews10.pdfbin147946 -> 147941 bytes
-rw-r--r--macros/latex/base/ltnews11.pdfbin104948 -> 104942 bytes
-rw-r--r--macros/latex/base/ltnews12.pdfbin137925 -> 137918 bytes
-rw-r--r--macros/latex/base/ltnews13.pdfbin161072 -> 161066 bytes
-rw-r--r--macros/latex/base/ltnews14.pdfbin150928 -> 150920 bytes
-rw-r--r--macros/latex/base/ltnews15.pdfbin122094 -> 122088 bytes
-rw-r--r--macros/latex/base/ltnews16.pdfbin135839 -> 130688 bytes
-rw-r--r--macros/latex/base/ltnews17.pdfbin154995 -> 149835 bytes
-rw-r--r--macros/latex/base/ltnews18.pdfbin36010 -> 36003 bytes
-rw-r--r--macros/latex/base/ltnews19.pdfbin235074 -> 235068 bytes
-rw-r--r--macros/latex/base/ltnews20.pdfbin283330 -> 283323 bytes
-rw-r--r--macros/latex/base/ltnews21.pdfbin233496 -> 233491 bytes
-rw-r--r--macros/latex/base/ltnews22.pdfbin302843 -> 302835 bytes
-rw-r--r--macros/latex/base/ltnews23.pdfbin274461 -> 274453 bytes
-rw-r--r--macros/latex/base/ltnews24.pdfbin252646 -> 252641 bytes
-rw-r--r--macros/latex/base/ltnews25.pdfbin196332 -> 196325 bytes
-rw-r--r--macros/latex/base/ltnews26.pdfbin362843 -> 362836 bytes
-rw-r--r--macros/latex/base/ltnews27.pdfbin239763 -> 239755 bytes
-rw-r--r--macros/latex/base/ltnews28.pdfbin368236 -> 368228 bytes
-rw-r--r--macros/latex/base/ltnews29.pdfbin433013 -> 433006 bytes
-rw-r--r--macros/latex/base/ltnews30.pdfbin491252 -> 491245 bytes
-rw-r--r--macros/latex/base/ltnews31.pdfbin500193 -> 500186 bytes
-rw-r--r--macros/latex/base/ltvers.dtx2
-rw-r--r--macros/latex/base/ltx3info.pdfbin204547 -> 191528 bytes
-rw-r--r--macros/latex/base/ltxdoc.pdfbin220731 -> 215600 bytes
-rw-r--r--macros/latex/base/makeindx.pdfbin160679 -> 160673 bytes
-rw-r--r--macros/latex/base/manual.pdfbin151360 -> 151354 bytes
-rw-r--r--macros/latex/base/modguide.pdfbin226894 -> 220384 bytes
-rw-r--r--macros/latex/base/nfssfont.pdfbin202434 -> 202429 bytes
-rw-r--r--macros/latex/base/proc.pdfbin216907 -> 216899 bytes
-rw-r--r--macros/latex/base/slides.pdfbin352157 -> 352152 bytes
-rw-r--r--macros/latex/base/slifonts.pdfbin215964 -> 214708 bytes
-rw-r--r--macros/latex/base/source2e.pdfbin3116973 -> 3108642 bytes
-rw-r--r--macros/latex/base/syntonly.pdfbin181390 -> 181539 bytes
-rw-r--r--macros/latex/base/tlc2.pdfbin273653 -> 164949 bytes
-rw-r--r--macros/latex/base/tulm.pdfbin156541 -> 156534 bytes
-rw-r--r--macros/latex/base/usrguide.pdfbin404292 -> 398281 bytes
-rw-r--r--macros/latex/base/utf8ienc.pdfbin339527 -> 330720 bytes
-rw-r--r--macros/latex/base/webcomp.pdfbin136159 -> 136153 bytes
-rw-r--r--macros/latex/contrib/curve2e/README.txt13
-rw-r--r--macros/latex/contrib/curve2e/curve2e-manual.pdfbin566234 -> 566328 bytes
-rw-r--r--macros/latex/contrib/curve2e/curve2e-manual.tex29
-rw-r--r--macros/latex/contrib/curve2e/curve2e.dtx102
-rw-r--r--macros/latex/contrib/curve2e/curve2e.pdfbin607171 -> 614651 bytes
-rw-r--r--macros/latex/contrib/exframe/README.txt2
-rw-r--r--macros/latex/contrib/exframe/exframe.dtx978
-rw-r--r--macros/latex/contrib/exframe/exframe.pdfbin390818 -> 409753 bytes
-rw-r--r--macros/latex/contrib/fmtcount/CHANGES5
-rw-r--r--macros/latex/contrib/fmtcount/README14
-rw-r--r--macros/latex/contrib/fmtcount/fmtcount.dtx22
-rw-r--r--macros/latex/contrib/fmtcount/fmtcount.ins2
-rw-r--r--macros/latex/contrib/fmtcount/fmtcount.pdfbin562977 -> 563008 bytes
-rw-r--r--macros/latex/contrib/pdfpc/README.md35
-rw-r--r--macros/latex/contrib/pdfpc/pdfpc.dtx179
-rw-r--r--macros/latex/contrib/pdfpc/pdfpc.ins38
-rw-r--r--macros/latex/contrib/stage/Makefile5
-rw-r--r--macros/latex/contrib/stage/stage-documentation.pdfbin149275 -> 149248 bytes
-rw-r--r--macros/latex/contrib/stage/stage-documentation.tex2
-rw-r--r--macros/latex/contrib/stage/stage.cls83
-rw-r--r--macros/latex/contrib/suftesi/suftesi.dtx751
-rw-r--r--macros/latex/contrib/suftesi/suftesi.pdfbin761080 -> 758153 bytes
-rw-r--r--macros/luatex/generic/luamplib/NEWS6
-rw-r--r--macros/luatex/generic/luamplib/luamplib.dtx36
-rw-r--r--macros/luatex/generic/luamplib/luamplib.pdfbin148905 -> 149263 bytes
101 files changed, 1646 insertions, 749 deletions
diff --git a/macros/latex/base/README.md b/macros/latex/base/README.md
index 1418aabdd2..c5ac515311 100644
--- a/macros/latex/base/README.md
+++ b/macros/latex/base/README.md
@@ -1,7 +1,7 @@
The LaTeX kernel
================
-Release 2020-02-02 patch level 3
+Release 2020-02-02 patch level 4
Overview
--------
diff --git a/macros/latex/base/alltt.pdf b/macros/latex/base/alltt.pdf
index 7213afaaa3..a5e5e91ef4 100644
--- a/macros/latex/base/alltt.pdf
+++ b/macros/latex/base/alltt.pdf
Binary files differ
diff --git a/macros/latex/base/cfgguide.pdf b/macros/latex/base/cfgguide.pdf
index b7e4649baa..450972786d 100644
--- a/macros/latex/base/cfgguide.pdf
+++ b/macros/latex/base/cfgguide.pdf
Binary files differ
diff --git a/macros/latex/base/changes.txt b/macros/latex/base/changes.txt
index 987702b349..002ffef172 100644
--- a/macros/latex/base/changes.txt
+++ b/macros/latex/base/changes.txt
@@ -1,8 +1,25 @@
-This file lists changes to the LaTeX2e files in reverse chronological order.
+================================================================================
+This file lists changes to the LaTeX2e files in reverse chronological order of
+publication (therefore the dates might be out of sequence if there are hotfixes).
It is provided for convenience only. It therefore makes no claims to
completeness or accuracy and it contains some references to files that
are not part of the distribution.
-=======================================================================
+================================================================================
+
+
+#########################
+# 2020-02-02 PL 4 Release
+#########################
+
+2020-02-24 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltfssbas.dtx (section{Macros for setting up the tables}):
+ Drop surplus ``m'' in series when defining fontshape (gh/289)
+
+2020-02-21 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltclass.dtx (subsection{Providing shipment}):
+ Fix missing quotes around file name when opening for output (gh/284)
#########################
# 2020-02-02 PL 3 Release
diff --git a/macros/latex/base/classes.pdf b/macros/latex/base/classes.pdf
index 104c48332f..5fe2ec614c 100644
--- a/macros/latex/base/classes.pdf
+++ b/macros/latex/base/classes.pdf
Binary files differ
diff --git a/macros/latex/base/clsguide.pdf b/macros/latex/base/clsguide.pdf
index ede1753de7..ff54e4b955 100644
--- a/macros/latex/base/clsguide.pdf
+++ b/macros/latex/base/clsguide.pdf
Binary files differ
diff --git a/macros/latex/base/cmfonts.pdf b/macros/latex/base/cmfonts.pdf
index 3a30e064c0..a6ff9e00bd 100644
--- a/macros/latex/base/cmfonts.pdf
+++ b/macros/latex/base/cmfonts.pdf
Binary files differ
diff --git a/macros/latex/base/cyrguide.pdf b/macros/latex/base/cyrguide.pdf
index 5d8a6dad3e..e88e70e939 100644
--- a/macros/latex/base/cyrguide.pdf
+++ b/macros/latex/base/cyrguide.pdf
Binary files differ
diff --git a/macros/latex/base/doc.pdf b/macros/latex/base/doc.pdf
index 1e7bdda0df..77b1452c8a 100644
--- a/macros/latex/base/doc.pdf
+++ b/macros/latex/base/doc.pdf
Binary files differ
diff --git a/macros/latex/base/docstrip.pdf b/macros/latex/base/docstrip.pdf
index a2c7bf521e..6b1544b05e 100644
--- a/macros/latex/base/docstrip.pdf
+++ b/macros/latex/base/docstrip.pdf
Binary files differ
diff --git a/macros/latex/base/encguide.pdf b/macros/latex/base/encguide.pdf
index 0c4d2ecfc3..e680378ccf 100644
--- a/macros/latex/base/encguide.pdf
+++ b/macros/latex/base/encguide.pdf
Binary files differ
diff --git a/macros/latex/base/exscale.pdf b/macros/latex/base/exscale.pdf
index c2a0157a26..c338d1092e 100644
--- a/macros/latex/base/exscale.pdf
+++ b/macros/latex/base/exscale.pdf
Binary files differ
diff --git a/macros/latex/base/fix-cm.pdf b/macros/latex/base/fix-cm.pdf
index a3ce9a50bc..54b085f848 100644
--- a/macros/latex/base/fix-cm.pdf
+++ b/macros/latex/base/fix-cm.pdf
Binary files differ
diff --git a/macros/latex/base/fntguide.pdf b/macros/latex/base/fntguide.pdf
index d356d1f744..edc6305f75 100644
--- a/macros/latex/base/fntguide.pdf
+++ b/macros/latex/base/fntguide.pdf
Binary files differ
diff --git a/macros/latex/base/graphpap.pdf b/macros/latex/base/graphpap.pdf
index 2f2ceb5cab..b4b010ee2c 100644
--- a/macros/latex/base/graphpap.pdf
+++ b/macros/latex/base/graphpap.pdf
Binary files differ
diff --git a/macros/latex/base/ifthen.pdf b/macros/latex/base/ifthen.pdf
index 84895896fa..c218d73665 100644
--- a/macros/latex/base/ifthen.pdf
+++ b/macros/latex/base/ifthen.pdf
Binary files differ
diff --git a/macros/latex/base/inputenc.pdf b/macros/latex/base/inputenc.pdf
index 91cb4fd2ff..e8cd824130 100644
--- a/macros/latex/base/inputenc.pdf
+++ b/macros/latex/base/inputenc.pdf
Binary files differ
diff --git a/macros/latex/base/latexchanges.pdf b/macros/latex/base/latexchanges.pdf
index b3efb13591..61b12ab20c 100644
--- a/macros/latex/base/latexchanges.pdf
+++ b/macros/latex/base/latexchanges.pdf
Binary files differ
diff --git a/macros/latex/base/latexchanges.tex b/macros/latex/base/latexchanges.tex
index 22f162d790..1442ca229c 100644
--- a/macros/latex/base/latexchanges.tex
+++ b/macros/latex/base/latexchanges.tex
@@ -106,6 +106,17 @@ see for example
\url{https://github.com/latex3/latex2e/commits/master}.
+
+\section{Changes introduced in 2020-02-02 patch~4}
+
+In some cases the \texttt{filecontents} environment was opening the
+file for writing without quoting it, so that files with spaces failed
+(\ghissue{284}).
+
+Ensure that \verb=\DeclareFontShape= drops surplus ``m'' in situations
+where an \texttt{.fd} incorrectly specifies \texttt{mc} instead of
+\texttt{c}, etc.\ (\ghissue{289}).
+
\section{Changes introduced in 2020-02-02 patch~3}
Support the following scenario:
diff --git a/macros/latex/base/latexrelease.pdf b/macros/latex/base/latexrelease.pdf
index aed540afe2..6f83afba79 100644
--- a/macros/latex/base/latexrelease.pdf
+++ b/macros/latex/base/latexrelease.pdf
Binary files differ
diff --git a/macros/latex/base/latexsym.pdf b/macros/latex/base/latexsym.pdf
index 0d007da1a8..c5301dadf7 100644
--- a/macros/latex/base/latexsym.pdf
+++ b/macros/latex/base/latexsym.pdf
Binary files differ
diff --git a/macros/latex/base/lb2.pdf b/macros/latex/base/lb2.pdf
index 4814719f4f..214a5b5a2e 100644
--- a/macros/latex/base/lb2.pdf
+++ b/macros/latex/base/lb2.pdf
Binary files differ
diff --git a/macros/latex/base/letter.pdf b/macros/latex/base/letter.pdf
index 537654eea0..1f7dd2a0ae 100644
--- a/macros/latex/base/letter.pdf
+++ b/macros/latex/base/letter.pdf
Binary files differ
diff --git a/macros/latex/base/lgc2.pdf b/macros/latex/base/lgc2.pdf
index aa8c51ad62..378045ff88 100644
--- a/macros/latex/base/lgc2.pdf
+++ b/macros/latex/base/lgc2.pdf
Binary files differ
diff --git a/macros/latex/base/ltclass.dtx b/macros/latex/base/ltclass.dtx
index 96daa3aa30..578443921b 100644
--- a/macros/latex/base/ltclass.dtx
+++ b/macros/latex/base/ltclass.dtx
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltclass.dtx}
- [2020/02/05 v1.3i LaTeX Kernel (Class & Package Interface)]
+ [2020/02/20 v1.3j LaTeX Kernel (Class & Package Interface)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltclass.dtx}
@@ -1911,6 +1911,7 @@
% (hopefully) safe. If not opened that means we are going to write
% on the terminal.
% \changes{v1.3g}{2020/01/27}{Fix typo in error message}
+% \changes{v1.3j}{2020/02/20}{Fix missing quotes around file name (gh/284)}
% \begin{macrocode}
\ch@ck7\reserved@c\write\relax%
\if@filesw% % Foul ... trying to overwrite \jobname!
@@ -1920,7 +1921,7 @@
\else%
\@latex@warning@no@line%
{Writing or overwriting file `\@currdir\@curr@file'}%
- \immediate\openout\reserved@c#1\relax%
+ \immediate\openout\reserved@c\q@curr@file\relax%
\fi%
\fi%
\fi%
diff --git a/macros/latex/base/ltfssbas.dtx b/macros/latex/base/ltfssbas.dtx
index b59b0fafdd..fedfcb68ec 100644
--- a/macros/latex/base/ltfssbas.dtx
+++ b/macros/latex/base/ltfssbas.dtx
@@ -35,7 +35,7 @@
%
%
\ProvidesFile{ltfssbas.dtx}
- [2019/12/17 v3.2e LaTeX Kernel (NFSS Basic Macros)]
+ [2020/02/24 v3.2f LaTeX Kernel (NFSS Basic Macros)]
% \iffalse
\documentclass{ltxdoc}
\begin{document}
@@ -245,23 +245,38 @@
% We use |\expandafter| |\endgroup| to restore catcode in case
% something goes wrong with the argument parsing (suggested by Tim
% Van Zandt)
+% \begin{macrocode}
+ \expandafter\endgroup
+ \DeclareFontShape@}
+% \end{macrocode}
% \end{macro}
%
%
%
-% \begin{macro}{\DeclareFontShape}
+% \begin{macro}{\DeclareFontShape@}
% \changes{v2.1c}{1994/02/07}{revert catcode settings earlier}
% \changes{v3.0m}{1995/11/01}
% {(DPC) Test for \cs{relax} not \cs{undefined}, internal/1933}
% \begin{macrocode}
- \expandafter\endgroup
- \DeclareFontShape@}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\DeclareFontShape@}{Maybe drop one m}%
\def\DeclareFontShape@#1#2#3#4#5#6{%
\expandafter\ifx\csname #1+#2\endcsname\relax
\@latex@error{Font family `#1+#2' unknown}\@eha
\else
\expandafter
- \xdef\csname#1/#2/#3/#4\endcsname{\expandafter\noexpand
+ \xdef\csname#1/#2/%
+% \end{macrocode}
+% If the series value is incorrectly specified with an extra ``m'',
+% e.g., ``mc'' instead of just ``c'', drop the surplus ``m'' but
+% keep the ``m'' if it is by its own.
+% \changes{v3.2f}{2020/12/24}{Drop surplus ``m'' in series when
+% defining fontshape (gh/289)}
+% \begin{macrocode}
+ \expandafter\series@drop@one@m #3mm\series@drop@one@m/%
+ #4\endcsname{\expandafter\noexpand
\csname #5\endcsname}%
\def\reserved@a{#6}%
\global
@@ -274,6 +289,33 @@
\fi
}
% \end{macrocode}
+%
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\DeclareFontShape@}{Maybe drop one m}%
+%<latexrelease>
+%<latexrelease>\def\DeclareFontShape@#1#2#3#4#5#6{%
+%<latexrelease> \expandafter\ifx\csname #1+#2\endcsname\relax
+%<latexrelease> \@latex@error{Font family `#1+#2' unknown}\@eha
+%<latexrelease> \else
+%<latexrelease> \expandafter
+%<latexrelease> \xdef\csname#1/#2/#3/#4\endcsname{\expandafter\noexpand
+%<latexrelease> \csname #5\endcsname}%
+%<latexrelease> \def\reserved@a{#6}%
+%<latexrelease> \global
+%<latexrelease> \expandafter\let\csname#5\expandafter\endcsname
+%<latexrelease> \ifx\reserved@a\@empty
+%<latexrelease> \@empty
+%<latexrelease> \else
+%<latexrelease> \reserved@a
+%<latexrelease> \fi
+%<latexrelease> \fi
+%<latexrelease> }
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+% \end{macrocode}
% \end{macro}
%
%
diff --git a/macros/latex/base/ltluatex.pdf b/macros/latex/base/ltluatex.pdf
index 4a2e1faff6..9b84365411 100644
--- a/macros/latex/base/ltluatex.pdf
+++ b/macros/latex/base/ltluatex.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews.pdf b/macros/latex/base/ltnews.pdf
index 7318c1aaa8..fdd874ae57 100644
--- a/macros/latex/base/ltnews.pdf
+++ b/macros/latex/base/ltnews.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews01.pdf b/macros/latex/base/ltnews01.pdf
index f95f3717b4..04eaa53a50 100644
--- a/macros/latex/base/ltnews01.pdf
+++ b/macros/latex/base/ltnews01.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews02.pdf b/macros/latex/base/ltnews02.pdf
index c94e1045d6..8b6b7049d8 100644
--- a/macros/latex/base/ltnews02.pdf
+++ b/macros/latex/base/ltnews02.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews03.pdf b/macros/latex/base/ltnews03.pdf
index 6af9fa362c..1c53581470 100644
--- a/macros/latex/base/ltnews03.pdf
+++ b/macros/latex/base/ltnews03.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews04.pdf b/macros/latex/base/ltnews04.pdf
index 85d6d4fa87..ae2f8ffec4 100644
--- a/macros/latex/base/ltnews04.pdf
+++ b/macros/latex/base/ltnews04.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews05.pdf b/macros/latex/base/ltnews05.pdf
index b8994f4eb1..e1e06fdce2 100644
--- a/macros/latex/base/ltnews05.pdf
+++ b/macros/latex/base/ltnews05.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews06.pdf b/macros/latex/base/ltnews06.pdf
index 12f564c84e..72d783c537 100644
--- a/macros/latex/base/ltnews06.pdf
+++ b/macros/latex/base/ltnews06.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews07.pdf b/macros/latex/base/ltnews07.pdf
index 4fb8b04747..670f748ab0 100644
--- a/macros/latex/base/ltnews07.pdf
+++ b/macros/latex/base/ltnews07.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews08.pdf b/macros/latex/base/ltnews08.pdf
index 614ab0281f..f6ca68db8a 100644
--- a/macros/latex/base/ltnews08.pdf
+++ b/macros/latex/base/ltnews08.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews09.pdf b/macros/latex/base/ltnews09.pdf
index 6821952624..8dd75d2a10 100644
--- a/macros/latex/base/ltnews09.pdf
+++ b/macros/latex/base/ltnews09.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews10.pdf b/macros/latex/base/ltnews10.pdf
index a6bee038c5..fe0b41042e 100644
--- a/macros/latex/base/ltnews10.pdf
+++ b/macros/latex/base/ltnews10.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews11.pdf b/macros/latex/base/ltnews11.pdf
index 022f650d12..06199153dd 100644
--- a/macros/latex/base/ltnews11.pdf
+++ b/macros/latex/base/ltnews11.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews12.pdf b/macros/latex/base/ltnews12.pdf
index aa69251597..c7845c9ef8 100644
--- a/macros/latex/base/ltnews12.pdf
+++ b/macros/latex/base/ltnews12.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews13.pdf b/macros/latex/base/ltnews13.pdf
index a3e8f99b75..ec3bb79e40 100644
--- a/macros/latex/base/ltnews13.pdf
+++ b/macros/latex/base/ltnews13.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews14.pdf b/macros/latex/base/ltnews14.pdf
index 1d15742e9a..97572536eb 100644
--- a/macros/latex/base/ltnews14.pdf
+++ b/macros/latex/base/ltnews14.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews15.pdf b/macros/latex/base/ltnews15.pdf
index a67a846fcc..4342f766a9 100644
--- a/macros/latex/base/ltnews15.pdf
+++ b/macros/latex/base/ltnews15.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews16.pdf b/macros/latex/base/ltnews16.pdf
index 479e9f93e3..9596ff2dc4 100644
--- a/macros/latex/base/ltnews16.pdf
+++ b/macros/latex/base/ltnews16.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews17.pdf b/macros/latex/base/ltnews17.pdf
index cf49ce3d39..4d5769dbf8 100644
--- a/macros/latex/base/ltnews17.pdf
+++ b/macros/latex/base/ltnews17.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews18.pdf b/macros/latex/base/ltnews18.pdf
index 78add2d884..1423d09198 100644
--- a/macros/latex/base/ltnews18.pdf
+++ b/macros/latex/base/ltnews18.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews19.pdf b/macros/latex/base/ltnews19.pdf
index 492fab1c48..e3dd768981 100644
--- a/macros/latex/base/ltnews19.pdf
+++ b/macros/latex/base/ltnews19.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews20.pdf b/macros/latex/base/ltnews20.pdf
index 6d11605ae2..a5ca847e31 100644
--- a/macros/latex/base/ltnews20.pdf
+++ b/macros/latex/base/ltnews20.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews21.pdf b/macros/latex/base/ltnews21.pdf
index 4274227488..5810d0bf87 100644
--- a/macros/latex/base/ltnews21.pdf
+++ b/macros/latex/base/ltnews21.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews22.pdf b/macros/latex/base/ltnews22.pdf
index d7160e48c8..68dfa0947c 100644
--- a/macros/latex/base/ltnews22.pdf
+++ b/macros/latex/base/ltnews22.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews23.pdf b/macros/latex/base/ltnews23.pdf
index 28c252dd16..03eb1ac764 100644
--- a/macros/latex/base/ltnews23.pdf
+++ b/macros/latex/base/ltnews23.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews24.pdf b/macros/latex/base/ltnews24.pdf
index 2793520b3d..0f21c981bb 100644
--- a/macros/latex/base/ltnews24.pdf
+++ b/macros/latex/base/ltnews24.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews25.pdf b/macros/latex/base/ltnews25.pdf
index 015ba90157..d766eac5b6 100644
--- a/macros/latex/base/ltnews25.pdf
+++ b/macros/latex/base/ltnews25.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews26.pdf b/macros/latex/base/ltnews26.pdf
index 794b9b23e9..b46844e18d 100644
--- a/macros/latex/base/ltnews26.pdf
+++ b/macros/latex/base/ltnews26.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews27.pdf b/macros/latex/base/ltnews27.pdf
index 65a0421ab0..4c1d47b2df 100644
--- a/macros/latex/base/ltnews27.pdf
+++ b/macros/latex/base/ltnews27.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews28.pdf b/macros/latex/base/ltnews28.pdf
index e5628de156..d125191dae 100644
--- a/macros/latex/base/ltnews28.pdf
+++ b/macros/latex/base/ltnews28.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews29.pdf b/macros/latex/base/ltnews29.pdf
index c3eb998511..8e3d912e8c 100644
--- a/macros/latex/base/ltnews29.pdf
+++ b/macros/latex/base/ltnews29.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews30.pdf b/macros/latex/base/ltnews30.pdf
index a3f5373aae..37d9bf704a 100644
--- a/macros/latex/base/ltnews30.pdf
+++ b/macros/latex/base/ltnews30.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews31.pdf b/macros/latex/base/ltnews31.pdf
index 42f5f32304..ec1ce7e4b5 100644
--- a/macros/latex/base/ltnews31.pdf
+++ b/macros/latex/base/ltnews31.pdf
Binary files differ
diff --git a/macros/latex/base/ltvers.dtx b/macros/latex/base/ltvers.dtx
index ce7a5d49d3..b38dee39c8 100644
--- a/macros/latex/base/ltvers.dtx
+++ b/macros/latex/base/ltvers.dtx
@@ -115,7 +115,7 @@
{2020-02-02}
%</2ekernel|latexrelease>
%<*2ekernel>
-\def\patch@level{3}
+\def\patch@level{4}
% \end{macrocode}
%
% \begin{macro}{\development@branch@name}
diff --git a/macros/latex/base/ltx3info.pdf b/macros/latex/base/ltx3info.pdf
index 315f4ec8ae..943f721f93 100644
--- a/macros/latex/base/ltx3info.pdf
+++ b/macros/latex/base/ltx3info.pdf
Binary files differ
diff --git a/macros/latex/base/ltxdoc.pdf b/macros/latex/base/ltxdoc.pdf
index ef9537d4ac..4d3b194557 100644
--- a/macros/latex/base/ltxdoc.pdf
+++ b/macros/latex/base/ltxdoc.pdf
Binary files differ
diff --git a/macros/latex/base/makeindx.pdf b/macros/latex/base/makeindx.pdf
index 8e8f4a7f2b..7e4449f227 100644
--- a/macros/latex/base/makeindx.pdf
+++ b/macros/latex/base/makeindx.pdf
Binary files differ
diff --git a/macros/latex/base/manual.pdf b/macros/latex/base/manual.pdf
index 2fc1392d49..2c16448391 100644
--- a/macros/latex/base/manual.pdf
+++ b/macros/latex/base/manual.pdf
Binary files differ
diff --git a/macros/latex/base/modguide.pdf b/macros/latex/base/modguide.pdf
index 23e362c5e5..5c2511393c 100644
--- a/macros/latex/base/modguide.pdf
+++ b/macros/latex/base/modguide.pdf
Binary files differ
diff --git a/macros/latex/base/nfssfont.pdf b/macros/latex/base/nfssfont.pdf
index e4007334e3..f27620a3ca 100644
--- a/macros/latex/base/nfssfont.pdf
+++ b/macros/latex/base/nfssfont.pdf
Binary files differ
diff --git a/macros/latex/base/proc.pdf b/macros/latex/base/proc.pdf
index 772bcef0dc..33c7b74736 100644
--- a/macros/latex/base/proc.pdf
+++ b/macros/latex/base/proc.pdf
Binary files differ
diff --git a/macros/latex/base/slides.pdf b/macros/latex/base/slides.pdf
index b6ef175860..99b9144c2d 100644
--- a/macros/latex/base/slides.pdf
+++ b/macros/latex/base/slides.pdf
Binary files differ
diff --git a/macros/latex/base/slifonts.pdf b/macros/latex/base/slifonts.pdf
index 48a428d8ab..dc88bca51b 100644
--- a/macros/latex/base/slifonts.pdf
+++ b/macros/latex/base/slifonts.pdf
Binary files differ
diff --git a/macros/latex/base/source2e.pdf b/macros/latex/base/source2e.pdf
index 011cdad592..82d453e69c 100644
--- a/macros/latex/base/source2e.pdf
+++ b/macros/latex/base/source2e.pdf
Binary files differ
diff --git a/macros/latex/base/syntonly.pdf b/macros/latex/base/syntonly.pdf
index 2abe6dc702..07ad732828 100644
--- a/macros/latex/base/syntonly.pdf
+++ b/macros/latex/base/syntonly.pdf
Binary files differ
diff --git a/macros/latex/base/tlc2.pdf b/macros/latex/base/tlc2.pdf
index ce6e947886..a018e81959 100644
--- a/macros/latex/base/tlc2.pdf
+++ b/macros/latex/base/tlc2.pdf
Binary files differ
diff --git a/macros/latex/base/tulm.pdf b/macros/latex/base/tulm.pdf
index d2ae577ef1..90918b8c2b 100644
--- a/macros/latex/base/tulm.pdf
+++ b/macros/latex/base/tulm.pdf
Binary files differ
diff --git a/macros/latex/base/usrguide.pdf b/macros/latex/base/usrguide.pdf
index 29050e863e..141948cc9f 100644
--- a/macros/latex/base/usrguide.pdf
+++ b/macros/latex/base/usrguide.pdf
Binary files differ
diff --git a/macros/latex/base/utf8ienc.pdf b/macros/latex/base/utf8ienc.pdf
index 8bf64ce898..4ccd4dc614 100644
--- a/macros/latex/base/utf8ienc.pdf
+++ b/macros/latex/base/utf8ienc.pdf
Binary files differ
diff --git a/macros/latex/base/webcomp.pdf b/macros/latex/base/webcomp.pdf
index 0748c1fcdb..1506af3d45 100644
--- a/macros/latex/base/webcomp.pdf
+++ b/macros/latex/base/webcomp.pdf
Binary files differ
diff --git a/macros/latex/contrib/curve2e/README.txt b/macros/latex/contrib/curve2e/README.txt
index ea1f941352..0e7a123185 100644
--- a/macros/latex/contrib/curve2e/README.txt
+++ b/macros/latex/contrib/curve2e/README.txt
@@ -10,7 +10,7 @@
%% License information appended
%%
File README.txt for package curve2e
- [2020-01-29 v.2.2.1 Extension package for pict2e]
+ [2020-02-24 v.2.2.2 Extension package for pict2e]
The package bundle curve2e is composed of the following files
curve2e.dtx
@@ -25,7 +25,8 @@ on curve2e.dtx. The curve2e-manual files contain the user manual; in
this way the long preliminary descriptive part has been transferred to
a shorter dedicated file, and the “normal” user should have enough
information to use the package. Th curve2e.pdf file, extracted from
-the .dtx one, contains the code documentation and is intended for the developers, or for the curious advanced users.
+the .dtx one, contains the code documentation and is intended for the
+developers, or for the curious advanced users.
README.txt, this file, contains general information.
@@ -38,9 +39,9 @@ standard picture LaTeX environment according to what Leslie Lamport
specified in the second edition of his LaTeX manual (1994).
This further extension curve2e.sty allows to draw lines and vectors
-with any non integer slope parameters, to draw dashed lines of any
-slope, to draw arcs and curved vectors, to draw curves where just
-the interpolating nodes are specified together with the slopes at
+with any non integer slope parameters, to draw dashed and dotted lines
+of any slope, to draw arcs and curved vectors, to draw curves where
+just the interpolating nodes are specified together with the slopes at
such nodes; closed paths of any shape can be filled with color; all
coordinates are treated as ordered pairs, i.e. 'complex numbers';
coordinates may be expressed also in polar form. Coordinates may be
@@ -61,7 +62,7 @@ way. A new xmultiput command has been defined that is more configurable
than the original one; both \multiput and \xmultiput are backwards
compatible with the original picture environment definition.
-This version solves a conflict with package eso-pic.
+Curve2e solves a conflict with package eso-pic.
This version of curve2e is almost fully compatible with pict2e dated
2014/01/12 version 0.2z and later.
diff --git a/macros/latex/contrib/curve2e/curve2e-manual.pdf b/macros/latex/contrib/curve2e/curve2e-manual.pdf
index 27ace5e0ca..5183f38d8c 100644
--- a/macros/latex/contrib/curve2e/curve2e-manual.pdf
+++ b/macros/latex/contrib/curve2e/curve2e-manual.pdf
Binary files differ
diff --git a/macros/latex/contrib/curve2e/curve2e-manual.tex b/macros/latex/contrib/curve2e/curve2e-manual.tex
index 442bb42650..36d4ae7d57 100644
--- a/macros/latex/contrib/curve2e/curve2e-manual.tex
+++ b/macros/latex/contrib/curve2e/curve2e-manual.tex
@@ -511,7 +511,7 @@ Remember to delete all these subfolders if you decide to install a complete upda
\begin{Esempio}[\small](0.60)
\unitlength=0.01\linewidth
\begin{picture}(80,20)
-\GraphGrid(80,20)
+\AutoGrid
\put(0,0){\vector(1.5,2.3){10}}
\put(20,0){\Vector(10,15.33333)}
\VECTOR(40,0)(50,15.33333)
@@ -550,7 +550,7 @@ Remember to delete all these subfolders if you decide to install a complete upda
\begin{Esempio}[\normalsize]%
\unitlength=0.02\textwidth
\begin{picture}(40,30)
-\GraphGrid(40,30)
+\AutoGrid(40,30)
\Zbox(40,0)[l]{40,0}[1]
\Zbox(90:30)[bc]{90{:}30}[1]
\Zbox(60:30)[bc]{60{:}30}[1]
@@ -603,7 +603,7 @@ Remember to delete all these subfolders if you decide to install a complete upda
\begin{Esempio}[\normalsize]%
\unitlength=1mm
\begin{picture}(40,40)
-\GraphGrid(40,40)
+\AutoGrid(40,40)
\Dashline(0,0)(40,10){4}
\put(0,0){\circle*{2}}
\Dashline(40,10)(0,25){4}
@@ -625,7 +625,7 @@ Remember to delete all these subfolders if you decide to install a complete upda
\begin{Esempio}[\normalsize]%
\unitlength=0.025\textwidth
\begin{picture}(40,30)
-\GraphGrid(40,30)
+\AutoGrid(40,30)
\Dashline(0,0)(40,10){2}
\Dashline(0,0)(40,20){2}
\Dashline(0,0)(40,30){2}
@@ -656,7 +656,7 @@ Remember to delete all these subfolders if you decide to install a complete upda
\begin{Esempio}[\normalsize]%
\unitlength=0.025\textwidth
\begin{picture}(40,30)
-\GraphGrid(40,30)
+\AutoGrid(40,30)
\Dotline(0,0)(40,10){1.5}[2pt]
\Dotline(0,0)(40,20){1.5}[2pt]
\Dotline(0,0)(40,30){1.5}[2pt]
@@ -676,12 +676,12 @@ Remember to delete all these subfolders if you decide to install a complete upda
\label{fig:dottedlines}
\end{figure}
%%>>>
- \item |\GraphGrid| is a command that draws a red grid under the drawing
- with lines separated |10\unitlength|s apart; it is described only with
- a comma separated couple of numbers, representing the base and the
- height of the grid, see figure~\ref{fig:dashline}; it's better to
- specify multiples of ten and the grid can be placed anywhere in the
- drawing canvas by means of |\put|, whose cartesian coordinates are
+ \item |\GraphGrid| and |\AutoGrid| are commands that draw a red grid
+ under the drawing with lines separated |10\unitlength|s apart; it is
+ described only with a comma separated couple of numbers, representing the
+ base and the height of the grid, see figure~\ref{fig:dashline}; it's
+ better to specify multiples of ten and the grid can be placed anywhere in
+ the drawing canvas by means of |\put|, whose cartesian coordinates are
multiples of 10; nevertheless the grid line distance is rounded to the
nearest multiple of 10, while the point coordinates specified to |\put|
are not rounded at all; therefore some care should be used to place the
@@ -689,10 +689,11 @@ Remember to delete all these subfolders if you decide to install a complete upda
while drawing; even if you sketch your drawing on millimetre paper, the
drawing grid turns out to be very useful; one must only delete or
comment out the command when the drawing is finished. Several examples
- of usage of such grid are shown in several figures.
+ of usage of such grid are shown in several figures. |\Autogrid| does not
+ require arguments; if the latter are specified they are simply ignored.
%%
\item New trigonometric function macros have been computed by means of
- the functionalities of the |xfp| package. The difference woth the other
+ the functionalities of the |xfp| package. The difference with the other
existing macros is that angles are specified in sexagesimal degrees, so
that the users need not transform to radians. The computations are done
taking into account that “abnormal” values can occasionally be avoided,
@@ -866,7 +867,7 @@ Remember to delete all these subfolders if you decide to install a complete upda
%\def\y(#1){(13*cos(#1)-5*cos(2*#1)-2*cos(3*#1)-cos(4*#1))/16}
% Varrebbe a penda di provarle con curve2e
%
- \begin{figure}[!htb]
+ \begin{figure}[!htp]
\begin{Esempio}[\small]%
\unitlength=8mm\relax
\begin{picture}(5,5)
diff --git a/macros/latex/contrib/curve2e/curve2e.dtx b/macros/latex/contrib/curve2e/curve2e.dtx
index d387706676..0b35ef2c19 100644
--- a/macros/latex/contrib/curve2e/curve2e.dtx
+++ b/macros/latex/contrib/curve2e/curve2e.dtx
@@ -46,7 +46,7 @@ README.txt and curve2e-v161.sty.
%<+package>\ProvidesPackage{curve2e}%
%<+readme>File README.txt for package curve2e
%<*package|readme>
- [2020-01-29 v.2.2.1 Extension package for pict2e]
+ [2020-02-24 v.2.2.2 Extension package for pict2e]
%</package|readme>
%<*driver>
\documentclass{ltxdoc}\errorcontextlines=9
@@ -179,7 +179,7 @@ README.txt and curve2e-v161.sty.
%</driver>
% \fi
%
-% \CheckSum{5578}
+% \CheckSum{5582}
% \begin{abstract}
% This file documents the |curve2e| extension package to the |pict2e|
% bundle implementation; the latter was described by Lamport
@@ -403,9 +403,9 @@ README.txt and curve2e-v161.sty.
% prohibited to use them; by themselves such arcs are not different form
% those used by |Curve|, but the final command, |\FillCurve|, should be
% used in place of |\CurveFinish|, so as to fill up the closed path with
-% the locally specified color; see figure~\ref{fig:colored-curve}.
-% It is much more convenient to use the starred version of the |\Curve|
-% macro.
+% the locally specified color; see the documentation |curve2e-manual.pdf|
+% file. It is much more convenient to use the starred version of the
+% |\Curve| macro.
% \end{enumerate}
%
% The |pict2e| package already defines macros such as |\moveto|,
@@ -753,10 +753,8 @@ README.txt and curve2e-v161.sty.
% always referred to the origin of the coordinate axes; the end point
% $P_2$ coordinates are referred to the origin of the axes if in
% cartesian form, while with the polar form they are referred to $P_1$;
-% both coordinate types have their usefulness and
-% figures~\ref{fig:dashedlines} on page~\pageref{fig:dashedlines}
-% and~\ref{fig:dottedlines} on page~\pageref{fig:dottedlines} show how
-% to use such coordinate types.
+% both coordinate types have their usefulness: see the documentation
+% |curve2e-manual.pdf| file.
%
% The above mentioned macros create dashed lines between two given
% points, with a dash length that must be specified, or dotted lines,
@@ -988,7 +986,7 @@ README.txt and curve2e-v161.sty.
% course it is the user responsibility to pay attention to the scales of
% the two axes and to write meaningful expressions; the figure and code
% shown in the first part of this documentation show some examples:
-% see pages~\pageref{pag:multiput} and~\pageref{pag:orologio}.
+% see the documentation |curve2e-manual.pdf| file.
% \begin{macrocode}
\RenewDocumentCommand{\multiput}{O{0,0} d() d() m m o }{%
\IfNoValueTF{#2}{\PackageError{curve2e}%
@@ -1204,8 +1202,8 @@ README.txt and curve2e-v161.sty.
% The \texttt{pict2e} documentation says that if the vector length is
% zero the macro draws only the arrow tip; this may work with macro
% |\vector|, certainly not with |\Vector| and |\VECTOR|. This might be
-% useful for adding an arrow tip to a circular arc. See examples in
-% figure~\ref{fig:vectors} on page~\pageref{fig:vectors}.
+% useful for adding an arrow tip to a circular arc. See the documentation
+% |curve2e-manual.pdf| file.
%
%
%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1350,7 +1348,43 @@ README.txt and curve2e-v161.sty.
% a single argument is assumed to contain the grid dimensions, while
% if both arguments are given, the first one is the lower left corner
% offset, and the second one the grid dimensions.
-% \begin{macrocode}
+%
+% In order to render the red grid a little more automatic, a subsidiary
+% service macro of the |picture| environment has been redefined in order
+% to store the coordinates of the lower left and upper right corners
+% of the canvas (the compulsory dimensions and the optional lower left
+% corner shift arguments to the |picture| opening statement) in two
+% new variables, so that when the user specifies the (non vanishing)
+% dimensions of the canvas, the necessary data are already available
+% and there is no need to repeat them to draw the grid. The new
+% argument-less macro is named |\AutoGrid|, while the complete
+% macro is |\GraphGrid| that requires its arguments as specified
+% before. The advantage of the availability of both commands,
+% consists in the fact that |\AutoGrid| covers the whole canvas,
+% while |\GraphGrid| may compose a grid that covers either the whole
+% canvas or just a part of it. In both cases, though, it is necessary
+% the all the canvas coordinates are specified as multiples of 10
+% (|\unitlength|s). This is simple when |\GraphGrid| is used, while
+% with |\AutoGrid| the specification is in the opening environment
+% statement; and such multiples of 10 might not be the best ones
+% for the final drawing and should be fine tuned after finishing
+% the drawing and the grid is not necessary anymore.
+% The actual |\AutoGrid| command definition accepts two parenthesis
+% delimited arguments, that are not being used in the macro expansion;
+% in this way it is easier to replace |\GraphGrid| with |\AutoGrid| if
+% it is desired to do so. The opposite action, of corse is not so simple
+% if the |\AutoGrid| command is not followed by one or two arguments
+% as |\GraphGrid| requires.
+% \begin{macrocode}
+\def\@picture(#1,#2)(#3,#4){%
+ \edef\pict@urcorner{#1,#2}% New statement
+ \edef\pict@llcorner{#3,#4}% New statement
+ \@picht#2\unitlength
+ \setbox\@picbox\hb@xt@#1\unitlength\bgroup
+ \hskip -#3\unitlength
+ \lower #4\unitlength\hbox\bgroup
+ \ignorespaces}
+%
\def\Gr@phGrid(#1,#2){\bgroup\textcolor{red}{\linethickness{.1\p@}%
\RoundUp#1modulo10to\@GridWd \RoundUp#2modulo10to\@GridHt
\@tempcnta=\@GridWd \divide\@tempcnta10\relax \advance\@tempcnta\@ne
@@ -1358,21 +1392,23 @@ README.txt and curve2e-v161.sty.
\@tempcnta=\@GridHt \divide\@tempcnta10\advance\@tempcnta\@ne
\multiput(0,0)(0,10){\@tempcnta}{\line(1,0){\@GridWd}}\thinlines}%
\egroup\ignorespaces}
+
+\NewDocumentCommand\AutoGrid{d() d()}{\bgroup%
+\put(\pict@llcorner){\expandafter\Gr@phGrid\expandafter(\pict@urcorner)}%
+\egroup\ignorespaces}
+
+
\NewDocumentCommand\GraphGrid{r() d()}{%
\IfValueTF{#2}{\put(#1){\Gr@phGrid(#2)}}%
{\put(0,0){\Gr@phGrid(#1)}}}
% \end{macrocode}
% Rounding up is useful because also the grid margins fall on coordinates
-% multiples of 10. It resorts to the |\Integer| macro that will be
-% described in a while.
+% multiples of 10.
% \begin{macrocode}
-\def\RoundUp#1modulo#2to#3{\expandafter\@tempcnta\Integer#1.??%
-\count254\@tempcnta\divide\count254by#2\relax
-\multiply\count254by#2\relax
-\count252\@tempcnta\advance\count252-\count254
-\ifnum\count252>0\advance\count252-#2\relax
-\advance\@tempcnta-\count252\fi\edef#3{\number\@tempcnta}\ignorespaces}%
+\def\RoundUp#1modulo#2to#3{
+\edef#3{\fpeval{(ceil(#1/#2,0))*#2}}}%
+%
% \end{macrocode}
% The |\Integer| macro takes a possibly fractional number whose decimal
% separator, if present, \textit{must} be the decimal point and uses the
@@ -1392,7 +1428,8 @@ README.txt and curve2e-v161.sty.
% This is not the place to complain about the fact that all programs of
% the \TeX\ system used only integer arithmetics; now, with the 2018
% distribution of the modern \TeX\ system, package |xfp| is available:
-% this package resorts in the background to language \LaTeX\,3; this language now can compute fractional number
+% this package resorts in the background to language \LaTeX\,3; this
+% language now can compute fractional number
% operations coded in decimal, not in binary, and accepts also numbers
% written in the usual way in computer science, that is as a fractional,
% possibly signed, number followed by an expression that contains the
@@ -2074,8 +2111,8 @@ README.txt and curve2e-v161.sty.
% control points lay on the perpendicular to the vectors that join the
% arc center to the starting and end points respectively.
%
-% With reference to figure~\ref{fig:arcspline} on
-% page~\pageref{fig:arcspline}, the points $P_1$ and $P_2$
+% With reference to figure~11 of the documentation |curve2e-manual.pdf|
+% file, the points $P_1$ and $P_2$
% are the arc end-points; $C_1$ and $C_2$ are the Bézier-spline
% control-points; $P$ is the arc mid-point, that should be distant from
% the center of the arc the same as $P_1$ and $P_2$.
@@ -2535,8 +2572,8 @@ README.txt and curve2e-v161.sty.
% \end{macrocode}
%
-% An example of use is shown in figure~\ref{fig:Cbezier} on
-% page~\pageref{fig:Cbezier}; notice that the tangents at the end points
+% An example of use is shown in figure~13 of the |curve2e-manual.pdf| file;
+% notice that the tangents at the end points
% are the same for the black curve drawn with |\CurveBetween| and the
% five red curves drawn with |\CbezierBetween|; the five red curves
% differ only for the distance of their control point $C_0$ from the
@@ -2771,8 +2808,8 @@ README.txt and curve2e-v161.sty.
% macro |\CbezierBetween| in order to use the general internal cubic
% Bézier splines in a more comfortable way.
%
-% As it can be seen in figure~\ref{fig:sinewave} on
-% page~\pageref{fig:sinewave} the two diagrams should approximately
+% As it can be seen in figure~15 of the |curve2e-manual.pdf| file, the
+% two diagrams should approximately
% represent a sine wave. With Bézier curves, that resort on polynomials,
% it is impossible to represent a transcendental function, but it is only
% possible to approximate it. It is evident that the approximation
@@ -3000,17 +3037,16 @@ README.txt and curve2e-v161.sty.
% \end{macrocode}
%
% An example of usage is shown at the left in
-% figure~\ref{fig:quadratic-arcs}\footnote{The commands \cs{legenda},
+% figure~16\footnote{The commands \cs{legenda},
% \cs{Pall} and \cs{Zbox} are specifically defined in the preamble of
% this document; they must be used within a \texttt{picture} environment.
% \cs{legenda} draws a framed legend made up of a single (short) math
-% formula; \cs{Pall} is just a shorthand to put a filled small circle at a
+% formula; \cs{Pall} is just a shorthand to put a sized dot at a
% specified position' \cs{Zbox} puts a symbol in math mode a little
% displaced in the proper direction relative to a specified position.
% They are just handy to label certain objects in a \texttt{picture}
-% diagram, but they are not part of the \texttt{curve2e} package.} on
-% page~\pageref{fig:quadratic-arcs} created with the code shown in the
-% same page.
+% diagram, but they are not part of the \texttt{curve2e} package.} in
+% figure~16 created with the code shown in the same page as the figure.
%
% Notice also that the inflexed line is made with two arcs that meet at
% the inflection point; the same is true for the line that resembles
diff --git a/macros/latex/contrib/curve2e/curve2e.pdf b/macros/latex/contrib/curve2e/curve2e.pdf
index 536c56b9d5..eb283322f5 100644
--- a/macros/latex/contrib/curve2e/curve2e.pdf
+++ b/macros/latex/contrib/curve2e/curve2e.pdf
Binary files differ
diff --git a/macros/latex/contrib/exframe/README.txt b/macros/latex/contrib/exframe/README.txt
index 86c71316ab..c2c506613e 100644
--- a/macros/latex/contrib/exframe/README.txt
+++ b/macros/latex/contrib/exframe/README.txt
@@ -1,4 +1,4 @@
-exframe v3.31
+exframe v3.4
Copyright 2011-2020 Niklas Beisert
exframe is a LaTeX2e package which provides a general purpose
diff --git a/macros/latex/contrib/exframe/exframe.dtx b/macros/latex/contrib/exframe/exframe.dtx
index b760696ca9..726a6afd8b 100644
--- a/macros/latex/contrib/exframe/exframe.dtx
+++ b/macros/latex/contrib/exframe/exframe.dtx
@@ -20,11 +20,11 @@
% exfserpe.tex, exfserpf.tex, exfsermk.sh, exfsermk.mak.
%
%<package|samplesingle|samplemultimain>\NeedsTeXFormat{LaTeX2e}[1996/12/01]
-%<package>\ProvidesPackage{exframe}[2020/01/11 v3.31 Framework for Exercise Problems]
-%<samplesingle>\ProvidesFile{exfsamp.tex}[2020/01/11 v3.31 standalone sample for exframe]
-%<samplemultimain>\ProvidesFile{exfserm.tex}[2020/01/11 v3.31 multipart sample for exframe]
+%<package>\ProvidesPackage{exframe}[2020/02/24 v3.4 Framework for Exercise Problems]
+%<samplesingle>\ProvidesFile{exfsamp.tex}[2020/02/24 v3.4 standalone sample for exframe]
+%<samplemultimain>\ProvidesFile{exfserm.tex}[2020/02/24 v3.4 multipart sample for exframe]
%<*driver>
-\def\thedate#1{2020/01/11}\def\theversion#1{v3.31}
+\def\thedate#1{2020/02/24}\def\theversion#1{v3.4}
\ProvidesFile{exframe.dtx}[\thedate{} \theversion{} exframe reference manual file]
\PassOptionsToClass{10pt,a4paper}{article}
\documentclass{ltxdoc}
@@ -918,9 +918,9 @@ for other sheets and problems:
%
\begin{center}
\begin{tabular}{l}
-|\getsheetpoints{|\textit{tag}|}|\\
-|\getproblempoints{|\textit{tag}|}|\\
-|\getsubproblempoints{}|\\
+|\getsheetpoints{|[\textit{tag}]|}|\\
+|\getproblempoints{|[\textit{tag}]|}|\\
+|\getsubproblempoints{|[\textit{tag}]|}|\\
|\getsolutionpoints{}|
\end{tabular}
\end{center}
@@ -1025,8 +1025,10 @@ as the environment option:
\DescribeMacro{tag}
\DescribeMacro{\sheettag}
\DescribeMacro{\problemtag}
+\DescribeMacro{\subproblemtag}
The package provides an additional mechanism to tag sheets and problems.
-Each |sheet| and each |problem| can be assigned a unique tag \textit{tag} by
+Each |sheet|, |problem| and |subproblem|
+can be assigned a unique tag \textit{tag} by
the environment option:
%
\begin{center}
@@ -1035,9 +1037,10 @@ the environment option:
%
This tag is used for reading point totals
as described in \secref{sec:points}.
-Furthermore, the macro |\sheettag| or |\problemtag|
+Furthermore, the macro |\sheettag|, |\problemtag| or |\subproblemtag|
is set to the tag \textit{tag} within the current environment.
-If no tag is specified it matches the number of the sheet or problem;
+If no tag is specified it defaults to the number
+of the current sheet or (sub)problem;
note that this number can change by reordering sheets and problems
and therefore it should not be used to identify the entity from
other parts of the document.
@@ -1069,6 +1072,53 @@ for sheets (|sheet:|\textit{tag}) and problems (|prob:|\textit{tag}) by:
\end{center}
%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DescribeMacro{\getsheetlist}
+\DescribeMacro{\getproblemlist}
+\DescribeMacro{\getsubproblemlist}
+Tags can also be used to process a list of sheets, problems and subproblems:
+%
+\begin{center}
+\begin{tabular}{l}
+|\getsheetlist{}|\\
+|\getproblemlist{|[\textit{sheet-tag}]\textbar|*}|\\
+|\getsubproblemlist{|[\textit{problem-tag}]|}|\\
+\end{tabular}
+\end{center}
+%
+These commands return a list of sheets, problems and subproblems tags,
+where each item is encapsulated in braces.
+The commands |\get|[|sub|]|problemlist| return the (sub)problems
+within the specified sheet or problem. If no argument is given,
+the current sheet or problem is assumed.
+|\getproblemlist*| returns the list of all problems.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DescribeMacro{\exerciseloop}
+\DescribeMacro{\exerciseloopstr}
+\DescribeMacro{\exerciseloopret}
+\DescribeMacro{exerciseloop}
+The package defines two commands to walk through such a list:
+%
+\begin{center}
+\begin{tabular}{l}
+|\exerciseloop{|\textit{items}|}{|\textit{cmd}|}|\\
+|\exerciseloopstr[|\textit{ret}|]{|\textit{items}|}{|\textit{str}|}|
+\end{tabular}
+\end{center}
+%
+Here, \textit{items} is a list of items in braces,
+and |\exerciseloop| evaluates \textit{cmd}
+for each item of the list where `|#1|' is replaced by the item.
+The command |\exerciseloopstr| concatenates
+the evaluations of \textit{str}
+and returns the resulting string in the macro \textit{ret}
+(which defaults to |\exerciseloopret|).
+Both commands maintain a counter of items |exerciseloop|
+which can be accessed within \textit{cmd}/\textit{str} or
+after |\exerciseloop|[|str|] to obtain the total number of items
+in the list.
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Layout}
\label{sec:layout}
@@ -1226,7 +1276,9 @@ They expand to the common \TeX{} constructs
|\if&#1&#2\else#3\fi| and |\if&#1&\else#2\fi|
which work assuming that \textit{expr} is not too exotic
(e.g.\ it should not start with the character `|&|'
-and other special \TeX{} characters or macros are potentially dangerous).
+and other special \TeX{} characters or macros are potentially dangerous;
+also using this within tables can be troublesome;
+the character `|&|' can be reconfigured by the package option |emptytestchar|).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Exercise Styles}
@@ -1410,6 +1462,12 @@ define some more advanced metadata entries.
(no value implies |true|, initially set to |false|) --
define some more advanced styles.
+\item |metastr|[|=true|\textbar|false|]
+(no value implies |true|, initially set to |false|) --
+load \textsf{metastr} package and use to handle PDF metadata
+and basic internationalisation,
+see \secref{sec:imp-metastr} for details.
+
\item |problemenv=|\textit{name} --
redefine environment name |problem|.
This and the following alike options may be useful in
@@ -1507,6 +1565,12 @@ with |\exercisesetup{solutions=false}| when buffering if disabled.
enable/disable buffering for |problem| environments
in order to control their display.
+\item |emptytestchar=|\textit{char}
+(initially set to `|&|') --
+character to use for testing whether an argument |#1|
+is empty via |\if&#1&...\fi|;
+if `|&|' causes trouble within tables, could try `|@|' instead.
+
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1612,6 +1676,12 @@ provided by the package \textsf{currfile} (if available and loaded)
to indicate the \LaTeX{} source file in the generated metapost file.
Compatibility with the \textsf{currfile} package
has been tested with v0.7c (2015/04/23).
+\item
+This package can use the package
+\href{http://ctan.org/pkg/metastr}{\textsf{metastr}}
+to write PDF metadata and to handle basic translations.
+Compatibility with the \textsf{metastr} package
+has been tested with v1.0 (2020/02/06).
\end{itemize}
There are several other \LaTeX{} packages
@@ -1690,8 +1760,8 @@ The package offers most of the functionality of the above packages,
but (presently) misses out on some more advanced features,
see \secref{sec:suggestions}.
-\iffalse
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\iffalse
\subsection{Suggested Customisations}
\label{sec:customisations}
@@ -1755,9 +1825,9 @@ Define structures for multiple-choice questions.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Revision History}
-\iffalse
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\paragraph{v3.3+:} 2020/01/12
+\iffalse
+\paragraph{v3.4+:} 2020/02/25
\begin{itemize}
\item
@@ -1768,6 +1838,21 @@ section on extensions
\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\paragraph{v3.4:} 2020/02/24
+
+\begin{itemize}
+\item
+lists of sheets, problems and subproblems;
+list iterators
+\item
+tags for subproblems, tag customisation
+\item
+interaction with package \textsf{metastr}
+\item
+minor fixes
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{v3.31:} 2020/01/11
\begin{itemize}
@@ -1970,11 +2055,23 @@ dedicated layout and macros for author's exercise sheets
\parskip0.5ex
% \end{macrocode}
-% Include \textsf{amsmath}, \textsf{hyperref}
-% and the \textsf{exframe} package:
+% Include \textsf{amsmath}, \textsf{hyperref} packages:
% \begin{macrocode}
\usepackage{amsmath}
\usepackage{hyperref}
+% \end{macrocode}
+
+% May include \textsf{metastr} package;
+% below code adjusts to whether or not present:
+% \begin{macrocode}
+\PassOptionsToPackage{loadlang=en|de}{metastr}
+\PassOptionsToPackage{course=true}{metastr}
+%%\usepackage{metastr}
+%%\metasetlang{de}
+% \end{macrocode}
+
+% Include \textsf{exframe} package:
+% \begin{macrocode}
\usepackage[extstyle]{exframe}
% \end{macrocode}
@@ -1985,8 +2082,13 @@ dedicated layout and macros for author's exercise sheets
% the display of solutions near the top
% of the source file, potentially with the opposite setting commented out:
% \begin{macrocode}
-\exercisesetup{solutions=true}
-%%\exercisesetup{solutions=false}
+%%\exercisesetup{solutions=true}
+\exercisesetup{solutions=false}
+% \end{macrocode}
+
+% Automatically put labels for (sub)problems:
+% \begin{macrocode}
+\exercisesetup{autolabelproblem=true}
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2026,8 +2128,15 @@ dedicated layout and macros for author's exercise sheets
% Redefine the terms to be used for sheet(s);
% here, a German version:
% \begin{macrocode}
+\ifdefined\metaset
+\metasetterm[en]{sheet}{Exercise Sheet}
+\metasetterm[en]{sheets}{Exercise Sheets}
+\metasetterm[de]{sheet}{\"Ubungsblatt}
+\metasetterm[de]{sheets}{\"Ubungsbl\"atter}
+\else
\exerciseconfig{termsheet}{\"Ubungsblatt}
\exerciseconfig{termsheets}{\"Ubungsbl\"atter}
+\fi
% \end{macrocode}
% Display points for problems in the margin;
@@ -2037,7 +2146,7 @@ dedicated layout and macros for author's exercise sheets
\exercisestyle{problempointsat=margin}
\reversemarginpar
\exerciseconfig{composepointsmargin}[1]{#1p.}
-\exerciseconfig{composepointspairmargin}[2]{
+\exerciseconfig{composepointspairmargin}[2]{%
\ifdim#2pt=0pt#1p.%
\else\ifdim#1pt=0pt+#2p.%
\else#1+#2p.%
@@ -2068,19 +2177,35 @@ dedicated layout and macros for author's exercise sheets
\exercisestyle{solutionsep}
% \end{macrocode}
-% Add course name to sheet title metadata:
+% Write metadata for sheet:
% \begin{macrocode}
-\exerciseconfig{composemetasheet}[2]{\getexercisedata{course},
- \exerciseifempty{#2}{\getexerciseconfig{termsheet} #1}{#2}}
+\exercisesetup{pdfdata=sheet}
% \end{macrocode}
-% Set title and author for pdf metadata:
+% Set title and author for pdf metadata;
+% |title| is |course| plus |material| or sheet title;
+% |author| is |instructor| or sheet author plus |institution|:
% \begin{macrocode}
-\exercisesetup{pdfdata=sheet}
+\ifdefined\metaset
+\metaset[sep]{subtitle}{, }
+\metaset{subtitle}{\ifsolutions\metatranslate[#1]{solutions} \fi%
+ \metaif[use]{sheettitle}
+ {\metapick[#1]{sheettitle}}
+ {\metapick[#1]{material}}}
+\metaset{author}{\exerciseifempty{\getsheetdata{author}}%
+ {\metapick[#1]{instructor}}{\metapick[#1]{sheetauthor}},
+ \metapick[#1]{institution}}
+\else
+\exerciseconfig{composemetasheet}[2]{\getexercisedata{course},
+ \ifsolutions\getexerciseconfig{termsolutions} \fi%
+ \exerciseifempty{#2}{\getexerciseconfig{termsheet} #1}{#2}}
\exercisedata{title=%
- {\getexercisedata{course}, \getexercisedata{material}}}
+ {\getexercisedata{course},
+ \ifsolutions\getexercisedata{solutions} \fi%
+ \getexercisedata{material}}}
\exercisedata{author=%
{\getexercisedata{instructor}, \getexercisedata{institution}}}
+\fi
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2088,11 +2213,21 @@ dedicated layout and macros for author's exercise sheets
%
% Set some data on the current series:
% \begin{macrocode}
+\ifdefined\metaset
+\metaset{institution}{Katharinen-Volksschule}
+\metaset[de]{course}{Mathematik}
+\metaset[en]{course}{Mathematics}
+\metaset{instructor}{J.\ G.\ B\"uttner}
+\metaset{period}{ca.\ 1786}
+\metaset[de]{material}{\"Ubungsaufgaben}
+\metaset[en]{material}{Exercise Problems}
+\else
\exercisedata{institution={Katharinen-Volksschule}}
\exercisedata{course={Mathematik}}
\exercisedata{instructor={J.\ G.\ B\"uttner}}
\exercisedata{period={ca.\ 1786}}
\exercisedata{material={\"Ubungsaufgaben}}
+\fi
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2104,7 +2239,7 @@ dedicated layout and macros for author's exercise sheets
% Start sheet number 5:
% \begin{macrocode}
-\begin{sheet}[number=5]
+\begin{sheet}[number=5,label={sheet5}]
% \end{macrocode}
% Start a problem with a title:
@@ -2112,6 +2247,23 @@ dedicated layout and macros for author's exercise sheets
\begin{problem}[title={Sums},points=99+4]
% \end{macrocode}
+% Summary of points:
+% \begin{macrocode}
+\exerciseloopstr{\getsubproblemlist{}}{c}%
+\hfill\begin{tabular}{c|\exerciseloopret|c}
+\exerciseloop{\getsubproblemlist{}}
+ {&\ref{\getexerciseconfig{labelsubproblem}{#1}}}
+&\ref{prob:\problemtag}\\\hline
+\getexerciseconfig{termpoints}
+\exerciseloop{\getsubproblemlist{}}{&\extractpoints{\getsubproblempoints{#1}}}
+&\extractpoints{\getproblempoints{}}
+\\
+extra
+\exerciseloop{\getsubproblemlist{}}{&\extractpoints*{\getsubproblempoints{#1}}}
+&\extractpoints*{\getproblempoints{}}
+\end{tabular}
+% \end{macrocode}
+
% Some introduction to the problem:
% \begin{macrocode}
This problem deals with sums and series.
@@ -2284,6 +2436,47 @@ This is beyond the scope of this example.
\end{solution}
% \end{macrocode}
+% Summary of points per problem and per subproblem for grading:
+% \begin{macrocode}
+\ifsolutions\else
+\textbf{Grading:}\par
+\exerciseloopstr{\getproblemlist{}}{|c}
+\begin{tabular}{|c|\exerciseloopret||c|}\hline
+\getexerciseconfig{termsheet} \ref{sheet5}
+\exerciseloop{\getproblemlist{*}}
+ {&\ref{\getexerciseconfig{labelproblem}{#1}}}
+&total
+\\\hline
+value
+\exerciseloop{\getproblemlist{*}}
+ {&\extractpoints{\getproblempoints{#1}}}%
+&\extractpoints{\getsheetpoints{}}
+\\\hline
+\exerciseloop{\getproblemlist{*}}{&}
+&\\\hline
+\end{tabular}\qquad
+\exerciseloop{\getproblemlist{*}}{
+ \exerciseloopstr{\getsubproblemlist{#1}}{|c}
+ \ifnum\value{exerciseloop}>0\relax
+ \begin{tabular}{|c|\exerciseloopret||c|}\hline
+ \getexerciseconfig{termproblem} \ref{\getexerciseconfig{labelproblem}{#1}}
+ \exerciseloop{\getsubproblemlist{#1}}
+ {&\ref{\getexerciseconfig{labelsubproblem}{##1}}}
+ &total
+ \\\hline
+ value
+ \exerciseloop{\getsubproblemlist{#1}}
+ {&\extractpoints{\getsubproblempoints{##1}}}%
+ &\extractpoints{\getproblempoints{#1}}
+ \\\hline
+ \exerciseloop{\getsubproblemlist{#1}}{&}
+ &\\\hline
+ \end{tabular}\quad
+ \fi
+}
+\fi
+% \end{macrocode}
+
% End sheet:
% \begin{macrocode}
\end{sheet}
@@ -2342,12 +2535,13 @@ This is beyond the scope of this example.
% the document is to be compiled;
% concretely this affects the compilations of metapost figures, see below:
% \begin{macrocode}
-\providecommand{\draftver}{y}
\ifchilddoc
\providecommand{\printsol}{y}
\else
\providecommand{\printsol}{n}
\fi
+\providecommand{\draftver}{y}
+\newif\ifdraft\if\draftver y\drafttrue\else\draftfalse\fi
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2373,10 +2567,22 @@ This is beyond the scope of this example.
\PassOptionsToPackage{bookmarksopen=true}{hyperref}
\RequirePackage{hyperref}
% \end{macrocode}
-% Use the \textsf{hyperxmp} package for inclusion of
-% copyright metadata in the compiled pdf files:
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{metastr Package.}
+%
+% Use the \textsf{metastr} package to handle
+% metadata and copyright information;
+% disable usage of \textsf{hyperxmp} package if not installed;
+% write auxiliary PDF metadata and rights information:
% \begin{macrocode}
-\IfFileExists{hyperxmp.sty}{\RequirePackage{hyperxmp}}{}
+\ifdraft
+\PassOptionsToPackage{draft}{metastr}
+\fi
+\IfFileExists{hyperxmp.sty}{}{\PassOptionsToPackage{hyperxmp=false}{metastr}}
+\RequirePackage[course]{metastr}
+\metaset[aux]{writepdf}{}
+\metaset[rights]{writepdf}{}
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2388,7 +2594,9 @@ This is beyond the scope of this example.
% \end{macrocode}
% Set solutions switch and declare two-sided layout only
-% if no solutions are printed:
+% if no solutions are printed;
+% do not use solution buffer in draft mode
+% for easier identification of potential compile errors:
% \begin{macrocode}
\if\printsol n
\exercisesetup{solutions=false}
@@ -2396,6 +2604,9 @@ This is beyond the scope of this example.
\else
\exercisesetup{solutions=true}
\exercisesetup{twoside=false}
+\ifdraft
+\exercisesetup{solutionbuf=false}
+\fi
\fi
% \end{macrocode}
@@ -2410,7 +2621,7 @@ This is beyond the scope of this example.
% Count problems, equations and pages by sheet
% (unless compiling single problem).
% Collect solutions below each problem.
-% Write pdf metadata for sheet when compiling single sheet.
+% Write pdf metadata for sheet when compiling single sheet:
% \begin{macrocode}
\exercisesetup{autolabelproblem}
\exercisestyle{contents,solutionsep}
@@ -2422,6 +2633,19 @@ This is beyond the scope of this example.
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Language.}
+%
+% Redefine some terms:
+% \begin{macrocode}
+\metasetlang{en-GB}
+
+\metasetterm[en]{sheet}{sheet}
+\metasetterm[en]{sheets}{sample sheets}
+\metasetterm[en]{solution}{Solution}
+\metasetterm[en]{solutions}{solutions}
+% \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \paragraph{Layout Definitions.}
%
% Set page dimensions and layout:
@@ -2489,16 +2713,13 @@ This is beyond the scope of this example.
% Setup \textsf{mpostinl}.
% Use checksums to invoke metapost only when figures change.
% Process all figures individually and immediately when in
-% draft mode (avoids a second compilation pass).
+% draft mode for child documents (avoids a second compilation pass).
% Number figures within sheet to provide a stable numbering
-% upon insertion/deletion of new figures or partial compilation.
-% Do not warn about unused figures when preparing without solutions
-% (figures for solutions should be declared outside |solution| environments):
+% upon insertion/deletion of new figures or partial compilation:
% \begin{macrocode}
\mpostsetup{checksum}
-\if\draftver y\mpostsetup{now,nowall}\fi
+\ifchilddoc\ifdraft\mpostsetup{now,nowall}\fi\fi
\ifchilddocmanual\else\mpostsetup{numberwithin={sheet}}\fi
-\ifsolutions\else\mpostsetup{warnunused=false}\fi
% \end{macrocode}
% Global metapost definitions.
@@ -2508,7 +2729,9 @@ This is beyond the scope of this example.
% |paths| is an array of path variables,
% |xu| serves as a length unit to
% scale individual figures
-% (use |interim xu:=...;| to set scale for local figure only):
+% (use |interim xu:=...;| to set scale for local figure only),
+% |pensize| changes the size of the pen,
+% |fillshape| fills and outlines a shape:
% \begin{macrocode}
\mpostsetup{globaldef=true}
\begin{mposttex}
@@ -2518,6 +2741,11 @@ This is beyond the scope of this example.
path paths[];
newinternal numeric xu;
xu:=1cm;
+def pensize(expr s)=withpen pencircle scaled s enddef;
+def fillshape(expr p,c)=
+ fill p withcolor c;
+ draw p
+enddef;
\end{mpostdef}
\mpostsetup{globaldef=false}
% \end{macrocode}
@@ -2532,99 +2760,64 @@ xu:=1cm;
%
% Set document data for series of problem sheets:
% \begin{macrocode}
-\exercisedata{course={exframe package samples}}
-\exercisedata{instructor={N.\ Beisert}}
-\exercisedata{institution={exframe academy}}
-\exercisedata{period={spring 2019}}
-\exercisedata{date={2019}}
+\metaset{course}{exframe package samples}
+\metaset{instructor}{N.\ Beisert}
+\metaset{author}{Niklas Beisert, \metapick[#1]{institution}}
+\metaset{institution}{exframe academy}
+\metaset{period}{spring 2019}
+\metaset{copyrightdate}{2019--2020}
% \end{macrocode}
% Assemble some entries from given data:
% \begin{macrocode}
-\exercisedata{material={\ifsolutions\getexerciseconfig{termsolutions}%
- \else\getexerciseconfig{termsheets}\fi}}
+\metaset{material}{\metatranslate[#1]{sheets}}
\exerciseconfig{composetitlesheet}[2]{\exerciseifempty{#2}%
- {\ifsolutions\getexerciseconfig{termsolutions}\else%
- \getexerciseconfig{termsheet}\fi\ #1}%
- {\ifsolutions\getexerciseconfig{termsolutions}\fi\ #2}}
-\exerciseconfig{composemetasheet}[2]{\if\draftver yDRAFT: \fi%
- \getexercisedata{course},
- \getexerciseconfig{composetitlesheet}{#1}{#2}}
+ {\ifsolutions\metaterm{solutions}\else%
+ \metaterm{sheet}\fi\ #1}%
+ {\ifsolutions\metaterm{solutions} \fi #2}}
% \end{macrocode}
-% Set general purpose metadata:
+% For child documents declare part of:
% \begin{macrocode}
-\exercisedata{title={\if\draftver yDRAFT: \fi%
- \getexercisedata{course}, \getexercisedata{material}}}
-\exercisedata{author={Niklas Beisert, \getexercisedata{institution}}}
-\exercisedata{subject={lecture series at \getexercisedata{institution},
- \getexercisedata{period}}}
+\ifchilddoc
+\metaset{partof}{\metatranslate[#1]{sheets} \metapick[#1]{course}}
+\fi
% \end{macrocode}
-% Redefine some terms:
+% Set general purpose metadata:
% \begin{macrocode}
-\exerciseconfig{termsheet}{sheet}
-\exerciseconfig{termsheets}{sample sheets}
-\exerciseconfig{termsolution}{Solution}
-\exerciseconfig{termsolutions}{solutions}
+\metaset[sep]{draft}{ -- }
+\metaset[sep]{subtitle}{, }
+\metaset{subtitle}{\ifsolutions\metatranslate[#1]{solutions} \fi%
+ \metaif[use]{sheettitle}{\metapick[#1]{sheettitle}}{\metapick[#1]{material}}}
+\metaset{subject}{Lecture Series,
+ \metapick[#1]{institution}, \metapick[#1]{period}}
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \paragraph{License.}
%
-% It is always useful to specify a copyright line
-% and a license for the document.
-% Define some restrictive default text.
+% It is good practice to specify a copyright line
+% and a license for the document:
% \begin{macrocode}
-\def\copyrightmessage
- {This document as well as its parts is protected by copyright.}
-\def\licensemessage
- {Reproduction of any part of this work in any form
- without prior written consent of \getexercisedata{institution}
- is not permissible.}
+\metaset{copyrightowner}{\metapick[#1]{author}}
+\ifchilddoc
+\metacopyright{doc}
+\else
+\metacopyright{doc-parts}
+\fi
+\metaset{licenseprovider}{of \metapick[#1]{institution}}
+\metalicense{consent}
% \end{macrocode}
% Apply Creative Commons BY-SA license
% under certain conditions (no solutions, final version):
% \begin{macrocode}
-\ifsolutions\else\if\draftver y\else
-\def\licensecctype{by-sa}
-\def\licenseccname{Attribution-ShareAlike \licenseccver{} International}
+\ifsolutions\else\ifdraft\else
+\metalicensecc{by-sa}
\fi\fi
% \end{macrocode}
-% Write applicable Creative Commons license information.
-% Use Creative Commons logos included in package \textsf{doclicense}:
-% \begin{macrocode}
-\ifdefined\licensecctype
-\ifdefined\licenseccver\else\def\licenseccver{4.0}\fi
-\def\licenseurl
- {https://creativecommons.org/licenses/\licensecctype/\licenseccver}
-\def\licensemessage{\texorpdfstring
- {This work is licensed under the Creative Commons ``\licenseccname'' License
- (CC \MakeUppercase{\licensecctype} \licenseccver).\par
- \IfFileExists{doclicense.sty}{
- \begin{center}\includegraphics{doclicense-CC-\licensecctype}\end{center}}{}
- To view a copy of this license, visit: \url{\licenseurl}}
- {This work is licensed under the Creative Commons \licenseccname{} License.}}
-\fi
-% \end{macrocode}
-
-% Write copyright and license as pdf metadata
-% (using package \textsf{hyperxmp} if available):
-% \begin{macrocode}
-\ifdefined\xmptilde
-\hypersetup{pdfcopyright={Copyright \getexercisedata{date}
- \getexercisedata{author}. \copyrightmessage{} \licensemessage}}
-\ifdefined\sourceurl\hypersetup{pdflicenseurl={\sourceurl}}\else
-\ifdefined\licenseurl\hypersetup{pdflicenseurl={\licenseurl}}\fi\fi
-\hypersetup{keeppdfinfo=true}
-\hypersetup{pdfsource={}}
-\XMPLangAlt{en}{pdfcopyright={Copyright \getexercisedata{date}
- \getexercisedata{author}. \copyrightmessage{} \licensemessage}}
-\fi
-% \end{macrocode}
-
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \paragraph{Body.}
%
@@ -2660,18 +2853,11 @@ xu:=1cm;
% Prepare a title page to display some relevant data:
% \begin{macrocode}
-\pdfbookmark[1]{Title Page}{title}
+\pdfbookmark[1]{\metaterm{title}}{title}
\thispagestyle{empty}
\vspace*{\fill}
\begin{center}
-\begingroup\bfseries\LARGE\getexercisedata{course}\par\endgroup
-\vspace{0.5cm}
-\begingroup\large\getexercisedata{material}\par\endgroup
-\vspace{0.5cm}
-\begingroup\large\getexercisedata{institution},
- \getexercisedata{period}\par\endgroup
-\vspace{2cm}
-\begingroup\scshape\Large\getexercisedata{instructor}\par\endgroup
+\metapick[course]{titletext}
\end{center}
\vspace*{\fill}\vspace*{\fill}
\newpage
@@ -2679,17 +2865,11 @@ xu:=1cm;
% Prepare a copyright and license page using data specified above:
% \begin{macrocode}
-\phantomsection\pdfbookmark[1]{Copyright}{copyright}
+\phantomsection\pdfbookmark[1]{\metaterm{copyright}}{copyright}
\thispagestyle{empty}
\vspace*{\fill}\vspace*{\fill}
-\begin{center}
-\begin{minipage}{11cm}\raggedright
-{\copyright} \getexercisedata{date} \getexercisedata{author}
-\par\medskip
-\copyrightmessage{}
-\licensemessage
-\ifdefined\sourcemessage\par\medskip\sourcemessage\fi
-\ifdefined\attributionmessage\par\medskip\attributionmessage\fi
+\begin{center}\begin{minipage}{11cm}\raggedright
+\metapick[print]{rightstext}
\end{minipage}\end{center}
\vspace*{\fill}\vspace*{\fill}\vspace*{\fill}
\newpage
@@ -2699,7 +2879,7 @@ xu:=1cm;
% \begin{macrocode}
\makeatletter\renewcommand\@pnumwidth{2.4em}\makeatother
\setcounter{tocdepth}{2}
-\phantomsection\pdfbookmark[1]{Contents}{contents}
+\phantomsection\pdfbookmark[1]{\metaterm{contents}}{contents}
{\parskip0pt\tableofcontents}
\exercisecleardoublepage\setcounter{page}{1}
% \end{macrocode}
@@ -2810,16 +2990,26 @@ xu:=1cm;
% where \textit{tag} is the tag of the problem
% (in order to avoid potential conflicts with other problems;
% \textit{tag} is assigned automatically or by specifying
-% the option |tag| for the |problem| environment):
+% the option |tag| for the |problem| environment).
+% Also declare a figure \textit{tag}|-solfig| for use within the solution:
% \begin{macrocode}
\ifdefined\mpostuse
\begin{mpostfig}[label={\problemtag-fig}]
interim xu:=1.5cm;
paths[1]:=fullcircle scaled 1xu;
-fill paths[1] withgreyscale 0.7;
-draw paths[1] withpen pencircle scaled 1pt;
+fillshape(paths[1], 0.7white) pensize(1pt);
label(btex \figure etex, center(paths[1]));
\end{mpostfig}
+\begin{onlysolutions}
+\begin{mpostfig}[label={\problemtag-solfig}]
+interim xu:=1.5cm;
+paths[1]:=fullcircle scaled 1xu;
+paths[2]:=((subpath (-2,2) of paths[1])--cycle) shifted (+0.5xu,0);
+paths[3]:=((subpath (2,6) of paths[1])--cycle) shifted (-0.5xu,0);
+fillshape(paths[2], 0.7white) pensize(1pt);
+fillshape(paths[3], 0.7white) pensize(1pt);
+\end{mpostfig}
+\end{onlysolutions}
\fi
% \end{macrocode}
@@ -2837,6 +3027,10 @@ label(btex \figure etex, center(paths[1]));
\begin{solution}
\lorem
+\begin{center}
+\ifdefined\mpostuse\mpostuse{\problemtag-solfig}\else figure\fi
+\end{center}
+\lorem
\end{solution}
\begin{subproblem}
@@ -3096,7 +3290,7 @@ function docompile
fwd="\\childdocforward[$srcmain]{$srcsec$num}"
fi
body="\\def\\jobname{$job}$optdef\\input{childdoc.def}$fwd"
- for pass in first main
+ for pass in first main extra
do
par="";
if [[ "$pass" == "first" ]]; then par="-draftmode"; fi
@@ -3105,7 +3299,8 @@ function docompile
pdflatex -shell-escape -interaction=batchmode $par \
-jobname "$trg" "$body" | grep -vE "$drop"
if [[ "$pass" != "main" ]]; then continue; fi
- if ! (grep -E -q "may have changed|rerunfilecheck Warning" "$trg.log"); then break; fi
+ if ! (grep -E -q "may have changed|rerunfilecheck Warning" "$trg.log")
+ then break; fi
done
grep -E "^! |Warning|Error|Undefined|Overfull|Underfull" "$trg.log"
}
@@ -3185,7 +3380,8 @@ SRCSECFILES = $(SECNUM:%=$(SRCSEC)%.tex)
TRGMAINFILES = $(foreach trg,$(TRGLIST),$(trg).pdf)
TRGSECFILES = $(foreach trg,$(TRGLIST),$(trg).pdf $(SECNUM:%=$(trg)%.pdf))
GENFILES = $(foreach trg,$(TRGLIST),$(trg).tex $(SECNUM:%=$(trg)%.tex))
-BAKFILES = $(PREREQS) $(SRCSECFILES) $(GENFILES) $(MAKEFILE) $(SCRIPT) $(SRCPRB)*
+BAKFILES = $(PREREQS) $(SRCSECFILES) $(GENFILES)\
+ $(MAKEFILE) $(SCRIPT) $(SRCPRB)*
% \end{macrocode}
%\iffalse$\fi
@@ -3228,12 +3424,12 @@ clean:
rm -f $(foreach ext,.aux .log,$(SECNUM:%=$(SRCSEC)%$(ext)))
rm -f $(foreach trg,$(TRGLIST),$(SECNUM:%=$(trg)%.log) $(trg).log)
rm -f $(foreach ext,.aux .log .out .toc,$(SRCMAIN)$(ext))
- rm -f $(foreach ext,.mp .mpx -*.mps -tmp.log -tmp.mp -tmp.mpx,$(SRCMAIN)$(ext))
+ rm -f $(foreach ext,.mp .mpx -*.mps,$(SRCMAIN)$(ext))
+ rm -f $(foreach ext,-tmp.log -tmp.mp -tmp.mpx,$(SRCMAIN)$(ext))
rm -f mpxerr.tex mpxerr.log mpxerr.dvi texput.log
rm -f $(patsubst %,$(SRCPRB)*%,.aux .log .mp .mpx -*.mps)
rm -f $(patsubst %,$(SRCPRB)*%,-tmp.log -tmp.mp -tmp.mpx)
% \end{macrocode}
-%\iffalse$\fi
% Define |clean-bak| target to remove all backup files
% ending in `|~|' or `|.bak|':
% \begin{macrocode}
@@ -3317,6 +3513,11 @@ clean-all: clean
\def\exf@csdo#1#2{\expandafter#1\csname#2\endcsname}
\def\exf@csdotwo#1#2#3{\exf@exptwo#1#2\csname#3\endcsname}
% \end{macrocode}
+% \macro{\exf@csor}
+% A macro to return |\csname| or default if not exists:
+% \begin{macrocode}
+\def\exf@csor#1#2{\ifcsname#1\endcsname\csname#1\endcsname\else#2\fi}
+% \end{macrocode}
% \macro{\exf@append@def}
% \macro{\exf@prepend@def}
@@ -3370,6 +3571,26 @@ clean-all: clean
\ifx#1\exf@empty\else\addcontentsline{toc}{#1}{#2}\fi}
% \end{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Auxiliary File Data Storage.}
+%
+% \macro{\exf@notedata}
+% Process stored data by handler:
+% \begin{macrocode}
+\newcommand{\exf@notedata}[3]{\csname exf@notedata@#1\endcsname{#2}{#3}}
+% \end{macrocode}
+% Make sure the macros in code written to the |.aux| file exist:
+% \begin{macrocode}
+\AtBeginDocument{\immediate\write\@auxout{%
+ \string\providecommand{\string\exf@notedata}[3]{}}}
+% \end{macrocode}
+% \macro{\exf@writedata}
+% Write data to the |.aux| file:
+% \begin{macrocode}
+\newcommand{\exf@writedata}[3]%
+ {\immediate\write\@auxout{\string\exf@notedata{#1}{#2}{#3}}}
+% \end{macrocode}
+
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \subsection{Package Setup}
% \label{sec:imp-setup}
@@ -3407,6 +3628,12 @@ clean-all: clean
\define@boolkey{exframe.sty}[exf@]{extstyle}[true]{}
% \end{macrocode}
+% Whether to load package \textsf{metastr}
+% (available while loading only):
+% \begin{macrocode}
+\define@boolkey{exframe.sty}[exf@]{metastr}[true]{}
+% \end{macrocode}
+
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \paragraph{Setup Options.}
%
@@ -3455,6 +3682,12 @@ clean-all: clean
% \begin{macrocode}
\define@boolkey{exf@setup}[exf@]{problembuf}[true]{}
% \end{macrocode}
+% \macro{\exf@emptytestchar}
+% Redefine character for testing emptyness:
+% \begin{macrocode}
+\def\exf@emptytestchar{&}
+\define@key{exf@setup}{emptytestchar}{\def\exf@emptytestchar{#1}}
+% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \paragraph{Processing.}
@@ -3471,6 +3704,17 @@ clean-all: clean
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Additional Packages.}
+%
+% Load \textsf{metastr} package if desired:
+% \begin{macrocode}
+\ifexf@metastr
+\PassOptionsToPackage{course=true}{metastr}
+\RequirePackage{metastr}
+\fi
+% \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \paragraph{Solutions Only Processing.}
%
% \macro{onlysolutions}
@@ -3534,8 +3778,10 @@ clean-all: clean
% Code to test whether |#1| (expanded) is empty;
% execute |#2| if empty, otherwise execute |#3|:
% \begin{macrocode}
-\long\def\exerciseifempty#1#2#3{\if&#1&#2\else#3\fi}
-\long\def\exerciseifnotempty#1#2{\if&#1&\else#2\fi}
+\long\def\exerciseifempty#1#2#3{%
+ \if\exf@emptytestchar#1\exf@emptytestchar#2\else#3\fi}
+\long\def\exerciseifnotempty#1#2{%
+ \if\exf@emptytestchar#1\exf@emptytestchar\else#2\fi}
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4041,12 +4287,24 @@ clean-all: clean
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \paragraph{Further Definitions.}
%
+% \macro{tagsheet}
+% \macro{tagproblem}
+% \macro{tagsubproblem}
+% Templates for automatic generation of tags:
+% \begin{macrocode}
+\exerciseconfig{tagsheet}{\arabic{\exf@sheetcounter}}
+\exerciseconfig{tagproblem}{\csname the\exf@problemcounter\endcsname}
+\exerciseconfig{tagsubproblem}{\problemtag-\arabic{\exf@subproblemcounter}}
+% \end{macrocode}
+
% \macro{labelsheet}
% \macro{labelproblem}
+% \macro{labelsubproblem}
% Templates for automatic generation of labels from tags:
% \begin{macrocode}
\exerciseconfig{labelsheet}[1]{sheet:#1}
\exerciseconfig{labelproblem}[1]{prob:#1}
+\exerciseconfig{labelsubproblem}[1]{\getexerciseconfig{labelproblem}{#1}}
% \end{macrocode}
% \macro{toclevel...}
@@ -4576,23 +4834,20 @@ clean-all: clean
\hypersetup{pdfsubject={\exf@data@subject}}\fi%
\ifx\exf@data@keyword\exf@empty\else%
\hypersetup{pdfkeywords={\exf@data@keyword}}\fi%
- \fi%
-% \end{macrocode}
-% Do not write again:
-% \begin{macrocode}
- \gdef\exf@metadata{off}}
+ \fi}
% \end{macrocode}
% Automatic writing at |\begin{document}|:
% \begin{macrocode}
-\AtBeginDocument{\exf@ifis\exf@metadata{auto}{\exf@writemetadata}}
+\AtBeginDocument{\exf@ifis\exf@metadata{auto}%
+ {\exf@writemetadata\gdef\exf@metadata{off}}}
% \end{macrocode}
% \macro{\writeexercisedata}
% Write metadata manually:
% \begin{macrocode}
-\newcommand{\writeexercisedata}{%
- \exf@ifis\exf@metadata{manual}{\exf@writemetadata}}
+\newcommand{\writeexercisedata}{\exf@ifis\exf@metadata{manual}%
+ {\exf@writemetadata\gdef\exf@metadata{off}}}
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4636,7 +4891,15 @@ clean-all: clean
\newcommand{\exf@numberproblemwithin}[1]{%
\@addtoreset{\exf@problemcounter}{#1}%
\exf@csdo\def{the\exf@problemcounter}%
- {\csname the#1\endcsname.\exf@config@counterproblem}}
+ {\csname the#1\endcsname.\exf@config@counterproblem}%
+ \edef\exf@tmp{#1}%
+ \ifx\exf@tmp\exf@sheetcounter%
+ \exerciseconfig{tagproblem}{\ifdefined\sheettag\sheettag-\fi%
+ \arabic{\exf@problemcounter}}%
+ \else%
+ \exerciseconfig{tagproblem}{\csname the#1\endcsname-%
+ \arabic{\exf@problemcounter}}%
+ \fi}
% \end{macrocode}
% \macro{\exf@numberequationwithin}
@@ -4917,13 +5180,13 @@ clean-all: clean
% \end{macrocode}
% \macro{\exf@scanpoints}
-% Call as |\exf@scanpoints#1|[\textit{regular}][|+|\textit{bonus}]|++&| to
+% Call as |\exf@scanpoints#1|[\textit{regular}][|+|\textit{bonus}]|++@| to
% write |{|\textit{regular}|}{|\textit{bonus}|}| into |#1|;
% fill with 0 if empty:
% \begin{macrocode}
-\def\exf@scanpoints#1#2+#3+#4&{%
- \edef#1{\if&#2&0\else#2\fi}%
- \edef#1{{#1}{\if&#3&0\else#3\fi}}}
+\def\exf@scanpoints#1#2+#3+#4@{%
+ \edef#1{\if @#2@0\else#2\fi}%
+ \edef#1{{#1}{\if @#3@0\else#3\fi}}}
% \end{macrocode}
% \macro{\exf@formatpoints}
% Format as [|#1|][|+#2|]; remove 0 components:
@@ -4938,7 +5201,7 @@ clean-all: clean
\newcommand{\extractpoints}{\@ifstar{\exf@extractpoints\@secondoftwo}%
{\exf@extractpoints\@firstoftwo}}
\newcommand{\exf@extractpoints}[2]{\edef\exf@tmp{#2}%
- \exf@exptwo\exf@scanpoints\exf@tmp\exf@tmp++&%
+ \exf@exptwo\exf@scanpoints\exf@tmp\exf@tmp++@%
\expandafter#1\exf@tmp}
% \end{macrocode}
@@ -4947,7 +5210,7 @@ clean-all: clean
% and execute one of three:
% \begin{macrocode}
\newcommand{\switchpoints}[5]{\edef\exf@tmp{#5}%
- \exf@exptwo\exf@scanpoints\exf@tmp\exf@tmp++&%
+ \exf@exptwo\exf@scanpoints\exf@tmp\exf@tmp++@%
\expandafter\exf@switchpoints\exf@tmp{#1}{#2}{#3}{#4}}
\newcommand{\exf@switchpoints}[6]{%
\ifdim#2pt=0pt\ifdim#1pt=0pt\def\exf@tmp##1##2{#6}%
@@ -5016,8 +5279,8 @@ clean-all: clean
\edef\exf@tmp{#1}%
\expandafter\exf@splitsign\exf@tmp--&%
\expandafter\exf@splitdecimal\exf@splitnum..&%
- \if&\exf@splitint&\def\exf@splitint{0}\fi%
- \if&\exf@splitdec&\def\exf@splitdec{0}\fi%
+ \if @\exf@splitint @\def\exf@splitint{0}\fi%
+ \if @\exf@splitdec @\def\exf@splitdec{0}\fi%
\def\exf@tmp{\exf@splitint.\exf@splitdec}%
\ifnum\exf@splitdec=0\def\exf@tmp{\exf@splitint}\fi%
\ifnum\exf@splitdec=5\def\exf@tmp{\exf@config@frac{\exf@splitint}{1}{2}}\fi%
@@ -5036,8 +5299,8 @@ clean-all: clean
% such as 12$^3\mskip-4mu/\mskip-2mu_4$:
% \begin{macrocode}
\newcommand{\exf@config@frac}[3]{%
- \ifnum#1=0\else#1\fi%
- \ifnum#2=0\else$%
+ \ifnum#1=0\relax\else#1\fi%
+ \ifnum#2=0\relax\else$%
^{\exf@text{#2}}%
\mskip-4mu/\mskip-2mu%
_{\exf@text{#3}}$\fi}
@@ -5046,71 +5309,49 @@ clean-all: clean
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \paragraph{Sheet Points Code.}
%
-% \macro{\exf@notesheetpoints}
+% \macro{\exf@notedata@sheetpoints}
% Store a sheet point number in a macro:
% \begin{macrocode}
-\newcommand{\exf@notesheetpoints}[2]{%
+\newcommand{\exf@notedata@sheetpoints}[2]{%
\exf@csdo\gdef{exf@sheetpoints@#1}{#2}}
% \end{macrocode}
-% Make sure the macros in code written to the |.aux| file exist:
-% \begin{macrocode}
-\AtBeginDocument{\immediate\write\@auxout{%
- \string\providecommand{\string\exf@notesheetpoints}[2]{}}}
-% \end{macrocode}
% \macro{\exf@writesheetpoints}
% Write sheet points to the |.aux| file:
% \begin{macrocode}
\newcommand{\exf@writesheetpoints}[2]%
- {\immediate\write\@auxout{\string\exf@notesheetpoints{\sheettag}%
- {\exf@formatpoints{#1}{#2}}}}
+ {\exf@writedata{sheetpoints}{\sheettag}{\exf@formatpoints{#1}{#2}}}
% \end{macrocode}
% \macro{\getsheetpoints}
% Read points for current sheet or from |.aux| file:
% \begin{macrocode}
-\newcommand{\getsheetpoints}[1]{\if&#1&%
+\newcommand{\getsheetpoints}[1]{\if @#1@%
\ifdefined\exf@sheet@points%
\expandafter\exf@formatpoints\exf@sheet@points\else 0\fi%
- \else\ifcsname exf@sheetpoints@#1\endcsname%
- \csname exf@sheetpoints@#1\endcsname\else 0\fi\fi}
+ \else\exf@csor{exf@sheetpoints@#1}{0}\fi}
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \paragraph{Problem Points Code.}
%
-% \macro{\exf@noteproblempoints}
+% \macro{\exf@notedata@problempoints}
% Store a problem point number in a macro:
% \begin{macrocode}
-\newcommand{\exf@noteproblempoints}[2]{%
+\newcommand{\exf@notedata@problempoints}[2]{%
\exf@csdo\gdef{exf@problempoints@#1}{#2}}
% \end{macrocode}
-% Make sure the macros written to the |.aux| file exist:
-% \begin{macrocode}
-\AtBeginDocument{\immediate\write\@auxout{%
- \string\providecommand{\string\exf@noteproblempoints}[2]{}}}
-% \end{macrocode}
% \macro{\exf@writeproblempoints}
% Write problem points to the |.aux| file:
% \begin{macrocode}
\newcommand{\exf@writeproblempoints}[2]%
- {\immediate\write\@auxout{\string\exf@noteproblempoints{\problemtag}%
- {\exf@formatpoints{#1}{#2}}}}
+ {\exf@writedata{problempoints}{\problemtag}{\exf@formatpoints{#1}{#2}}}
% \end{macrocode}
% \macro{\getproblempoints}
% Read points for current problem or from |.aux| file:
% \begin{macrocode}
-\newcommand{\getproblempoints}[1]{\if&#1&%
+\newcommand{\getproblempoints}[1]{\if @#1@%
\ifdefined\exf@problem@points%
\expandafter\exf@formatpoints\exf@problem@points\else 0\fi%
- \else\ifcsname exf@problempoints@#1\endcsname%
- \csname exf@problempoints@#1\endcsname\else 0\fi\fi}
-% \end{macrocode}
-% \macro{\getsubproblempoints}
-% Read points for current subproblem:
-% \begin{macrocode}
-\newcommand{\getsubproblempoints}[1]{\if&#1&%
- \ifdefined\exf@subproblem@points%
- \expandafter\exf@formatpoints\exf@subproblem@points\else 0\fi%
- \else 0\fi}
+ \else\exf@csor{exf@problempoints@#1}{0}\fi}
% \end{macrocode}
% \macro{\showpoints}
@@ -5127,13 +5368,38 @@ clean-all: clean
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Subproblem Points Code.}
+%
+% \macro{\exf@notedata@subproblempoints}
+% Store a subproblem point number in a macro:
+% \begin{macrocode}
+\newcommand{\exf@notedata@subproblempoints}[2]{%
+ \exf@csdo\gdef{exf@subproblempoints@#1}{#2}}
+% \end{macrocode}
+% \macro{\exf@writesubproblempoints}
+% Write subproblem points to the |.aux| file:
+% \begin{macrocode}
+\newcommand{\exf@writesubproblempoints}[2]%
+ {\exf@writedata{subproblempoints}%
+ {\subproblemtag}{\exf@formatpoints{#1}{#2}}}
+% \end{macrocode}
+% \macro{\getsubproblempoints}
+% Read points for current subproblem:
+% \begin{macrocode}
+\newcommand{\getsubproblempoints}[1]{\if @#1@%
+ \ifdefined\exf@subproblem@points%
+ \expandafter\exf@formatpoints\exf@subproblem@points\else 0\fi%
+ \else\exf@csor{exf@subproblempoints@#1}{0}\fi}
+% \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \paragraph{Solution Points Code.}
%
% \macro{\exf@awardpointsalt}
% Award points for alternative or optional solution;
% does not count towards solution total:
% \begin{macrocode}
-\newcommand{\exf@awardpointsalt}[2][]{\exf@scanpoints\exf@tmp#2++&%
+\newcommand{\exf@awardpointsalt}[2][]{\exf@scanpoints\exf@tmp#2++@%
\exf@exptwo\exf@ensuretext{%
\expandafter\exf@config@composepointspairawardalt\exf@tmp{#1}}}
% \end{macrocode}
@@ -5141,9 +5407,9 @@ clean-all: clean
% Award points for regular solution;
% counts towards solution total:
% \begin{macrocode}
-\newcommand{\exf@awardpointsreg}[2][]{\exf@scanpoints\exf@tmp#2++&%
+\newcommand{\exf@awardpointsreg}[2][]{\exf@scanpoints\exf@tmp#2++@%
\exf@exptwo\exf@addtopoints\exf@solution@points@total\exf@tmp%
- \exf@scanpoints\exf@tmp#2++&%
+ \exf@scanpoints\exf@tmp#2++@%
\exf@exptwo\exf@ensuretext{%
\expandafter\exf@config@composepointspairaward\exf@tmp{#1}}}
% \end{macrocode}
@@ -5156,21 +5422,123 @@ clean-all: clean
% \macro{\getsolutionpoints}
% Read points for current solution:
% \begin{macrocode}
-\newcommand{\getsolutionpoints}[1]{\if&#1&%
+\newcommand{\getsolutionpoints}[1]{\if @#1@%
\ifdefined\exf@solution@points%
\expandafter\exf@formatpoints\exf@solution@points\else 0\fi%
\else 0\fi}
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Tag Lists}
+% \label{sec:imp-taglist}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Loop Lists.}
+%
+% \macro{exerciseloop}
+% \macro{exf@loopdepth}
+% Counters for item number within list and depth of loop nesting:
+% \begin{macrocode}
+\newcounter{exerciseloop}
+\newcounter{exf@loopdepth}
+% \end{macrocode}
+
+% \macro{exf@listwalk}
+% Step through a list;
+% call the callback function |#1| with current item |#2|:
+% \begin{macrocode}
+\def\exf@listwalk#1#2{\if @#2@\def\exf@tmp{}\else%
+ \def\exf@tmp{#1{#2}\exf@listwalk#1}\fi\exf@tmp}
+% \end{macrocode}
+
+% \macro{\exerciseloop}
+% Loop through a list of items in braces |#1|
+% which is expanded first;
+% store code |#2| to be executed in a callback function
+% (need to use different callback function for each loop depth,
+% callback function must be global to work within table cells);
+% initialise item counter:
+% \begin{macrocode}
+\newcommand{\exerciseloop}[2]{\addtocounter{exf@loopdepth}{1}%
+ \setcounter{exerciseloop}{0}%
+ \exf@csdo\gdef{exf@listcallback@\roman{exf@loopdepth}}##1%
+ {\stepcounter{exerciseloop}#2}%
+ \edef\exf@tmp{#1}%
+ \exf@csdotwo\exf@exptwo\exf@listwalk%
+ {exf@listcallback@\roman{exf@loopdepth}}\exf@tmp{}%
+ \addtocounter{exf@loopdepth}{-1}}
+% \end{macrocode}
+% \macro{\exerciseloopstr}
+% Loop through list and save result to |\exerciseloopret|
+% (or optional argument |#1|):
+% \begin{macrocode}
+\newcommand{\exerciseloopstr}[3][\exerciseloopret]{%
+ \def#1{}\exerciseloop{#2}{\protected@edef#1{#1#3}}}
+% \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Lists Management.}
+%
+% \macro{\exf@notedata@sheet}
+% Store a sheet tag:
+% \begin{macrocode}
+\def\exf@sheetlist{}
+\newcommand{\exf@notedata@sheet}[2]{%
+ \xdef\exf@sheetlist{\exf@sheetlist{#1}}}
+% \end{macrocode}
+% \macro{\exf@notedata@problem}
+% Store a problem tag:
+% \begin{macrocode}
+\def\exf@problemlist{}
+\newcommand{\exf@notedata@problem}[2]{%
+ \xdef\exf@problemlist{\exf@problemlist{#1}}%
+ \if @#2@\else%
+ \ifcsname exf@problemlist@#2\endcsname\else%
+ \exf@csdo\gdef{exf@problemlist@#2}{}\fi%
+ \exf@csdo\xdef{exf@problemlist@#2}%
+ {\csname exf@problemlist@#2\endcsname{#1}}%
+ \fi}
+% \end{macrocode}
+% \macro{\exf@notedata@subproblem}
+% Store a subproblem tag:
+% \begin{macrocode}
+\newcommand{\exf@notedata@subproblem}[2]{%
+ \ifcsname exf@subproblemlist@#2\endcsname\else%
+ \exf@csdo\gdef{exf@subproblemlist@#2}{}\fi%
+ \exf@csdo\xdef{exf@subproblemlist@#2}%
+ {\csname exf@subproblemlist@#2\endcsname{#1}}}
+% \end{macrocode}
+
+% \macro{\getsheetlist}
+% \macro{\getproblemlist}
+% \macro{\getsubproblemlist}
+% Get list of sheet tags,
+% problem tags (all, within current or particular sheet),
+% subproblem tags (within current or particular problem):
+% \begin{macrocode}
+\newcommand{\getsheetlist}[1]{\exf@sheetlist}
+\newcommand{\getproblemlist}[1]{\if @#1@%
+ \ifdefined\sheettag\exf@csor{exf@problemlist@\sheettag}{}%
+ \else\exf@problemlist\fi%
+ \else%
+ \if *#1\exf@problemlist\else\exf@csor{exf@problemlist@#1}{}\fi%
+ \fi}
+\newcommand{\getsubproblemlist}[1]{\if @#1@%
+ \exf@csor{exf@subproblemlist@\problemtag}{}\else%
+ \exf@csor{exf@subproblemlist@#1}{}\fi}
+% \end{macrocode}
+
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \subsection{Sheet Environment}
% \label{sec:imp-sheet}
%
% \macro{exf@sheet}
% Define options for |sheet| environment:
% \begin{macrocode}
-\define@key{exf@sheet}{points}{\exf@scanpoints\exf@sheet@points#1++&}
-\define@key{exf@sheet}{number}{\setcounter{\exf@sheetcounter}{#1}}
+\define@key{exf@sheet}{points}{\exf@scanpoints\exf@sheet@points#1++@}
+\define@key{exf@sheet}{number}{\setcounter{\exf@sheetcounter}{#1}%
+ \addtocounter{\exf@sheetcounter}{-1}\refstepcounter{\exf@sheetcounter}}
\define@key{exf@sheet}{label}{\def\exf@label{#1}}
\define@key{exf@sheet}{tag}{\def\sheettag{#1}}
% \end{macrocode}
@@ -5197,7 +5565,7 @@ clean-all: clean
% Reset optional arguments, process arguments:
% \begin{macrocode}
\let\exf@sheet@points\@undefined%
- \def\sheettag{\csname the\exf@sheetcounter\endcsname}%
+ \def\sheettag{\getexerciseconfig{tagsheet}}%
\let\exf@sheet@points@total\@undefined%
\let\exf@label\@undefined%
\setkeys{exf@sheet}{#1}%
@@ -5206,6 +5574,7 @@ clean-all: clean
% \begin{macrocode}
\ifexf@autolabelsheet\label{\exf@config@labelsheet{\sheettag}}\fi%
\ifdefined\exf@label\label{\exf@label}\fi%
+ \exf@writedata{sheet}{\sheettag}{}%
% \end{macrocode}
% Set points from explicit input or from |.aux| storage:
% \begin{macrocode}
@@ -5215,7 +5584,7 @@ clean-all: clean
\let\exf@sheet@points@given\@undefined%
\ifcsname exf@sheetpoints@\sheettag\endcsname%
\exf@csdotwo\let\exf@tmp{exf@sheetpoints@\sheettag}%
- \exf@exptwo\exf@scanpoints\exf@sheet@points\exf@tmp++&%
+ \exf@exptwo\exf@scanpoints\exf@sheet@points\exf@tmp++@%
\fi\fi%
% \end{macrocode}
% Process metadata:
@@ -5225,7 +5594,7 @@ clean-all: clean
\let\exf@data@author\exf@data@sheet@author\fi%
\def\exf@data@title{\exf@config@composemetasheet%
{\csname the\exf@sheetcounter\endcsname}{\exf@data@sheet@rawtitle}}%
- \exf@writemetadata}}%
+ \exf@writemetadata}\gdef\exf@metadata{off}}%
% \end{macrocode}
% Insert hook code:
% \begin{macrocode}
@@ -5306,7 +5675,7 @@ clean-all: clean
% \macro{exf@problem}
% Define options for |problem| environment:
% \begin{macrocode}
-\define@key{exf@problem}{points}{\exf@scanpoints\exf@problem@points#1++&}
+\define@key{exf@problem}{points}{\exf@scanpoints\exf@problem@points#1++@}
\define@key{exf@problem}{label}{\def\exf@label{#1}}
\define@key{exf@problem}{tag}{\def\problemtag{#1}}
\define@key{exf@problem}{sollabel}{\xdef\exf@sollabel{#1}}
@@ -5346,7 +5715,7 @@ clean-all: clean
% Initialise variables, process arguments:
% \begin{macrocode}
\exf@init@block{\exf@config@skipprobleminfo}%
- \def\problemtag{\csname the\exf@problemcounter\endcsname}%
+ \def\problemtag{\getexerciseconfig{tagproblem}}%
\let\exf@problem@points\@undefined%
\let\exf@label\@undefined%
\global\let\exf@sollabel\@undefined%
@@ -5357,6 +5726,7 @@ clean-all: clean
% \begin{macrocode}
\ifexf@autolabelproblem\label{\exf@config@labelproblem{\problemtag}}\fi%
\ifdefined\exf@label\label{\exf@label}\fi%
+ \exf@writedata{problem}{\problemtag}{\ifdefined\sheettag\sheettag\fi}%
% \end{macrocode}
% Mark for new solution section; remember problem counter, title:
% \begin{macrocode}
@@ -5382,7 +5752,7 @@ clean-all: clean
\let\exf@problem@points@given\@undefined%
\ifcsname exf@problempoints@\problemtag\endcsname%
\exf@csdotwo\let\exf@tmp{exf@problempoints@\problemtag}%
- \exf@exptwo\exf@scanpoints\exf@problem@points\exf@tmp++&%
+ \exf@exptwo\exf@scanpoints\exf@problem@points\exf@tmp++@%
\fi\fi%
\global\let\exf@prevpoints\exf@problem@points%
\let\exf@problem@points@show\@undefined%
@@ -5490,8 +5860,10 @@ clean-all: clean
\ifdefined\exf@problem@points%
\expandafter\exf@writeproblempoints\exf@problem@points%
\exf@exptwo\exf@addtopoints\exf@sheet@points@total\exf@problem@points%
- \fi%
- \ifdefined\exf@problem@points\else\ifdefined\exf@sheet@points@total%
+% \end{macrocode}
+% Warn if no points given for present problem but previously:
+% \begin{macrocode}
+ \else\ifdefined\exf@sheet@points@total%
\PackageWarning{exframe}{no points defined for \exf@problemname}%
\fi\fi%
% \end{macrocode}
@@ -5743,8 +6115,9 @@ clean-all: clean
% \macro{exf@subproblem}
% Define options for |subproblem| environment:
% \begin{macrocode}
-\define@key{exf@subproblem}{points}{\exf@scanpoints\exf@subproblem@points#1++&}
+\define@key{exf@subproblem}{points}{\exf@scanpoints\exf@subproblem@points#1++@}
\define@key{exf@subproblem}{label}{\def\exf@label{#1}}
+\define@key{exf@subproblem}{tag}{\def\subproblemtag{#1}}
% \end{macrocode}
% \macro{subproblem}
@@ -5769,13 +6142,17 @@ clean-all: clean
% Initialise variables, process arguments:
% \begin{macrocode}
\exf@init@block{\exf@config@skipsubprobleminfo}%
+ \def\subproblemtag{\getexerciseconfig{tagsubproblem}}%
\let\exf@subproblem@points\@undefined%
\let\exf@label\@undefined%
\setkeys{exf@subproblem,exf@probleminfo}{#1}%
% \end{macrocode}
-% Process manual label:
+% Process automatic and manual labels:
% \begin{macrocode}
+ \ifexf@autolabelproblem\label{\exf@config@labelsubproblem%
+ {\subproblemtag}}\fi%
\ifdefined\exf@label\label{\exf@label}\fi%
+ \exf@writedata{subproblem}{\subproblemtag}{\problemtag}%
% \end{macrocode}
% Remember subproblem counter for solution:
% \begin{macrocode}
@@ -5785,7 +6162,7 @@ clean-all: clean
\csname theH\exf@subproblemcounter\endcsname}%
\fi%
% \end{macrocode}
-% Remeber points for display;
+% Remember points for display;
% disable points display if desired:
% \begin{macrocode}
\let\exf@subproblem@points@show\@undefined%
@@ -5793,19 +6170,18 @@ clean-all: clean
\let\exf@subproblem@points@show\exf@subproblem@points\fi%
\exf@ifis\exf@subpointsat{off}{\let\exf@subproblem@points@show\@undefined}%
% \end{macrocode}
-% Add given points to problem total:
+% Write points to |.aux| file; add to problem total:
% \begin{macrocode}
\ifdefined\exf@subproblem@points%
\global\let\exf@prevpoints\exf@subproblem@points%
+ \expandafter\exf@writesubproblempoints\exf@subproblem@points%
\exf@exptwo\exf@addtopoints\exf@problem@points@total\exf@subproblem@points%
% \end{macrocode}
% Warn if no points given for present subproblem but previously:
% \begin{macrocode}
- \else%
- \ifdefined\exf@problem@points@total%
- \PackageWarning{exframe}{no points defined for \exf@subproblemname}%
- \fi%
- \fi%
+ \else\ifdefined\exf@problem@points@total%
+ \PackageWarning{exframe}{no points defined for \exf@subproblemname}%
+ \fi\fi%
% \end{macrocode}
% Display points in opening line if desired;
% expand points into argument and remove points:
@@ -5912,7 +6288,7 @@ clean-all: clean
\define@key{exf@solution}{sheettag}{\def\sheettag{#1}}
\define@key{exf@solution}{href}{\def\exf@solhref{#1}}
\define@key{exf@solution}{label}{\def\exf@label{#1}}
-\define@key{exf@solution}{points}{\exf@scanpoints\exf@solution@points#1++&}
+\define@key{exf@solution}{points}{\exf@scanpoints\exf@solution@points#1++@}
\define@key{exf@solution}{probtitle}{\def\exf@solprobtitle{#1}}
% \end{macrocode}
@@ -5963,7 +6339,7 @@ clean-all: clean
% \begin{macrocode}
\ifdefined\exf@label\label{\exf@label}\fi%
% \end{macrocode}
-% Remeber points for display;
+% Remember points for display;
% disable points display if desired:
% \begin{macrocode}
\let\exf@solution@points@show\@undefined%
@@ -6399,6 +6775,184 @@ clean-all: clean
{\exf@config@composetitlesolutionmulti}{\exf@solutionstitle}}
% \end{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Interaction with metastr}
+% \label{sec:imp-metastr}
+%
+% This package transfers some functionality
+% to the package \textsf{metastr} when loaded
+% previously (preferably with package option |course|)
+% by the package option |metastr|.
+% The following changes apply:
+% \begin{itemize}
+% \item
+% The terms specified by the configuration options |term...|,
+% see \secref{sec:imp-config},
+% are transferred to the corresponding term registers
+% |\metaterm{...}| in \textsf{metastr}.
+% This can facilitate internationalisation,
+% and suitable words for English, German, French and Spanish are provided.
+% \item
+% Metadata as described in \secref{sec:metadata}
+% should be filled via |\metaset| rather than |\exercisedata|.
+% The present package will read it from the \textsf{metastr} registers.
+% \item
+% Basic PDF metadata is written automatically or manually
+% as described in \secref{sec:metadata}.
+% This is done via |\metawritepdfinfo|,
+% consequently, automatic writing of these basic metadata
+% is disabled in \textsf{metastr}.
+% \item
+% Sheet-specific metadata (package option |pdfdata=sheet|)
+% is handled via the \textsf{metastr} registers |sheettitle| and |sheetdata|
+% rather than |composemetasheet|.
+% \end{itemize}
+%
+% Apply modifications only when package \textsf{metastr} is loaded:
+% \begin{macrocode}
+\ifdefined\metaset
+% \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Transfer Metadata.}
+%
+% Import basic data from \textsf{metastr}:
+% \begin{macrocode}
+\exercisedata{author={\metapick[]{author}}}
+\exercisedata{title={\metapick[]{title}}}
+\exercisedata{subject={\metapick[]{subject}}}
+\exercisedata{keyword={\metapick[]{keyword}}}
+\exercisedata{date={\metapick[]{date}}}
+% \end{macrocode}
+% Import course data from \textsf{metastr}:
+% \begin{macrocode}
+\ifdefined\mstr@def@course
+\exercisedata{course={\metapick[]{course}}}
+\exercisedata{instructor={\metapick[]{instructor}}}
+\exercisedata{institution={\metapick[]{institution}}}
+\exercisedata{period={\metapick[]{period}}}
+\exercisedata{material={\metapick[]{material}}}
+\fi
+% \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Sheet Data.}
+%
+% \macro{sheettitle}
+% \macro{sheetauthor}
+% Registers for sheet title and author:
+% \begin{macrocode}
+\metadef{sheettitle}
+\metadef{sheetauthor}
+% \end{macrocode}
+
+% \macro{\exf@writemetadata}
+% Write PDF metadata via \textsf{metastr} package,
+% let \textsf{exframe} initiate process (especially for sheet):
+% \begin{macrocode}
+\metaunset[info]{writepdf}
+\def\exf@writemetadata{%
+ \exf@ifis\exf@metadata{sheet}{\metaset[use]{sheettitle}{}}%
+ \metawritepdfinfo%
+ \exf@ifis\exf@metadata{sheet}{\metaunset[use]{sheettitle}}}
+% \end{macrocode}
+
+% Fill registers:
+% \begin{macrocode}
+\metaset{sheetauthor}{\exerciseifempty{\getsheetdata{author}}%
+ {\metapick[#1]{instructor}}{\getsheetdata{author}}}
+\metaset{sheettitle}{\exerciseifempty{\getsheetdata{rawtitle}}%
+ {\metatranslate[#1]{sheet} \thesheet}%
+ {\getsheetdata{rawtitle}}}
+\metaset{author}{\exerciseifempty{\getsheetdata{author}}%
+ {\metapick[#1]{instructor}}{\metapick[#1]{sheetauthor}}}
+\metaset{subtitle}{%
+ \metaif[use]{sheettitle}
+ {\metapick[#1]{sheettitle}}
+ {\metapick[#1]{material}}}
+% \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Terms.}
+%
+% \macro{term...}
+% Transfer term definitions to \textsf{metastr}:
+% \begin{macrocode}
+\exerciseconfig{termsheet}{\metaterm{sheet}}
+\exerciseconfig{termsheets}{\metaterm{sheets}}
+\exerciseconfig{termproblem}{\metaterm{problem}}
+\exerciseconfig{termproblems}{\metaterm{problems}}
+\exerciseconfig{termsolution}{\metaterm{solution}}
+\exerciseconfig{termsolutions}{\metaterm{solutions}}
+\exerciseconfig{termpoint}{\metaterm{point}}
+\exerciseconfig{termpoints}{\metaterm{points}}
+% \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Translations.}
+%
+% English:
+% \begin{macrocode}
+\ifdefined\mstr@lang@en
+\metasetterm[en]{sheet}{Sheet}
+\metasetterm[en]{sheets}{Sheets}
+\metasetterm[en]{problem}{Problem}
+\metasetterm[en]{problems}{Problems}
+\metasetterm[en]{solution}{Solution}
+\metasetterm[en]{solutions}{Solutions}
+\metasetterm[en]{point}{point}
+\metasetterm[en]{points}{points}
+\fi
+% \end{macrocode}
+
+% German:
+% \begin{macrocode}
+\ifdefined\mstr@lang@de
+\metasetterm[de]{sheet}{Blatt}
+\metasetterm[de]{sheets}{Blätter}
+\metasetterm[de]{problem}{Aufgabe}
+\metasetterm[de]{problems}{Aufgaben}
+\metasetterm[de]{solution}{L\"osung}
+\metasetterm[de]{solutions}{L\"osungen}
+\metasetterm[de]{point}{Punkt}
+\metasetterm[de]{points}{Punkte}
+\fi
+% \end{macrocode}
+
+% French:
+% \begin{macrocode}
+\ifdefined\mstr@lang@fr
+\metasetterm[fr]{sheet}{Feuille}
+\metasetterm[fr]{sheets}{Feuilles}
+\metasetterm[fr]{problem}{Probl\`eme}
+\metasetterm[fr]{problems}{Probl\`emes}
+\metasetterm[fr]{solution}{Solution}
+\metasetterm[fr]{solutions}{Solutions}
+\metasetterm[fr]{point}{point}
+\metasetterm[fr]{points}{points}
+\fi
+% \end{macrocode}
+
+% Spanish:
+% \begin{macrocode}
+\ifdefined\mstr@lang@es
+\metasetterm[es]{sheet}{Hoja}
+\metasetterm[es]{sheets}{Hojas}
+\metasetterm[es]{problem}{Problema}
+\metasetterm[es]{problems}{Problemas}
+\metasetterm[es]{solution}{Solucion}
+\metasetterm[es]{solutions}{Soluciones}
+\metasetterm[es]{point}{punto}
+\metasetterm[es]{points}{puntos}
+\fi
+% \end{macrocode}
+
+% Close \textsf{metastr} conditional:
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\iffalse
%</package>
%\fi
diff --git a/macros/latex/contrib/exframe/exframe.pdf b/macros/latex/contrib/exframe/exframe.pdf
index e9886cb930..fe95c96fec 100644
--- a/macros/latex/contrib/exframe/exframe.pdf
+++ b/macros/latex/contrib/exframe/exframe.pdf
Binary files differ
diff --git a/macros/latex/contrib/fmtcount/CHANGES b/macros/latex/contrib/fmtcount/CHANGES
index b36551c14b..ce54ab42c8 100644
--- a/macros/latex/contrib/fmtcount/CHANGES
+++ b/macros/latex/contrib/fmtcount/CHANGES
@@ -1,5 +1,10 @@
fmtcount package versions:
+Version 3.07:
+
+* Make french definition robust against cleveref 0.21.4 dirty handling
+ of conditionals. See https://github.com/nlct/fmtcount/pull/36.
+
Version 3.06:
* Fix French documentation « mille » → « mil » where applicable.
diff --git a/macros/latex/contrib/fmtcount/README b/macros/latex/contrib/fmtcount/README
index c287533f4a..8a4fa7e918 100644
--- a/macros/latex/contrib/fmtcount/README
+++ b/macros/latex/contrib/fmtcount/README
@@ -1,6 +1,11 @@
-LaTeX Package : fmtcount v3.06
+LaTeX Package : fmtcount v3.07
-Last Modified : 2020-01-30
+
+(c) Copyright 2000-2013 Nicola LC Talbot
+(c) Copyright 2013-2020 Nicola LC Talbot and Vincent Bela\"iche
+
+
+Last Modified : 2020-02-24
Author : Nicola Talbot and Vincent Belaïche
@@ -46,8 +51,7 @@ directory (e.g. texmf/doc/latex/fmtcount/).
Read the file CHANGES for version changes.
-This material is subject to the LaTeX Project Public License.
-See http://mirror.ctan.org/help/Cataloague/licenses.lppl.html for
-the details of that license.
+This material is subject to the LaTeX Project Public License. See
+https://www.ctan.org/license/lppl for the details of that license.
http://www.dickimaw-books.com/
diff --git a/macros/latex/contrib/fmtcount/fmtcount.dtx b/macros/latex/contrib/fmtcount/fmtcount.dtx
index 910ff33571..0525133f83 100644
--- a/macros/latex/contrib/fmtcount/fmtcount.dtx
+++ b/macros/latex/contrib/fmtcount/fmtcount.dtx
@@ -1,11 +1,11 @@
%\iffalse
% fmtcount.dtx generated using makedtx version 1.2 (c) Nicola Talbot
% Command line args:
+% -src "(.+)\.(sty|def)$=>\1.\2"
% -doc "fmtcount-manual.tex"
% -author "Nicola Talbot and Vincent Belache"
-% -src "(.+)\.(sty|def)$=>\1.\2"
% fmtcount
-% Created on 2020/1/28 8:17
+% Created on 2020/2/24 20:03
%\fi
%\iffalse
%<*package>
@@ -77,7 +77,7 @@
pdftitle={fmtcount.sty: Displaying the Values of LaTeX Counters},
pdfkeywords={LaTeX,counter}]{hyperref}
-\CheckSum{10311}
+\CheckSum{10315}
\doxitem{Option}{option}{options}
@@ -104,7 +104,7 @@
% \url{www.dickimaw-books.com}
% \and
% Vincent Bela\"iche}
-% \date{2020-01-30 (version 3.06)\relax
+% \date{2020-02-24 (version 3.07)\relax
%}
% \maketitle
% \tableofcontents
@@ -1804,7 +1804,7 @@ this number}%
% \subsubsection{fc-french.def}
% Definitions for French.
% \begin{macrocode}
-\ProvidesFCLanguage{french}[2017/06/15]%
+\ProvidesFCLanguage{french}[2020/02/24]%
% \end{macrocode}
% Package \styfmt{fcprefix} is needed to format the prefix \meta{$n$}
% in \meta{$n$}illion or \meta{$n$}illiard. Big numbers were
@@ -3447,15 +3447,21 @@ z\'ero%
\count0=0 %
\fi
\ifnum\count0=1 %
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
% \end{macrocode}
% \changes{3.01}{2014-11-10}{Protect \cs{`}, for solving
% \uref{http://github.com/nlct/fmtcount/issues/15}{Issue \#15}}
% \begin{macrocode}
+ {%
\protected@edef\@tempa{\expandafter\fc@wcase\fc@first\@nil}%
- \else
+ }%
% \end{macrocode}
% Now we tamper a little bit with the plural handling options to ensure that there is no final plural mark.
% \begin{macrocode}
+ {%
\def\@tempa##1{%
\expandafter\edef\csname fc@frenchoptions@##1@plural\endcsname{%
\ifcase\csname fc@frenchoptions@##1@plural\endcsname\space
@@ -3518,7 +3524,7 @@ z\'ero%
\fi
\fi
\fi
- \fi
+ }%
% \end{macrocode}
% Apply \cs{fc@gcase} to the result.
% \begin{macrocode}
@@ -7480,7 +7486,7 @@ this number}%
% This section deals with the code for |fmtcount.sty|
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{fmtcount}[2020/01/30 v3.06]
+\ProvidesPackage{fmtcount}[2020/01/30 v3.07]
\RequirePackage{ifthen}
% \end{macrocode}
% \changes{3.01}{2014/12/03}{Use \styfmt{xkeyval} instead of \styfmt{keyval}, so that we do not get in trouble
diff --git a/macros/latex/contrib/fmtcount/fmtcount.ins b/macros/latex/contrib/fmtcount/fmtcount.ins
index 7c4395ef39..1c31d8f0aa 100644
--- a/macros/latex/contrib/fmtcount/fmtcount.ins
+++ b/macros/latex/contrib/fmtcount/fmtcount.ins
@@ -1,4 +1,4 @@
-% fmtcount.ins generated using makedtx version 1.2 2020/1/28 8:17
+% fmtcount.ins generated using makedtx version 1.2 2020/2/24 20:03
\input docstrip
\preamble
diff --git a/macros/latex/contrib/fmtcount/fmtcount.pdf b/macros/latex/contrib/fmtcount/fmtcount.pdf
index e5eaf4d23e..98673a2b81 100644
--- a/macros/latex/contrib/fmtcount/fmtcount.pdf
+++ b/macros/latex/contrib/fmtcount/fmtcount.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfpc/README.md b/macros/latex/contrib/pdfpc/README.md
new file mode 100644
index 0000000000..15d8df9ba3
--- /dev/null
+++ b/macros/latex/contrib/pdfpc/README.md
@@ -0,0 +1,35 @@
+# pdfpc
+
+This packages allows to define additional meta data within
+the PDF file which can be interpreted by the pdf presenter
+console (pdfpc) program.
+
+## Dependencies
+
+`pdfpc` depends on these packages:
+[`kvoptions`](https://ctan.org/pkg/kvoptions),
+[`xstring`](https://ctan.org/pkg/xstring),
+[`pdfcomment`](https://ctan.org/pkg/pdfcomment),
+[`hyperxmp`](https://ctan.org/pkg/hyperxmp)
+
+## Usage
+
+It's best to read the [`pdfpc`](https://github.com/pdfpc/pdfpc) documentation
+for `pdfpc` integration.
+
+## License
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
diff --git a/macros/latex/contrib/pdfpc/pdfpc.dtx b/macros/latex/contrib/pdfpc/pdfpc.dtx
new file mode 100644
index 0000000000..4177554186
--- /dev/null
+++ b/macros/latex/contrib/pdfpc/pdfpc.dtx
@@ -0,0 +1,179 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+%\iffalse
+% Doc-Source file to use with LaTeX2e
+%
+% This file is part of pdfpc.
+% Copyright (C) 2020 Evgeny Stambulchik
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 3 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License along
+% with this program; if not, write to the Free Software Foundation, Inc.,
+% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+% -------------------------------------------------------------------------------------------
+%
+% Allow for defining some meta data and simple textual notes for use
+% with the pdfpc presentation application <https://pdfpc.github.io>.
+%
+% -------------------------------------------------------------------------------------------
+%
+% Inspired by Carsten Brandt's <https://github.com/cebe/pdfpc-latex-notes>.
+%
+% -------------------------------------------------------------------------------------------
+%
+% Please report bugs and other problems as well as suggestions for improvements
+% to the issue tracker at github <https://github.com/pdfpc/pdfpc/>
+%
+% -------------------------------------------------------------------------------------------
+%\fi
+%
+% Identify the package and force \LaTeXe:
+% \begin{macrocode}
+\ProvidesPackage{pdfpc}[2019/12/03 v0.2 PDFPC]
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+%
+% Require additional packages needed by \sty{pdfpc}:
+% \begin{macrocode}
+\RequirePackage{kvoptions}
+\RequirePackage{xstring}
+\RequirePackage{pdfcomment}
+\RequirePackage{hyperxmp}
+% \end{macrocode}
+%
+\SetupKeyvalOptions{
+ family=PDFPC,
+ prefix=PDFPC@
+}
+%
+\DeclareStringOption{duration}
+\DeclareStringOption{starttime}
+\DeclareStringOption{endtime}
+\DeclareStringOption{enduserslide}
+\DeclareStringOption{lastminutes}
+\DeclareBoolOption{overridenote}
+\DeclareStringOption{notesposition}
+\DeclareDefaultOption{\@unknownoptionerror}
+%
+\ProcessKeyvalOptions*
+%
+\ifx\PDFPC@duration\@empty
+\else
+ \IfInteger{\PDFPC@duration}{}
+ {\PackageWarningNoLine{pdfpc}{`duration' should be an integer}}%
+\fi
+%
+\ifx\PDFPC@duration\@empty
+\ifx\PDFPC@enduserslide\@empty
+\else
+ \IfInteger{\PDFPC@enduserslide}{}
+ {\PackageWarningNoLine{pdfpc}{`enduserslide' should be an integer}}%
+\fi
+%
+\ifx\PDFPC@duration\@empty
+\ifx\PDFPC@lastminutes\@empty
+\else
+ \IfInteger{\PDFPC@lastminutes}{}
+ {\PackageWarningNoLine{pdfpc}{`lastminutes' should be an integer}}%
+\fi
+%
+\ifPDFPC@overridenote
+ \renewcommand{\note}[2][]{%
+ \IfStrEq{#1}{item}%
+ % Imitate a bullet
+ {\pdfpcnote{* #2}}%
+ {\pdfpcnote{#2}}%
+ }%
+\fi
+%
+\def\pdfpc@notespositionauto{auto}%
+\ifx\PDFPC@notesposition\@empty%
+ \def\PDFPC@notesposition{auto}%
+\fi%
+%
+% Guesswork for beamer/pgfpages notes
+% \begin{macrocode}
+\ifx\PDFPC@notesposition\pdfpc@notespositionauto%
+ \def\PDFPC@notesposition{none}%
+ \def\pdfpc@onepaperheight{\paperheight}%
+ \def\pdfpc@twopaperheight{2\paperheight}%
+ \def\pdfpc@onepaperwidth{\paperwidth}%
+ \def\pdfpc@twopaperwidth{2\paperwidth}%
+ \def\pdfpc@pagecenter{\pgfpoint{.5\paperwidth}{.5\paperheight}}%
+
+ \ifx\pgfpageoptiontwoheight\pdfpc@onepaperheight%
+ \ifx\pgfpageoptiontwowidth\pdfpc@twopaperwidth%
+ \ifx\pgfpageoptionfirstcenter\pdfpc@pagecenter%
+ \def\PDFPC@notesposition{right}%
+ \else%
+ \def\PDFPC@notesposition{left}%
+ \fi%
+ \fi%
+ \fi%
+ \ifx\pgfpageoptiontwoheight\pdfpc@twopaperheight%
+ \ifx\pgfpageoptiontwowidth\pdfpc@onepaperwidth%
+ \ifx\pgfpageoptionfirstcenter\pdfpc@pagecenter%
+ \def\PDFPC@notesposition{top}%
+ \else%
+ \def\PDFPC@notesposition{bottom}%
+ \fi%
+ \fi%
+ \fi%
+\fi%
+% \end{macrocode}
+%
+% Our schema
+% \begin{macrocode}
+\newcommand*{\pdfpc@schema}{%
+ \hyxmp@add@to@xml{%
+______<rdf:Description xmlns:pdfpc="https://github.com/pdfpc/pdfpc">^^J%
+ }%
+ \hyxmp@add@simple{pdfpc:Duration}{\PDFPC@duration}%
+ \hyxmp@add@simple{pdfpc:StartTime}{\PDFPC@starttime}%
+ \hyxmp@add@simple{pdfpc:EndTime}{\PDFPC@endtime}%
+ \hyxmp@add@simple{pdfpc:EndUserSlide}{\PDFPC@enduserslide}%
+ \hyxmp@add@simple{pdfpc:LastMinutes}{\PDFPC@lastminutes}%
+ \hyxmp@add@simple{pdfpc:NotesPosition}{\PDFPC@notesposition}%
+ \hyxmp@add@to@xml{%
+______</rdf:Description>^^J%
+ }%
+}
+%
+% Piggybacking on the hyperxmp schema...
+% \begin{macrocode}
+\let\oldhyxmp@pdf@schema\hyxmp@pdf@schema
+\renewcommand{\hyxmp@pdf@schema}{{\oldhyxmp@pdf@schema}{\pdfpc@schema}}
+% \end{macrocode}
+
+% Note command
+% \begin{macrocode}
+\newcommand{\pdfpcnote}[1]{\pdfmargincomment{#1}}
+% \end{macrocode}
+%
+\endinput
diff --git a/macros/latex/contrib/pdfpc/pdfpc.ins b/macros/latex/contrib/pdfpc/pdfpc.ins
new file mode 100644
index 0000000000..905306c93e
--- /dev/null
+++ b/macros/latex/contrib/pdfpc/pdfpc.ins
@@ -0,0 +1,38 @@
+\input docstrip
+
+\preamble
+ pdfpc.dtx
+ Copyright (C) 2020 Evgeny Stambulchik
+
+ This file is part of pdfpc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ This work consists of the files pdfpc.dtx, pdfpc.ins, and the derived file
+ pdfpc.sty
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file{pdfpc.sty}{%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{pdfpc.dtx}{pdfpc.sty,package}%
+ }%
+}
+\endbatchfile
diff --git a/macros/latex/contrib/stage/Makefile b/macros/latex/contrib/stage/Makefile
new file mode 100644
index 0000000000..7ec79acd03
--- /dev/null
+++ b/macros/latex/contrib/stage/Makefile
@@ -0,0 +1,5 @@
+pdf:
+ pdflatex stage-documentation
+
+zip: pdf
+ cd .. && zip -r stage.zip stage --exclude=stage/.git\* --exclude=.gitignore --exclude=*.cpt --exclude=*.log --exclude=*.aux
diff --git a/macros/latex/contrib/stage/stage-documentation.pdf b/macros/latex/contrib/stage/stage-documentation.pdf
index c60d22d2b6..57f797893c 100644
--- a/macros/latex/contrib/stage/stage-documentation.pdf
+++ b/macros/latex/contrib/stage/stage-documentation.pdf
Binary files differ
diff --git a/macros/latex/contrib/stage/stage-documentation.tex b/macros/latex/contrib/stage/stage-documentation.tex
index 1be157b45f..e1d24f936f 100644
--- a/macros/latex/contrib/stage/stage-documentation.tex
+++ b/macros/latex/contrib/stage/stage-documentation.tex
@@ -157,8 +157,6 @@ Here is a script template formatted with \LaTeX\ and \texttt{stage}. It should p
%%% The following items are optional. Uncomment to use.
% \address{}
-% \copyrightnotice{}
-% \draft{}
\begin{document}
diff --git a/macros/latex/contrib/stage/stage.cls b/macros/latex/contrib/stage/stage.cls
index d369724ccb..4756c8c89c 100644
--- a/macros/latex/contrib/stage/stage.cls
+++ b/macros/latex/contrib/stage/stage.cls
@@ -1,6 +1,6 @@
%% stage.cls
%% Copyright 2005 Robert Jahrling
-%% Copyright 2017 Reuben Thomas
+%% Copyright 2017–2018 Reuben Thomas
%
% This is a LaTeX2e class called stage, providing a class
% for stage play Manuscript Format.
@@ -23,7 +23,7 @@
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{stage}[2017/04/25 v1.00 Manuscript Format for stage plays]
+\ProvidesClass{stage}[2018/05/14 v1.01 Manuscript Format for stage plays]
% The class is based on the default book class
\LoadClass[12pt,oneside]{book}
\PassOptionsToClass{\CurrentOption}{book}
@@ -32,6 +32,7 @@
\RequirePackage{fancyhdr}
\RequirePackage{extramarks}
\RequirePackage{needspace}
+\RequirePackage{changepage}
% These three commands are required.
% The default font size is 12/14. It looks better than 12 solid.
% The textwidth and textheight represent one-inch margins all
@@ -71,13 +72,8 @@
\renewcommand{\headheight}{14pt}
%%%
-% No indentation. Double space between paragraphs.
-\parindent 0pt
-\parskip 0pt
-\newlength{\doublespacelength}
-\setlength{\doublespacelength}{1.6ex}
-% \doublespace leaves a line's worth of space between elements.
-\newcommand{\doublespace}{\vspace{\doublespacelength}}
+% No indentation; space between paragraphs.
+\usepackage{parskip}
% \introduce is used the first time we meet a character.
\newcommand{\introduce}[1]{\textsc{#1}}
% \address is used for the writer's address
@@ -89,28 +85,15 @@
% Counts scenes per act
\newcounter{scenecounter}[actcounter]
-% An environment for specifying margin changes
-\newenvironment{changemargin}[2]{%
- \begin{list}{}{%
- % Without the following critical setting, we could use
- % changepage’s adjustwidth environment
- \setlength{\partopsep}{0pt}%
- \setlength{\topsep}{0pt}%
- \setlength{\leftmargin}{#1}%
- \setlength{\rightmargin}{#2}%
- \setlength{\listparindent}{\parindent}%
- \setlength{\itemindent}{\parindent}%
- \setlength{\parsep}{\parskip}%
- }%
- \item[]}{\end{list}}
% \dialog sets the character's name above their speech
+\let\stageoldep=\everypar
+\newlength{\saveparskip}
\newcommand{\dialog}[2]{%
- \doublespace%
\needspace{2\baselineskip}%
- \begin{changemargin}{2.5in}{0in}\textsc{#1}\end{changemargin}%
+ {\begin{adjustwidth}{2.5in}{0in}\textsc{#1}\end{adjustwidth}\saveparskip=\parskip\parskip=0pt%
\extramarks{}{}%
- #2%
- \extramarks{\textsc{#1} (\continuedname)}{}
+ {\begin{adjustwidth}{0in}{0in}\def\everypar{\parskip=\saveparskip\stageoldep}#2\end{adjustwidth}}%
+ \extramarks{\textsc{#1} (\continuedname)}{}}
}
% \dialogue, for people who like that spelling better
@@ -121,40 +104,33 @@
% Start a new page for each Act except the first
\newcommand{\act}{%
\renewcommand{\thepage}{\Roman{actcounter}-\arabic{page}}%
- \begin{changemargin}{2.5in}{0in}
- \ifthenelse{\value{actcounter} > 1}{\newpage}{}
- \ifthenelse{\value{actcounter} = 1}{\doublespace}{}
- \stepcounter{actcounter}
- \textsc{\actname} \Roman{actcounter}
- \end{changemargin}
- \setcounter{page}{1}
+ \ifthenelse{\value{actcounter} > 1}{\newpage}{\vspace{\parskip}}
+ \stepcounter{actcounter}
+ \hspace*{2.5in}\textsc{\actname} \Roman{actcounter}%
+ \setcounter{page}{1}
}
% \scene creates a scene header, with arabic numerals
%
% Start a new page for each scene except the first
\newcommand{\scene}{%
- \begin{changemargin}{2.5in}{0in}
- \stepcounter{scenecounter}
- \ifthenelse{\value{scenecounter} > 1}{\newpage}{}
- \textsc{\scenename} \arabic{scenecounter}
- \ifthenelse{\value{scenecounter} = 1}{\doublespace}{}
- \end{changemargin}
+ \extramarks{}{}%
+ \stepcounter{scenecounter}
+ \ifthenelse{\value{scenecounter} > 1}{\newpage}{\vspace{\parskip}}
+ \hspace*{2.5in}\textsc{\scenename} \arabic{scenecounter}%
}
% \stage sets the stage directions farther in than the box
% containing the dialog, and parenthesizes them.
\newcommand{\stage}[1]{%
- \doublespace
- \begin{changemargin}{2in}{0in}
+ \begin{adjustwidth}{2in}{0in}
(#1)%
- \end{changemargin}
+ \end{adjustwidth}
}
% \charsd is like \paren in ScriptTeX, used for brief character
% stage directions. It's intended to set properly into a passage
% of dialog.
\newcommand{\charsd}[1]{%
- \begin{changemargin}{2in}{0in}%
- (#1)%
- \end{changemargin}}
+ {\def\everypar{\parskip=0pt\stageoldep}%
+ \stage{#1}\par\leavevmode}}
% Undocumented, for backwards compatibility
\newcommand{\initsd}[1]{\charsd{#1}}
@@ -167,9 +143,9 @@
% \opensd is opening stage directions, set differently from
% other stage directions; \opensd sets time and place.
\newcommand{\opensd}[1]{%
- \begin{changemargin}{2.5in}{0in}
+ \begin{adjustwidth}{2.5in}{0in}
(#1)%
- \end{changemargin}
+ \end{adjustwidth}
}
% \open is the same as \opensd
\newcommand{\open}[1]{\opensd{#1}}
@@ -181,9 +157,9 @@
\par
\center{\@author}
\vspace{5in}
- \begin{changemargin}{0in}{0in}
+ \begin{adjustwidth}{0in}{0in}
\ifthenelse{\not\isundefined{\@address}}{\@address}{}
- \end{changemargin}
+ \end{adjustwidth}
\end{titlepage}
\setcounter{page}{1}
}
@@ -193,21 +169,20 @@
\thispagestyle{empty}%
\center{\textsc{\castname}}%
\vspace{3ex}%
- \begin{changemargin}{0in}{0.5in}%
+ \begin{adjustwidth}{0in}{0.5in}%
}{%
- \end{changemargin}%
+ \end{adjustwidth}%
\setcounter{page}{0}%
\newpage%
}
% \addcharacter adds characters to the cast page.
\newcommand{\addcharacter}[2]{%
\begin{tabular}[2]{p{2in} p{4in}}
- \textsc{#1} & #2\\[\doublespacelength]
+ \textsc{#1} & #2\\[\parskip]
\end{tabular}
}
% Mark the end of the document.
\AtEndDocument{%
- \doublespace %
\hskip 2.5in %
\textsc{\theendname}%
}
diff --git a/macros/latex/contrib/suftesi/suftesi.dtx b/macros/latex/contrib/suftesi/suftesi.dtx
index 6f35771eab..8faa427e85 100644
--- a/macros/latex/contrib/suftesi/suftesi.dtx
+++ b/macros/latex/contrib/suftesi/suftesi.dtx
@@ -67,7 +67,7 @@
%<class>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<class>\ProvidesClass{suftesi}
%<*class>
- [2020/02/22 v2.9.7 A class for typesetting theses, books and articles]
+ [2020/02/24 v2.9.8 A class for typesetting theses, books and articles]
%</class>
%<*driver>
\documentclass[10pt]{ltxdoc}
@@ -84,7 +84,7 @@
\usepackage[svgnames]{xcolor}
\definecolor{philA}{named}{DarkRed}
\definecolor{philB}{named}{NavyBlue}
- \definecolor{sufred}{rgb}{0.5,0,0}
+\definecolor{sufred}{rgb}{0.5,0,0}
\definecolor{sufgray}{rgb}{0.5,0.5,0.5}
\usepackage{metalogo}
\usepackage{guit}
@@ -103,7 +103,8 @@
% layout
\setcounter{tocdepth}{3}
\usepackage{geometry}
-\geometry{a4paper,
+\geometry{
+ a4paper,
margin=3cm,
headheight=15pt,
ignoreall,
@@ -112,9 +113,9 @@
\allsectionsfont{\sffamily}
\usepackage{fancyhdr}
\fancyhf{}
-\fancyhead[L]{© 2009--\the\year\quad Ivan Valbusa}
+\fancyhead[L]{© 2009-\the\year\quad Ivan Valbusa}
\fancyfoot[L]{\textsf{suftesi}
- \fileversion{} -- \filedate}
+ \fileversion{}~--~\filedate}
\renewcommand{\footrulewidth}{0.4pt}
\fancyhead[R]{\thepage}
\pagestyle{fancy}
@@ -134,7 +135,7 @@
\addbibresource{suftesi.bib}
\usepackage{metalogo}
\usepackage{guit}
-%%% Greek examples
+% Greek examples
\def\latintxt{Aliquam auctor, pede consequat
laoreet varius, eros tellus maris quam, pellentesque hendrerit.}
\def\latintxtb{Morbi luctus, wisi viverra faucibus pretium,
@@ -169,11 +170,7 @@
\ifblank{#1}
{\ltd@option{}{#2}{#3}{}}
{\ltd@option{}{#2}{#3}{\ltd@textverb{#1}}}}%
-\makeatother
-\makeatletter
-
-\def\ltd@textverb#1{\,#1\,}
-
+\def\ltd@textverb#1{~#1~}
\renewenvironment*{optionlist}
{\list{}{%
\setlength{\labelwidth}{2.5cm}%
@@ -228,7 +225,6 @@
\@starttoc{toc}%
\end{multicols}}
\makeatother
-
% hyperref setup
\usepackage{hyperref}
\hypersetup{%
@@ -239,7 +235,6 @@
pdfauthor={Ivan Valbusa},
pdfkeywords={thesis, humanities, books}}
-
\EnableCrossrefs
\CodelineIndex
\RecordChanges
@@ -251,7 +246,7 @@
%</driver>
% \fi
%
-% \CheckSum{5286}
+% \CheckSum{5277}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -269,6 +264,7 @@
% Grave accent \` Left brace \{ Vertical bar \|
% Right brace \} Tilde \~}
%
+% \changes{v2.9.8}{2020/02/24}{Removed license restrictions. Updated documentation.}
% \changes{v2.9.7}{2020/02/22}{New option \opt{fontisize}. The \opt{parindent} options now accepts arbitrary values. Updated documentation.}
% \changes{v2.9.6a}{2020/02/11}{Maintenance release}
% \changes{v2.9.6}{2020/02/10}{New option \opt{compacttoc}. The appendix page title is printed in the font of the chapters by default. Removed \cmd{apepndicesname} command.}
@@ -290,8 +286,8 @@
% \changes{v2.0.1}{2015/03/31}{Corrected a bug in \opt{version} option.}
% \changes{v2.0}{2015/03/29}{New page layout \opt{standardaureo}. Enhanced support for \LuaLaTeX. Headers settings are now executed \cmd{AtBeginDocument}. Loaded \sty{ifluatex} and \sty{ifthen} packages. Added \opt{listparindent} to \cmd{setlist} options. Updated documentation.}
% \changes{v1.9c}{2014/04/05}{The \opt{cbgreek} value for the \opt{greekfont} option allows now to use the full set of the CB Greek font together with the default font (Palatino).}
-% \changes{v1.9b}{2014/02/16}{Corrected a bug in ``toc'', ``lof'' and ``lot'' commands.}
-% \changes{v1.9a}{2014/02/11}{Maintenance release. Updated greek support. Updated documentation.}
+% \changes{v1.9b}{2014/02/16}{Corrected a bug in ``toc'', ``lof'' and ``lot'' commands.}
+% \changes{v1.9a}{2014/02/11}{Maintenance release. Updated greek support. Updated documentation.}
% \changes{v1.9}{2013/09/21}{Added \opt{italic}, \opt{smallcaps} and \opt{sanserif} values for \opt{captionstyle} option. New \opt{twocolcontents} option. New \opt{supercompactaureo} page layout. Changed \cmd{toclabelspace} command and renamed to \cmd{toclabelwidth}. New \opt{collection} document structure}
% \changes{v1.8}{2013/07/18}{Maintenance release. Corrected a bug in the definition of \cmd{appendix}}
% \changes{v1.7}{2013/06/20}{Renamed \opt{viewmode} option to \opt{version}:
@@ -334,7 +330,6 @@
% Changed option \opt{sctitles}.}
% \GetFileInfo{suftesi.dtx}
%
-%
% \DoNotIndex{\hskip,\newcommand,\newenvironment,\def,\begin,\vskip,\ }
% \DoNotIndex{\DeclareOption,\ExecuteOptions,\RequirePackage}
% \DoNotIndex{\@@end,\@empty,\@ifclassloaded,\@nameuse,\@nil}
@@ -362,20 +357,20 @@
% \DoNotIndex{\huge,\large,\makebox,\ProcessOptions,\renewcommand}
%
% \begin{center}
- % {\color{philA}\bfseries
- % \Huge User's Guide to \textsf{suftesi}\\[3mm]}
- % {\large\itshape A document class for typesetting theses, books and articles}
- %\vspace{.8cm}
- %
- % \normalsize\fileversion{} -- \filedate
- % \vspace{.7cm}
- %
- % Ivan Valbusa\\[2mm]
- % \footnotesize\texttt{ivan dot valbusa at univr dot it}
- % \vspace{1cm}
- % \end{center}
+% {\color{philA}\bfseries
+% \Huge User's Guide to \textsf{suftesi}\\[3mm]}
+% {\large\itshape A document class for typesetting theses, books and articles}
+% \vspace{.8cm}
+%
+% \normalsize\fileversion{} -- \filedate
+% \vspace{.7cm}
+%
+% Ivan Valbusa\\[2mm]
+% \footnotesize\texttt{Ivan dot Valbusa at univr dot it}
+% \vspace{1cm}
+% \end{center}
% \begin{abstract}
-% The standard document classes allow you to typeset beautiful
+% \noindent The standard document classes allow you to typeset beautiful
% documents but their layout is quite far from the stylistic requests
% of some humanists (mainly Italian). The \sty{suftesi} class
% provides a set of ``humanistic'' page layouts, title styles
@@ -391,21 +386,14 @@
%
% \section*{Legalese}
%
-%\noindent Copyright \copyright\ 2009-\the\year{} Ivan Valbusa
+% \noindent Copyright \copyright\ 2009-\the\year\ Ivan Valbusa
% \smallskip
%
% \noindent This package is author-maintained.
-%Permission is granted to copy, distribute and/or modify this software under the
-%terms of the LaTeX Project Public License, version 1.3c ora later (\url{http://latex-project.org/lppl}). This software is provided ``as is'', without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose.
-%
-% The main feature of this class is the set of styles it
-% provides. For this reason {\scshape\lsstyle do not modify the styles of this class with packages
-% and/or commands which change the layout of the document.
-% If you do not like these styles, use another class.}
-% If you use \sty{suftesi}{} in a document typeset with another class
-% (for example \sty{book}), remember to clean up the preamble from all
-% the layout redefinitions.
-%
+% Permission is granted to copy, distribute and/or modify this software under the
+% terms of the LaTeX Project Public License, version 1.3 or later (\url{http://latex-project.org/lppl}).
+% This software is provided ``as is'', without warranty of any kind, either expressed or implied,
+% including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose.
%
% \section*{A brief history}
%
@@ -416,10 +404,8 @@
% I would like to thank Professors Paola Di~Nicola,
% Director of the Graduate School, and Ugo Savardi who suggested to propose the course precisely to that School; Gilberto D'Arduini, Matteo Lanza and Antonio Rinaldi, who installed \LaTeX{} on the computers used during the course; Catia Cordioli, for her help in the organization of the lessons; Corrado Ferreri, responsible of the \mbox{E-Learning} Center, who provided the \TeX{}~Live~2009 \textsc{DVD}s.
% Special thanks to Professors Enrico~Gregorio, the Italian guru of \TeX, for the \TeX pert support and his priceless ``magic formulas'', and Tommaso Gordini for his valuable advice in choosing and improving the class features during these years.
-%I would finally thank all the participants to the course who patiently resisted the four intensive lessons. This work is dedicated to them.
-%
-%
-%
+% I would finally thank all the participants to the course who patiently resisted the four intensive lessons. This work is dedicated to them.
+
% \section*{Feedback}
%
% \noindent If you have any questions, feedback or requests please email me at \texttt{ivan dot valbusa at univr dot it}. If you need specific features not already implemented, remember to attach the example files.
@@ -434,29 +420,29 @@
%
% In addition to these you can also use the options defined by the standard \sty{book} class (on which \sty{suftesi} is based) except those modifying
% the page dimensions (\opt{a4paper}, \opt{a5paper}, \opt{b5paper}, \opt{legalpaper}, \opt{executivepaper} and \opt{landscape}), which are automatically disabled. The class loads the packages listed in table \ref{tab:pkgloaded}.
+%
% \subsection*{Using with Xe\LaTeX and Lua\LaTeX}
% For using the class with the \XeTeX{} and \LuaTeX{} engines you need to load the \sty{fontspec} package (\sty{mathspec} is an alternative only for \XeTeX) and to select a main font.
%
%
-%\begin{table}[h]
-%\centering
-%\begin{tabular}{>{\sffamily}r@{}>{\sffamily}l>{\raggedright\arraybackslash}>{\sffamily}p{9.6cm}}
-%\toprule
-%&\textrm{Global}& appendix, {caption}, {color}, {crop}, {enumitem}, {emptypage},
-%{fancyhdr}, {fixltxhyph}, {fontenc}, {geometry}, {iftex},
-%{microtype}, {multicol}, {titlesec}, {titletoc}, {xkeyval}, (cclicenses)\\\midrule
-%&\textrm{pdf\LaTeX{} only}&fontenc, substitutefont\\\midrule
-%&\textrm{Lua\LaTeX{} only}&luatex85\\\midrule
-%defaultfont=&standard&lmodern\\
-%
-%&palatino&textcomp, newpxtext, biolinum, inconsolata, {newpxmath}\\
-%&{libertine}&{textcomp}, {libertine}, {biolinum}, {inconsolata}, {newtxmath}\\
-%&cochineal&{textcomp}, {cochineal}, {biolinum}, {inconsolata}, {newtxmath}\\
-%&compatibility&{mathpazo}, {beramono}\\\midrule
-%mathfont=&extended&amsthm, mathalfa\\\bottomrule
-%\end{tabular}
+% \begin{table}[h]
+% \centering
+% \begin{tabular}{>{\sffamily}r@{}>{\sffamily}l>{\raggedright\arraybackslash}>{\sffamily}p{9.6cm}}
+% \toprule
+% & textrm{Global} & appendix, caption, color, crop, enumitem, emptypage,
+% fancyhdr, fixltxhyph, fontenc, geometry, iftex,
+% microtype, multicol, titlesec, titletoc, xkeyval, (cclicenses) \\\midrule
+% & \textrm{pdf\LaTeX{} only} & fontenc, substitutefont \\\midrule
+% & \textrm{Lua\LaTeX{} only} & luatex85 \\\midrule
+% defaultfont~= & ~standard & lmodern \\
+% & ~palatino & textcomp, newpxtext, biolinum, inconsolata, newpxmath \\
+% & ~libertine & textcomp, libertine, biolinum, inconsolata, newtxmath \\
+% & ~cochineal & textcomp, cochineal, biolinum, inconsolata, newtxmath \\
+% & ~compatibility & mathpazo, beramono \\\midrule
+% mathfont~= & ~extended & amsthm, mathalfa \\\bottomrule
+% \end{tabular}
% \caption{Packages loaded by \sty{suftesi}}\label{tab:pkgloaded}
-%\end{table}
+% \end{table}
%
% \changes{v0.9b}{2012/09/23}{The \sty{epigraph} package is no longer loaded}
%
@@ -465,18 +451,17 @@
% \section{Class features}
%
% The \sty{suftesi} class provides a large set of options to customize the style of page, titles, headings and other text elements (see section \ref{sec:options}). The simplest way to get to know the class features is therefore to typeset one of the templates which you can find in the \texttt{/doc/latex/suftesi} folder in your \LaTeX{} distribution \parencite[see also][]{valbusa:20122}. The class files as well as the templates are also available online on the CTAN’s website at
-%\textcolor{magenta}{\url{http://www.ctan.org/pkg/suftesi}}.
-%
+% \textcolor{magenta}{\url{http://www.ctan.org/pkg/suftesi}}.
%
% \subsection{Document structure}
%
% With \sty{suftesi} you can typeset book-style documents (with chapters), article-style documents (without chapters) and collections of papers (see section \ref{sec:collection}). The kind of document is set by the \opt{structure} option which defaults to \opt{book} (see section \ref{sec:options}).
%
-%\begin{ttquote}
-%\cmd{documentclass}[structure=\meta{value},\meta{options}]\{suftesi\}
+% \begin{ttquote}
+% \cmd{documentclass}[structure=\meta{value},\meta{options}]\{suftesi\}
% ^^A\cmd{documentclass}[structure=article,\meta{options}]\{suftesi\}\\
% ^^A\cmd{documentclass}[structure=collection,\meta{options}]\{suftesi\}
-%\end{ttquote}
+% \end{ttquote}
%
% \changes{v0.9b}{2012/09/23}{The \sty{mparhack} package is no longer loaded. It is not compatible with \sty{crop}.}
%
@@ -485,46 +470,46 @@
% The class provides nine page layouts which can be selected by the \opt{pagelayout} option (table \ref{tab:layouts}). The \opt{standard} layout (default) or \opt{standardaureo} layout are aimed to typeset A4 documents, while the other seven layouts are particularly suitable to typeset compact books, articles or theses. For these compact layouts the \opt{version=screen} and \opt{version=cscreen} options are particularly useful as they show the output in its real size. See section \ref{sec:page-styles} for details.
%
% \begin{table}[h]
-%\centering
-%\begin{tabular}{lcccccccl}
-%\toprule
-%&\multicolumn{4}{c}{Dimensions (mm)}&\multicolumn{4}{c}{Proportions}\\\cmidrule(lr){2-5}\cmidrule(lr){6-9}
-%&\multicolumn{2}{c}{Typeblock}&\multicolumn{2}{c}{Page}& \multicolumn{2}{c}{Margins}&\multicolumn{2}{c}{Stock}\\\cmidrule(lr){2-3}\cmidrule(lr){4-5}\cmidrule(lr){6-7}\cmidrule(l){8-9}
-%Layout &w & h& w& h&t\,/\,b&i\,/\,o&Typeblock& Page\\\cmidrule(r){2-3}\cmidrule(lr){4-5}\cmidrule(lr){6-7}\cmidrule(l){8-9}\cmidrule(r){1-1}
-%\opt{standard} & 110& 220& 210& 297&$1:2$&$1:2$&$1:2$&$1:\sqrt{2}$\\
-%\opt{standardaureo} & 136& 220& 210& 297&$2:3$&$2:3$&$5:8$\makebox[0pt]{\ \textsuperscript{*}}&$1:\sqrt{2}$\\
-%\opt{compact}& 110& 165& 160& 240&$2:3$&$2:3$&$2:3$&$2:3$\\
-%\opt{compactaureo}& 118& 191& 160& 240&$2:3$&$2:3$&$5:8$\makebox[0pt]{\ \textsuperscript{*}}&$2:3$\\
-%\opt{supercompact}& 100 &150& 140& 210&$2:3$&$2:3$&$2:3$&$2:3$\\
-%\opt{supercompactaureo}& 108 &175& 140& 210&$1:1$&$1:1$&$5:8$\makebox[0pt]{\ \textsuperscript{*}}&$2:3$\\
-%\opt{periodical} &110& 165& 170& 240&$2:3$&$2:3$&$2:3$&$1:\sqrt{2}$\\
-%\opt{periodicalaureo}& 120& 194& 170& 240&$2:3$&$2:3$&$5:8$\makebox[0pt]{\ \textsuperscript{*}}&$1:\sqrt{2}$\\
-%
+% \centering
+% \begin{tabular}{lcccccccl}
+% \toprule
+% & \multicolumn{4}{c}{Dimensions(mm)} & \multicolumn{4}{c}{Proportions}\\\cmidrule(lr){2-5}\cmidrule(lr){6-9}
+% & \multicolumn{2}{c}{Typeblock}& \multicolumn{2}{c}{Page}& \multicolumn{2}{c}{Margins}
+% & \multicolumn{2}{c}{Stock}\\\cmidrule(lr){2-3}\cmidrule(lr){4-5}\cmidrule(lr){6-7}\cmidrule(l){8-9}
+% Layout & w & h & w & h & t\,/\,b & i \,/\,o & Typeblock & Page\\
+% \cmidrule(r){2-3}\cmidrule(lr){4-5}\cmidrule(lr){6-7}\cmidrule(l){8-9}\cmidrule(r){1-1}
+% \opt{standard} & 110 & 220 & 210 & 297 & $1:2$ & $1:2$ & $1:2$ & $1:\sqrt{2}$ \\
+% \opt{standardaureo} & 136 & 220 & 210 & 297 & $2:3$ & $2:3$ & $5:8$ \makebox[0pt]{\textsuperscript{*}} & $1:\sqrt{2}$ \\
+% \opt{compact} & 110 & 165 & 160 & 240 & $2:3$ & $2:3$ & $2:3$ & $2:3$ \\
+% \opt{compactaureo} & 118 & 191 & 160 & 240 & $2:3$ & $2:3$ & $5:8$ \makebox[0pt]{\textsuperscript{*}} & $2:3$ \\
+% \opt{supercompact} & 100 & 150 & 140 & 210 & $2:3$ & $2:3$ & $2:3$ & $2:3$ \\
+% \opt{supercompactaureo} & 108 & 175 & 140 & 210 & $1:1$ & $1:1$ & $5:8$ \makebox[0pt]{\textsuperscript{*}} & $2:3$ \\
+% \opt{periodical} & 110 & 165 & 170 & 240 & $2:3$ & $2:3$ & $2:3$ & $1:\sqrt{2}$ \\
+% \opt{periodicalaureo} & 120 & 194 & 170 & 240 & $2:3$ & $2:3$ & $5:8$ \makebox[0pt]{\textsuperscript{*}} & $1:\sqrt{2}$ \\
% \bottomrule\\[-2ex]
-% \multicolumn{9}{r}{\footnotesize\textsuperscript{*} $5:8\approx 1:1,618$}
-%\end{tabular}\\[-3ex]
+% \multicolumn{9}{r}{\footnotesize\textsuperscript{*}$5:8\approx1:1,618$}
+% \end{tabular}\\[-3ex]
% \caption{The layouts of \sty{suftesi}}\label{tab:layouts}
% \end{table}
-%
%
-%You can define your own layouts through the \cmd{geometry} command and you can change the value of \cmd{baselineskip} too. For example you can resize the typeblock of the \texttt{supercompactaureo} layout to fit your particular needs. In this case remember to declare \cmd{normalsize} like in the following example:
-%\begin{latexcode}
-%\begin{verbatim}
-%\linespread{0.95}
-%\normalsize
-%\geometry{
-%textheight= 162mm,
-%textwidth= 100mm,
-%paperwidth= 140mm,
-%paperheight= 210mm,
-%hmarginratio= 2:3,
-%vmarginratio= 1:1,
-%marginparwidth= 11mm,
-%marginparsep= 7pt,
-%ignoreall,
-%heightrounded}
-%\end{verbatim}
-%\end{latexcode}%
+% You can define your own layouts through the \cmd{geometry} command and you can change the value of \cmd{baselineskip} too. For example you can resize the typeblock of the \texttt{supercompactaureo} layout to fit your particular needs. In this case remember to declare \cmd{normalsize} like in the following example:
+% \begin{latexcode}
+% \begin{verbatim}
+% \linespread{0.95}
+% \normalsize
+% \geometry{
+% textheight= 162mm,
+% textwidth= 100mm,
+% paperwidth= 140mm,
+% paperheight= 210mm,
+% hmarginratio= 2:3,
+% vmarginratio= 1:1,
+% marginparwidth= 11mm,
+% marginparsep= 7pt,
+% ignoreall,
+% heightrounded}
+% \end{verbatim}
+% \end{latexcode}%
% ^^A The form of the book has been changing through the centuries and every content requires a particular shape. Nowdays the most widespread form for literary essays is a compact one. So, if you are interested in such a topic, you should consider the compact layouts. The one I prefer is shown on figure \ref{fig:periodicalaureo}.
%
% ^^A\begin{figure}[h!]\centering
@@ -540,16 +525,16 @@
% \subsection{Fonts}
%
%
-%The default roman font is Cochineal by Michael Sharpe,
-%the sans serif font is Linux Biolinum O, designed by Philipp H. Poll,\index{Poll, Philipp H.} and the typewriter face is Inconsolata by Michael Sharpe. Cochineal is a fork of Crimson, by Sebastina Kosch, a font inspired by masterpieces like Sabon (Jan Tschichold) and Minion (Robert Slimbach). It is a very complete typeface and it offers full support for Greek and Cyrillic, real small caps (even in italic shape) and four figure styles. Moreover it provides support for mathematics through the \sty{newtxmath} package.
+% The default roman font is Cochineal by Michael Sharpe,
+% the sans serif font is Linux Biolinum O, designed by Philipp H. Poll,\index{Poll, Philipp H.} and the typewriter face is Inconsolata by Michael Sharpe. Cochineal is a fork of Crimson, by Sebastina Kosch, a font inspired by masterpieces like Sabon (Jan Tschichold) and Minion (Robert Slimbach). It is a very complete typeface and it offers full support for Greek and Cyrillic, real small caps (even in italic shape) and four figure styles. Moreover it provides support for mathematics through the \sty{newtxmath} package.
%
-%The \opt{defaultfont} option allows you to can change the default roman font to New PX (Palatino-like), Linux Libertine O, or Latin modern.
-%You can use other fonts as well, but in this case remember to load the \opt{defaultfont=none} option which turns off the default font settings (see section \ref{sec:options} for details).
+% The \opt{defaultfont} option allows you to can change the default roman font to New PX (Palatino-like), Linux Libertine O, or Latin modern.
+% You can use other fonts as well, but in this case remember to load the \opt{defaultfont=none} option which turns off the default font settings (see section \ref{sec:options} for details).
%
-%Today there are several Garamond-like fonts in TeX Live distribution. See, for example \textit{Garamond Libre} (Open Type only) and \textit{Cormorant Garamond}. The Bembo-like fonts \textit{Etbb} and \textit{fbb} should also be considered if you appreciate humanist fonts. In any case, before using a font, read the license carefully.
-
-%Another beautiful Garamond-like font, complete of real small caps, bold weight and mathematical support, is made available by the \sty{garamondx} package by Michael Sharpe, which provides an extension of the \sty{ugm} fonts, (URW)++ GaramondNo8 (see the License note in the package documentation at the web page \url{https://www.ctan.org/pkg/garamondx}. They are not distributed as part of \TeX Live, but they may be downloaded using the \texttt{getnonfreefonts} script. See the instructions for installation at
-%\url{http://tug.org/fonts/getnonfreefonts/}.
+% Today there are several Garamond-like fonts in TeX Live distribution. See, for example \textit{Garamond Libre} (Open Type only) and \textit{Cormorant Garamond}. The Bembo-like fonts \textit{Etbb} and \textit{fbb} should also be considered if you appreciate humanist fonts. In any case, before using a font, read the license carefully.
+%
+% Another beautiful Garamond-like font, complete of real small caps, bold weight and mathematical support, is made available by the \sty{garamondx} package by Michael Sharpe, which provides an extension of the \sty{ugm} fonts, (URW)++ GaramondNo8 (see the License note in the package documentation at the web page \url{https://www.ctan.org/pkg/garamondx}. They are not distributed as part of \TeX Live, but they may be downloaded using the \texttt{getnonfreefonts} script. See the instructions for installation at
+% \url{http://tug.org/fonts/getnonfreefonts/}.
%
%
% \subsubsection[Mathematics]{Typesetting mathematics}
@@ -634,12 +619,12 @@
% \greekexample{lmr}{cbgreek}{Latin Modern/CB Greek}{10}
%
%
-%\begin{figure}
+% \begin{figure}
% \centering
-%\begin{tikzpicture}
+% \begin{tikzpicture}
% \draw[draw=gray,fill=white,drop shadow] (-.5\textwidth,0) rectangle (.5\textwidth,.9\textheight);
-%\draw[line width=.5mm,fill=white,text=black,draw=black!60] (-4.2,17.1) circle (9mm) node {\parbox{12mm}{\centering\tiny * * * \\ St. Anford\\ University\\[1mm] * * * }};
-%\node[anchor=north west] at (-2.5cm,18cm) {%
+% \draw[line width=.5mm,fill=white,text=black,draw=black!60] (-4.2,17.1) circle (9mm) node {\parbox{12mm}{\centering\tiny * * * \\ St. Anford\\ University\\[1mm] * * * }};
+% \node[anchor=north west] at (-2.5cm,18cm) {%
% \parbox{8cm}{%
% \small University of St. Anford\par
% \normalsize Department of Typography
@@ -672,12 +657,12 @@
% }
% };
%
-%\end{tikzpicture}
-%\caption{The frontispiece of \sty{suftesi}}\label{fig:frontispiece}
-%\end{figure}
-%\begin{figure}
+% \end{tikzpicture}
+% \caption{The frontispiece of \sty{suftesi}}\label{fig:frontispiece}
+% \end{figure}
+% \begin{figure}
% \centering
-%\begin{tikzpicture}
+% \begin{tikzpicture}
% \draw[draw=gray,fill=gray!5,drop shadow] (-.5\textwidth,0) rectangle (.5\textwidth,.9\textheight);
% \node at (0,.65\textheight) (c) {};
% \draw[ball color=DarkBlue,draw=none] (c) circle (4.5cm);
@@ -691,30 +676,30 @@
% {\smallskip\normalsize How to survive in the modern societies\\}
%
% {\vspace*{2\baselineskip}\scriptsize edited by\\ Walker Texas Ranger\\}}};
-%\node[align=center] at (0,1) {\scriptsize \textcolor{black}{Punch Press}\\[1ex]\textcolor{black}{\fbox{§§§§}}\\};
-%\end{tikzpicture}
-%\caption{An example of the cover page of \sty{suftesi}}\label{fig:cover}
-%\end{figure}
+% \node[align=center] at (0,1) {\scriptsize \textcolor{black}{Punch Press}\\[1ex]\textcolor{black}{\fbox{§§§§}}\\};
+% \end{tikzpicture}
+% \caption{An example of the cover page of \sty{suftesi}}\label{fig:cover}
+% \end{figure}
%
% \subsection{The cover page}
% Since version 2.6 \sty{suftesi} provides a command to print a simple cover page (figure \ref{fig:cover}), inspired by the Italian designer Bruno \textcite[85-89]{munari:arte-come-mestiere}. The color used for the text and the circle as well as other graphical elements are partially customizable (see section \ref{sec:options} for details). The cover shown in figure \ref{fig:cover} is obtained with the following code:
-%\begin{latexcode}
-%\begin{verbatim}
-%\Cauthor{Bruce Lee}
-%\Ctitle{The Art of Kicking}
-%\Csubtitle{How to survive in the modern societies}
-%\Ceditor{edited by\\ Walker Texas Ranger}
-%\Cfoot{Punch Press\\\fbox{\bfseries P\&P}}
-%\Cpagecolor{white!90!black}
-%\Ctextcolor{white}
-%\Cfootcolor{black}
-%
-%\makecover[ball color=DarkBlue,draw=none]
-%\end{verbatim}
-%\end{latexcode}
-%
-%To produce a complete book cover, with spine and dust jacket, you should take a look at the \sty{bookcover} package by Tibor Tómács.
+% \begin{latexcode}
+% \begin{verbatim}
+% \Cauthor{Bruce Lee}
+% \Ctitle{The Art of Kicking}
+% \Csubtitle{How to survive in the modern societies}
+% \Ceditor{edited by\\ Walker Texas Ranger}
+% \Cfoot{Punch Press\\\fbox{\bfseries P\&P}}
+% \Cpagecolor{white!90!black}
+% \Ctextcolor{white}
+% \Cfootcolor{black}
+%
+% \makecover[ball color=DarkBlue,draw=none]
+% \end{verbatim}
+% \end{latexcode}
+%
+% To produce a complete book cover, with spine and dust jacket, you should take a look at the \sty{bookcover} package by Tibor Tómács.
%
% \subsection{The frontispiece} \enlargethispage{\baselineskip}
%
@@ -723,18 +708,18 @@
% with the \opt{suftesi} option. It is meant only for Italian users
% \parencite[see][version 1.4 or later]{Gregorio:frontespizio}:
%
-%\begin{latexcode}
-%\begin{verbatim}
-%\usepackage[suftesi]{frontespizio}
-%\end{verbatim}
-%\end{latexcode}
+% \begin{latexcode}
+% \begin{verbatim}
+% \usepackage[suftesi]{frontespizio}
+% \end{verbatim}
+% \end{latexcode}
% Note that this frontispiece requires the use of a logo which could be restricted by some institutions. So before using it you have to be sure that you have the required permissions.
%
% The \sty{frontespizio} package produces a frontispiece in the standard Computer Modern typeface. If you prefer a consistent font remember to load the needed packages or commands in the \cmd{Preambolo} command:
%
-%\begin{latexcode}
-%\begin{verbatim}
-%\begin{frontespizio}
+% \begin{latexcode}
+% \begin{verbatim}
+% \begin{frontespizio}
% \Preambolo{\usepackage[osf]{cochineal}}% <===
% \Universita{Paperopoli}
% \Dipartimento{Filosofia, Pedagogia e Psicologia}
@@ -745,9 +730,9 @@
% \Sottotitolo{Alcune considerazioni mutevoli}
% \Candidato[vr12301231]{Paolo Rossi}
% \Relatore{Guido Bianchi}
-%\end{frontespizio}
-%\end{verbatim}
-%\end{latexcode}
+% \end{frontespizio}
+% \end{verbatim}
+% \end{latexcode}
%
%
%
@@ -757,17 +742,17 @@
%
% \subsection{The appendices}
% Since version 2.9.5 the class relies on \sty{appendix} package to manage the appendices. To get the correct label in titles, headings and table of contents, you should use the \env{appendices} environment.
-%\begin{latexcode}
-%\begin{verbatim}
-%\renewcommand{\appendixpagename}{Appendices}
-%\renewcommand{\appendixname}{Appendix}
-%\addappheadtotoc
+% \begin{latexcode}
+% \begin{verbatim}
+% \renewcommand{\appendixpagename}{Appendices}
+% \renewcommand{\appendixname}{Appendix}
+% \addappheadtotoc
%
-%\begin{document}
+% \begin{document}
%...
-%\appendixpage
+% \appendixpage
%
-%\begin{appendices}
+% \begin{appendices}
%
% \chapter{First appendix}
% Lorem ipsum
@@ -775,18 +760,18 @@
% \chapter{First appendix}
% Lorem ipsum
%
-%\end{appendices}
-%\end{document}
-%\end{verbatim}
-%\end{latexcode}
+% \end{appendices}
+% \end{document}
+% \end{verbatim}
+% \end{latexcode}
%
%
% \section{Options}\label{sec:options}
%
% \subsection{Layout}\label{sec:page-styles}
%
-%\begin{optionlist}
-%\optitem[book]{structure}{\opt{book}, \opt{article}, \opt{collection}}
+% \begin{optionlist}
+% \optitem[book]{structure}{\opt{book}, \opt{article}, \opt{collection}}
% \changes{v0.9b}{2012/09/23}{New option \opt{structure}}
% \begin{valuelist}
% \item[book] For typesetting texts with chapters.
@@ -794,31 +779,31 @@
% (without chapters).
% \item[collection] For typesetting journals or collections of articles (see section \ref{sec:collection}).
% \end{valuelist}
-%\optitem[standard]{pagelayout}{\opt{standard}, \opt{standardaureo}, \opt{periodical}, \opt{periodicalaureo}, \opt{compact}, \opt{compactaureo}, \opt{supercompact}, \opt{supercompactaureo}}
+% \optitem[standard]{pagelayout}{\opt{standard}, \opt{standardaureo}, \opt{periodical}, \opt{periodicalaureo}, \opt{compact}, \opt{compactaureo}, \opt{supercompact}, \opt{supercompactaureo}}
% \changes{v0.9b}{2012/09/23}{New option \opt{pagestyle}}
-%\begin{valuelist}
-%\item[standard]
+% \begin{valuelist}
+% \item[standard]
% Prints an A4 page with a
% typeblock of $\SI{110}{mm} \times \SI{220}{mm}$.
-%\end{valuelist}
+% \end{valuelist}
% With the following values the option prints the typeblock
% on a an A4 paper showing the crop marks which can be controlled
% by the \opt{version} option.
-%\begin{valuelist}
-%\item[periodical]
+% \begin{valuelist}
+% \item[periodical]
% Prints a page of $\SI{17}{cm} \times \SI{24}{cm}$ with a typeblock of $\SI{11}{cm} \times \SI{16,5}{cm}$.
-%\item[periodicalaureo] The same of \opt{periodical} but with a
+% \item[periodicalaureo] The same of \opt{periodical} but with a
% \emph{golden ratio} typeblock of $\SI{120}{cm} \times \SI{194}{mm}$.
-%\item[compact]
+% \item[compact]
% Prints a page of $\SI{16}{cm} \times \SI{24}{cm}$ with a typeblock of $\SI{11}{cm} \times \SI{16,5}{cm}$.
-%\item[compactaureo]
+% \item[compactaureo]
% The same as \opt{compact} but with
-% a \emph{golden ratio} typeblock of $\SI{11,8}{cm} \times \SI{19,1}{cm}$.%\item[supercompact]
+% a \emph{golden ratio} typeblock of $\SI{11,8}{cm} \times \SI{19,1}{cm}$.% \item[supercompact]
% Prints a page of $\SI{14}{cm} \times \SI{21}{cm}$ with a typeblock of $\SI{10}{cm} \times \SI{15,5}{cm}$.
-%\item[supercompactaureo]
+% \item[supercompactaureo]
% The same as \opt{supercompact} but with
% a \emph{golden ratio} typeblock of $\SI{10,8}{cm} \times \SI{17,5}{cm}$.
-%\end{valuelist}
+% \end{valuelist}
% The details of this option are shown in table \ref{tab:layouts}.
% \optitem[final]{version}{\opt{screen}, \opt{cscreen}, \opt{draft}, \opt{final}}
% \begin{valuelist}
@@ -833,26 +818,26 @@
% \item[final] Prints the output on a A4 paper, hiding the crop marks. Useless with \opt{standard} and \opt{standardaureo} layouts.
% \end{valuelist}
% Sometimes it is not desirable to have the crop marks on every page. In such a case you can use the \cmd{crop}|[off]| command after the first page of the document.
-%\end{optionlist}
+% \end{optionlist}
%
-%\subsection{Font}\label{sec:fonts}
+% \subsection{Font}\label{sec:fonts}
%
-%\begin{optionlist}
+% \begin{optionlist}
% \optitem[10]{fontsize}{10, 10.1, 10.2...,11, 11.1, 11.2...}
% Sets the main font sizes for the document, changing the \cmd{baselineskip} accordingly. It is based on the \sty{fontsize} package. Remember that using \XeLaTeX{} or \LuaLaTeX{} you can change the default font size also with the option \opt{SizeFeatures} of \sty{fontspec}. For example:
-%\begin{latexcode}
-%\begin{verbatim}
-%\setmainfont[SizeFeatures={Size=11.5}]{Garamond Libre}
-%\end{verbatim}
-%\end{latexcode}
+% \begin{latexcode}
+% \begin{verbatim}
+% \setmainfont[SizeFeatures={Size=11.5}]{Garamond Libre}
+% \end{verbatim}
+% \end{latexcode}
%
-%\end{optionlist}
+% \end{optionlist}
% The first three options below are available only with \LaTeX.
% Using \XeLaTeX{} or \LuaLaTeX{}
% the default font is the Computer Modern but you can change it through
% the \sty{fontspec} or \sty{mathspec} (\XeLaTeX{} only) packages. If you do not need to typeset mathematics, with these engines I do suggest the EB Garamond font family by Georg Duffner.
%
-%\begin{optionlist}
+% \begin{optionlist}
% \optitem[cochineal]{defaultfont}{\opt{none}, \opt{cochineal}, \opt{libertine}, \opt{palatino}, \opt{standard}}
% \begin{valuelist}
% \item[none] Does not load any font. Use this option
@@ -888,7 +873,7 @@
%
% \begin{optionlist}
% \optitem[low]{smallcapsstyle}{\opt{low}, \opt{upper}}
-%Active only with \opt{\meta{level}font=smallcaps} and \opt{toc\meta{level}font=smallcaps} options (see sections \ref{sec:titles} and \ref{sec:toc}).
+% Active only with \opt{\meta{level}font=smallcaps} and \opt{toc\meta{level}font=smallcaps} options (see sections \ref{sec:titles} and \ref{sec:toc}).
% With \XeLaTeX{} or \LuaLaTeX{} this option is effective only if a font selection command (such as \cmd{setmainfont}) is given.
% \begin{valuelist}
% \item[low] Prints lowercase spaced \textsc{\lsstyle small capitals}.
@@ -1026,7 +1011,7 @@
%
% \begin{optionlist}
% \optitem[center]{quotestyle}{\opt{center}, \opt{right}}
-% \changes{v0.9b}{2012/09/23}{New option \opt{quotestyle}}
+% \changes{v0.9b}{2012/09/23}{New option \opt{quotestyle}}
% \begin{valuelist}
% \item[center]
% Indents the block quotations
@@ -1036,7 +1021,7 @@
% only on the left margin.
% \end{valuelist}
% \optitem[footnotesize]{quotesize}{\opt{footnotesize}, \opt{small}}
-% \changes{v0.9b}{2012/09/23}{New option \opt{quotationfont}}
+% \changes{v0.9b}{2012/09/23}{New option \opt{quotationfont}}
% \begin{valuelist}
% \item[footnotesize]
% Prints the block quotations
@@ -1089,18 +1074,20 @@
%
% \subsection{Miscellaneous}\label{sec:miscellaneous}
%
-%\begin{optionlist}
+% \begin{optionlist}
% \optitem[\cmd{baselineskip}]{parindent}{\opt{1em}, \opt{1cm}, \opt{17pt}, \ldots}
-% \changes{v0.9b}{2012/09/23}{New option \opt{parindent}}
+% \changes{v0.9b}{2012/09/23}{New option \opt{parindent}}
% \begin{valuelist}
-% Sets the indentation of the first line of each paragraph except those following a section title. For backward compatibility you should use \opt{parindet=1em} or \opt{parindet=1.5} in place of \opt{parindet=compact} and \opt{parindet=wide} respectively.
+% Sets the indentation of the first line of each paragraph except those following a section title.
+% For backward compatibility you should use \opt{parindet=1em} or \opt{parindet=1.5} in place
+% of \opt{parindet=compact} and \opt{parindet=wide} respectively.
% \end{valuelist}
-%\boolitem[true]{marginpar}
+% \boolitem[true]{marginpar}
% \begin{valuelist}
% \item[true] Prints the marginal notes.
% \item[false] Hide the marginal notes.
% \end{valuelist}
-%\boolitem[false]{partpage}
+% \boolitem[false]{partpage}
% \changes{v0.9b}{2012/09/23}{New option \opt{partpage}}
% Active only with \opt{structure=article}.
% \begin{valuelist}
@@ -1109,8 +1096,9 @@
% \item[false] Prints a part title similar to the one used in the standard \opt{article} class.
% \end{valuelist}
% \optitem[false]{draftdate}{\opt{true}, \opt{false}}
-% \changes{v1.0}{2012/10/14}{First stable release. Renamed option \opt{bozza} to \opt{draftdate}}
-% If \opt{true} it prints the string ``Version of \meta{date}'' in the footer. It requires the \cmd{date}\ar{\meta{date}} command.
+% \changes{v1.0}{2012/10/14}{First stable release. Renamed option \opt{bozza} to \opt{draftdate}}
+% If \opt{true} it prints the string ``Version of \meta{date}'' in the footer.
+% It requires the \cmd{date}\ar{\meta{date}} command.
% \end{optionlist}
%
% \subsection{Pre-defined styles}\label{sec:predefined-styles}
@@ -1130,10 +1118,13 @@
% The title can be printed on the left (styles 1 and 4),
% in the center (styles 2 and 5) or on the right (styles 3 and 6).
% \item[italic(1-12)]
-% The titles of chapters and headers are in \emph{italic}. The section title is in \emph{italic} in styles 1-6 and in \textsc{\lsstyle spaced small caps} in styles 7-12.
+% The titles of chapters and headers are in \emph{italic}. The section title is in \emph{italic}
+% in styles 1-6 and in \textsc{\lsstyle spaced small caps} in styles 7-12.
% There are three position for the title and two positions for the number as above.
% \item[smallcaps(1-12)]
-% The titles of chapters and headers are in \textsc{\lsstyle spaced small caps}. The title of the section is in \emph{italic} in styles 1-6 and in \textsc{\lsstyle spaced small caps} in styles 7-12.
+% The titles of chapters and headers are in \textsc{\lsstyle spaced small caps}.
+% The title of the section is in \emph{italic} in styles 1-6 and in
+% \textsc{\lsstyle spaced small caps} in styles 7-12.
% There are three position for the title and two positions for the chapter as above.
% \end{valuelist}
% \end{optionlist}
@@ -1147,11 +1138,13 @@
% \cmditem{makecover}
% \cmditem{makecover}[tikz options]
%
-% Prints the cover page (figure \ref{fig:cover}). This command requires \sty{tikz} and the optional arguments accepts the same options of the \cmd{draw} command of that package (see the examples below). Commands available:
+% Prints the cover page (figure \ref{fig:cover}). This command requires \sty{tikz}
+% and the optional arguments accepts the same options of the \cmd{draw}
+% command of that package (see the examples below). Commands available:
%
% \cmditem{Cauthor}{text}
%
-%Printed at the top of the circle.
+% Printed at the top of the circle.
%
% \cmditem{Ctitle}{text}
%
@@ -1159,29 +1152,29 @@
%
% \cmditem{Csubtitle}{text}
%
-%Printed below the title.
+% Printed below the title.
%
% \cmditem{Ceditor}{text}
%
-%Printed below the subtitle.
+% Printed below the subtitle.
%
% \cmditem{Cfoot}{text}
%
-%Printed in the footer.
+% Printed in the footer.
%
% The color of the circle can be customized using the optional argument of the \cmd{makecover} command. For the other elements of the cover page the following commands are available. (You can load \sty{xcolor} with your favorite option to access to many beautiful colors.)
%
% \cmditem{Cpagecolor}{color}
%
-%The color of the cover page.
+% The color of the cover page.
%
% \cmditem{Ctextcolor}{color}
%
-%The color of the text inside the circle.
+% The color of the text inside the circle.
%
% \cmditem{Cfootcolor}{color}
%
-%The color of the text in the footer.
+% The color of the text in the footer.
%
% \end{ltxsyntax}
%
@@ -1189,57 +1182,57 @@
%
% First you have to declare the informations you want to put in the cover page. It is better to give these informations in the preamble:
%
-%\begin{latexcode}
-%\begin{verbatim}
-%\usepackage{tikz}
-%
-%\Cauthor{Bruce Lee}
-%\Ctitle{The Art of Kicking}
-%\Csubtitle{How to survive in the modern societies}
-%\Ceditor{edited by\\ Walker Texas Ranger}
-%\Cfoot{Punch Press\\\includegraphics[width=1cm]{logo}}
-%\end{verbatim}
-%\end{latexcode}
+% \begin{latexcode}
+% \begin{verbatim}
+% \usepackage{tikz}
+%
+% \Cauthor{Bruce Lee}
+% \Ctitle{The Art of Kicking}
+% \Csubtitle{How to survive in the modern societies}
+% \Ceditor{edited by\\ Walker Texas Ranger}
+% \Cfoot{Punch Press\\\includegraphics[width=1cm]{logo}}
+% \end{verbatim}
+% \end{latexcode}
%
-%Then you can print the cover page with:
+% Then you can print the cover page with:
%
-%\begin{ttquote}
-%\cmd{makecover}\phantom{\oar{\meta{tikz options}}}
-%\end{ttquote}
+% \begin{ttquote}
+% \cmd{makecover}\phantom{\oar{\meta{tikz options}}}
+% \end{ttquote}
%
% or
%
-%\begin{ttquote}
-%\cmd{makecover}\oar{\meta{tikz options}}
-%\end{ttquote}
+% \begin{ttquote}
+% \cmd{makecover}\oar{\meta{tikz options}}
+% \end{ttquote}
% You can customize the circle using the optional arguments of the \cmd{makecover} command. Some of these \meta{tikz options} require special \sty{tikz} libraries. For example, you can add a shadow to the circle loading the \texttt{shadows} library and using the \texttt{circular drop shadow} otpion:
%
-%\begin{latexcode}
-%\begin{verbatim}
-%\usepackage{tikz}
-%\usetikzlibrary{shadows}
+% \begin{latexcode}
+% \begin{verbatim}
+% \usepackage{tikz}
+% \usetikzlibrary{shadows}
%...
-%\begin{document}
-%\makecover[circular drop shadow]
-%\end{document}
-%\end{verbatim}
-%\end{latexcode}
+% \begin{document}
+% \makecover[circular drop shadow]
+% \end{document}
+% \end{verbatim}
+% \end{latexcode}
%
% There are thousands of possibilities. Here is another (not necessarily good) example:
-%\begin{latexcode}
-%\begin{verbatim}
-%\usepackage{tikz}
-%
-%\Cpagecolor{gray!30}
-%\Ctextcolor{blue!50}
-%\Cfootcolor{black}
-%
-%\begin{document}
-%\makecover[fill=blue!30!black,draw=teal,line width=2mm,dashed]
-%\end{document}
-%\end{verbatim}
-%\end{latexcode}
+% \begin{latexcode}
+% \begin{verbatim}
+% \usepackage{tikz}
+%
+% \Cpagecolor{gray!30}
+% \Ctextcolor{blue!50}
+% \Cfootcolor{black}
+%
+% \begin{document}
+% \makecover[fill=blue!30!black,draw=teal,line width=2mm,dashed]
+% \end{document}
+% \end{verbatim}
+% \end{latexcode}
%
%
% \subsection{Printing the colophon}
@@ -1261,13 +1254,13 @@
% (see below)
% as well as the \cmd{thanks} command:
%
-%\begin{latexcode}
-%\begin{verbatim}
-%\author{Name Surname
+% \begin{latexcode}
+% \begin{verbatim}
+% \author{Name Surname
% \thanks{This work has been typeset with \LaTeX, using the
% \textsf{suftesi} class by Ivan Valbusa}.}
-%\end{verbatim}
-%\end{latexcode}
+% \end{verbatim}
+% \end{latexcode}
%
% \cmditem{bookcolophon}{copyright notice}{attribution notice and
% other informations}
@@ -1277,16 +1270,16 @@
% The first argument prints its content (usually the copyright notice) in the center of the page.
% The second one prints its content at the bottom. For example:
%
-%\begin{latexcode}
-%\begin{verbatim}
+% \begin{latexcode}
+% \begin{verbatim}
% \bookcolophon{%
% Copyright © 2007 by Ivan Valbusa}{%
% This work has been typeset with \LaTeX, using the \textsf{suftesi}
% class by Ivan Valbusa\index{Valbusa, Ivan}. The serif font is
% Cochineal by Michael Sharpe and the sans serif font is Linux
% Biolinum O by Philipp H. Poll.}
-%\end{verbatim}
-%\end{latexcode}
+% \end{verbatim}
+% \end{latexcode}
%
% \cmditem{artcolophon}{copyright notice, attribution and other informations}
% \changes{v0.6}{2011/10/21}{New command \cmd{artcolophon}}
@@ -1295,8 +1288,8 @@
% bottom of the page.
% Here is an example:
%
-%\begin{latexcode}
-%\begin{verbatim}
+% \begin{latexcode}
+% \begin{verbatim}
% \artcolophon{%
% This work is licensed under the Creative Commons
% Attribution-NonCommercial-NoDerivs 3.0 Unported
@@ -1310,8 +1303,8 @@
%
% Typeset with \LaTeX, using the \textsf{suftesi}
% class by Ivan Valbusa.}
-%\end{verbatim}
-%\end{latexcode}
+% \end{verbatim}
+% \end{latexcode}
%
% \cmditem{finalcolophon}{colophon content}
%
@@ -1329,20 +1322,20 @@
% A manual break which is active for the table of contents but not in the text or in the headers.
%
% \begin{latexcode}
-%\begin{verbatim}
+% \begin{verbatim}
% \section{This title will be break here \headbreak{}
% inside the table of contents}
-%\end{verbatim}
+% \end{verbatim}
% \end{latexcode}
% \cmditem{xheadbreak}
%
% A manual break which is active in the text but not in the headers and in the table of contents.
%
% \begin{latexcode}
-%\begin{verbatim}
+% \begin{verbatim}
% \section{This title will be break here \xheadbreak{}
% inside the text}
-%\end{verbatim}
+% \end{verbatim}
% \end{latexcode}
% \end{ltxsyntax}
%
@@ -1352,56 +1345,56 @@
%
% The commands in this section are experimental. They provide a fast way to customize the format of section titles and numbers. Note that in some cases you will have to manually adjust the spacing accordingly, using \cmd{titlespacing}, \cmd{hskip}/\cmd{hspace}, \cmd{vskip}/\cmd{vspace}, and so on.
%
-%\begin{ltxsyntax}
+% \begin{ltxsyntax}
% \cmditem*{\meta{level}font}{definition}\hfill(default=\texttt{empty})
%
% Changes the font of the \meta{level} title. Where \meta{level} can be \opt{part}, \opt{chap}, \opt{sec}, \opt{subsec}, \opt{subsubsec}. For example, to change the size of the chapter title according to the \opt{chapfont=smallcaps} option you should use:
%
-%\begin{latexcode}
-%\begin{verbatim}
-%\chapfont{\fontsize{13}{17}\scshape\lsstyle\expandafter\MakeLowercase}
-%\end{verbatim}
-%\end{latexcode}
+% \begin{latexcode}
+% \begin{verbatim}
+% \chapfont{\fontsize{13}{17}\scshape\lsstyle\expandafter\MakeLowercase}
+% \end{verbatim}
+% \end{latexcode}
% \cmditem*{\meta{level}numfont}{definition}\hfill(default=\texttt{empty})
%
% Changes the font of the \meta{level} number. Where \meta{level} can be \opt{part}, \opt{chap}, \opt{sec}, \opt{subsec}, \opt{subsubsec}. For example:
%
-%\begin{latexcode}
-%\begin{verbatim}
-%\chapnumfont{\bfseries\fontsize{160}{50}\selectfont
+% \begin{latexcode}
+% \begin{verbatim}
+% \chapnumfont{\bfseries\fontsize{160}{50}\selectfont
% \color{gray}\arabic{chapter}\hskip-15cm}
-%\end{verbatim}
-%\end{latexcode}
+% \end{verbatim}
+% \end{latexcode}
% Combining these commands you can get something like this (or something worse/better):
-%\begin{latexcode}
-%\begin{verbatim}
-%\documentclass[pagelayout=periodicalaureo,11pt,
-%version=cscreen,chapstyle=parright]{suftesi}
+% \begin{latexcode}
+% \begin{verbatim}
+% \documentclass[pagelayout=periodicalaureo,11pt,
+% version=cscreen,chapstyle=parright]{suftesi}
%
-%\usepackage{xcolor,lipsum}
+% \usepackage{xcolor,lipsum}
%
-%\chapfont{\bfseries\sffamily\scshape\LARGE}
-%\secfont{\sffamily\fontsize{14.5}{15.5}\selectfont}
+% \chapfont{\bfseries\sffamily\scshape\LARGE}
+% \secfont{\sffamily\fontsize{14.5}{15.5}\selectfont}
%
-%\chapnumfont{\hskip1cm\hbox{\bfseries\fontsize{100}{100}\selectfont%
-%\color{gray}\arabic{chapter}}\hskip-1cm}
-%\secnumfont{\bfseries---\,\arabic{chapter}.\arabic{section}}
+% \chapnumfont{\hskip1cm\hbox{\bfseries\fontsize{100}{100}\selectfont%
+% \color{gray}\arabic{chapter}}\hskip-1cm}
+% \secnumfont{\bfseries---\,\arabic{chapter}.\arabic{section}}
%
-%\begin{document}
+% \begin{document}
%
-%\chapter{Lorem ipsum dolor sit amet, consectetuer adipiscing elit}
+% \chapter{Lorem ipsum dolor sit amet, consectetuer adipiscing elit}
%
-%\section{Dolor sit amet}
-%\lipsum[1-2]
+% \section{Dolor sit amet}
+% \lipsum[1-2]
%
-%\section{Lorem ipsum dolor sit amet}
-%\subsection{Dolor sit amet}
-%\lipsum[1]
+% \section{Lorem ipsum dolor sit amet}
+% \subsection{Dolor sit amet}
+% \lipsum[1]
%
-%\end{document}
-%\end{verbatim}
-%\end{latexcode}
-%\end{ltxsyntax}
+% \end{document}
+% \end{verbatim}
+% \end{latexcode}
+% \end{ltxsyntax}
%
% \subsection{Miscellaneous}
%
@@ -1427,15 +1420,15 @@
%
% \begin{ltxsyntax}
% \cmditem{toclabelwidth}{level}{dim}
-% \changes{v0.9a}{2012/08/31}{New command \cmd{toclabelspace}}
+% \changes{v0.9a}{2012/08/31}{New command \cmd{toclabelspace}}
%
% Adds the \meta{dim} to the \meta{level} label in the table of contents, where \meta{level} can be \opt{part}, \opt{chap}, \opt{sec}, \opt{subsec}, \opt{subsubsec}, \opt{par}, \opt{subpar}, \opt{fig}, \opt{tab}. For example, when using \opt{chapnumstyle=Roman} you would probably need to adjust the width of the chapter label with:
%
-%\begin{latexcode}
-%\begin{verbatim}
+% \begin{latexcode}
+% \begin{verbatim}
% \toclabelwidth{chap}{1em}
-%\end{verbatim}
-%\end{latexcode}
+% \end{verbatim}
+% \end{latexcode}
% \end{ltxsyntax}
%
%
@@ -1454,24 +1447,24 @@
% \cmditem{appendixpage}
%
% Prints a page with the title provided by \cmd{appendixpagename} (default=\texttt{Appendici}) at the center according to the \opt{partfont} option. You can redefine the command by (see the \sty{appendix} package documentation for details):
-%\begin{latexcode}
-%\begin{verbatim}
+% \begin{latexcode}
+% \begin{verbatim}
% \renewcommand{\appendixpagename}{Appendices}
-%\end{verbatim}
-%\end{latexcode}%
+% \end{verbatim}
+% \end{latexcode}%
% ^^A \cmditem{appendicesname}{name}\hfill(default=\texttt{Appendici})
% ^^A
% ^^A Changes in \meta{name} the title printed by the \cmd{appendixpage} command.
%
-%\end{ltxsyntax}
+% \end{ltxsyntax}
%
%
% \section{Collections}\label{sec:collection}
%
% The \opt{collection} document structure is thought to create a collection of papers. Each paper has to be typeset in a separate \file{.tex} file inside the \env{article} environment:
%
-%\begin{latexcode}
-%\begin{verbatim}
+% \begin{latexcode}
+% \begin{verbatim}
% \begin{article}
% \author{Author}
% \title{Title of the paper}
@@ -1484,12 +1477,12 @@
%
% Text of the paper
% \end{article}
-%\end{verbatim}
+% \end{verbatim}
% \end{latexcode}
% If the names of the papers are \file{article1.tex}, \file{article2.tex}, \file{article3.tex}, etc., then a minimal main file should be similar to this:
%
-%\begin{latexcode}
-%\begin{verbatim}
+% \begin{latexcode}
+% \begin{verbatim}
% \documentclass[structure=collection]{suftesi}
%
% \begin{document}
@@ -1497,8 +1490,8 @@
% \input{article2}
% \input{article3}
% \end{document}
-%\end{verbatim}
-%\end{latexcode}
+% \end{verbatim}
+% \end{latexcode}
%
% \subsection{Options}
%
@@ -1533,11 +1526,11 @@
% to protect the \cmd{thanks} command:
%
% \begin{latexcode}
-%\begin{verbatim}
-%\author{The Author\protect\thanks{...}}
-%\end{verbatim}
+% \begin{verbatim}
+% \author{The Author\protect\thanks{...}}
+% \end{verbatim}
% \end{latexcode}
-%\end{valuelist}
+% \end{valuelist}
% \optitem[italic]{toctitlefont}{\opt{roman}, \opt{italic}, \opt{smallcaps}}
% \begin{valuelist}
% \item[roman] Prints the title TOC entry in roman.
@@ -1551,7 +1544,7 @@
% \item[italic] Prints the author’s name TOC entry in \emph{italic}.
% \item[smallcaps] Prints the author’s name TOC entry
% in \textsc{\lsstyle spaced small caps}.
-%\end{valuelist}
+% \end{valuelist}
% \end{optionlist}
%
% \subsection{Commands}
@@ -1579,36 +1572,36 @@
%
% Changes the font of the title of the articles and of the author's name. For example:
%
-%\begin{latexcode}
-%\begin{verbatim}
+% \begin{latexcode}
+% \begin{verbatim}
% \titlefont{\bfseries\sffamily\scshape}
% \authorfont{\itshape\sffamily}
-%\end{verbatim}
-%\end{latexcode}
-%\end{ltxsyntax}
+% \end{verbatim}
+% \end{latexcode}
+% \end{ltxsyntax}
%
% \section{Known issues}
%
% A problem occurs with the article document structure. The \cmd{part} command resets the headers so if it is the first sectioning command of the page you will get no headers in that page. In this case you have to add the header manually with something like this:
-%\begin{latexcode}
-%\begin{verbatim}
-%\markboth{Section title}{Section title}
-%\part{The title of the part}
+% \begin{latexcode}
+% \begin{verbatim}
+% \markboth{Section title}{Section title}
+% \part{The title of the part}
% %
-%\section{Section title}
-%\end{verbatim}
-%\end{latexcode}
-%If the title of the part is at the beginning of the page you will need the \sty{afterpage} package and the \cmd{afterapge} command:
-%\begin{latexcode}
-%\begin{verbatim}
-%\afterpage{
+% \section{Section title}
+% \end{verbatim}
+% \end{latexcode}
+% If the title of the part is at the beginning of the page you will need the \sty{afterpage} package and the \cmd{afterapge} command:
+% \begin{latexcode}
+% \begin{verbatim}
+% \afterpage{
% \markboth{Section title}{Section title}
% \part{The title of the part}
% }
% %
-%\section{Section title}
-%\end{verbatim}
-%\end{latexcode}
+% \section{Section title}
+% \end{verbatim}
+% \end{latexcode}
%
%
%
@@ -1619,7 +1612,7 @@
% Loads the fonts of \sty{suftesi} v2.3 (and previous): Palatino (\sty{mathpazo}), Iwona, Bera Mono. To get the default Greek font of those versions (i.e. Artemisia) add the \opt{greekfont=artemisia} option.
% \optitem[book]{documentstructure}{\opt{book}, \opt{article}, \opt{collection}}
% An alias for \opt{structure}
-%\boolitem[true]{crop}
+% \boolitem[true]{crop}
% \begin{valuelist}
% \item[true] An alias for \opt{version=draft} option.
% \item[false] An alias for \opt{version=center} option.
@@ -1633,32 +1626,32 @@
%
%
% \changes{v1.3}{2013/03/05}{New command \cmd{FSPLcolophon}}
-%\noindent The \cmd{FSPLcolophon}\ar{\meta{Name Surname}} command is provided to typeset the colophon according to these styles:
-%\medskip
+% \noindent The \cmd{FSPLcolophon}\ar{\meta{Name Surname}} command is provided to typeset the colophon according to these styles:
+% \medskip
%
-%\noindent\rule{\textwidth}{.4pt}
+% \noindent\rule{\textwidth}{.4pt}
%
-%\noindent\textcircled{\raisebox{1pt}{\scalebox{.7}{cc}}} \the\year{} \meta{Name Surname}%
-%\vskip1ex
+% \noindent\textcircled{\raisebox{1pt}{\scalebox{.7}{cc}}} \the\year{} \meta{Name Surname}%
+% \vskip1ex
%
%
-%\small\noindent This work is licensed under the Creative Commons
-%Attribution-NonCommercial-NoDerivs 3.0 Unported License.
+% \small\noindent This work is licensed under the Creative Commons
+% Attribution-NonCommercial-NoDerivs 3.0 Unported License.
%
-%\noindent To view a copy of this license,
-%visit http://creativecommons.org/licenses/by-nc-nd/3.0/.
+% \noindent To view a copy of this license,
+% visit http://creativecommons.org/licenses/by-nc-nd/3.0/.
%
-%\footnotesize
+% \footnotesize
%
-%\bigskip
+% \bigskip
%
-%\noindent Typeset with \LaTeX{} in collaboration with the Joint Project
-%\emph{Formal Style for PhD Theses with \LaTeX{}} (University of Verona,
-%Italy) using the \textsf{suftesi} class by Ivan Valbusa. The text face
-%is Palatino, designed by Hermann Zapf. The sans serif font is Iwona by Janus M. Nowacki.
+% \noindent Typeset with \LaTeX{} in collaboration with the Joint Project
+% \emph{Formal Style for PhD Theses with \LaTeX{}} (University of Verona,
+% Italy) using the \textsf{suftesi} class by Ivan Valbusa. The text face
+% is Palatino, designed by Hermann Zapf. The sans serif font is Iwona by Janus M. Nowacki.
%
%
-%\noindent\rule{\textwidth}{.4pt}
+% \noindent\rule{\textwidth}{.4pt}
%
% ^^A\section*{Obsolete options}
%
@@ -1821,15 +1814,6 @@
%<*class>
% \fi
% \begin{macrocode}
-\ClassWarningNoLine{suftesi}{%
- ******************************************\MessageBreak
- * DO NOT MODIFY THE STYLES OF THIS CLASS\MessageBreak
- * WITH PACKAGES AND/OR COMMANDS WHICH\MessageBreak
- * MAY CHANGE THE LAYOUT OF THE DOCUMENT.\MessageBreak
- * SEE DOCUMENTATION FOR DETAILS.\MessageBreak
- * ANYWAY, DON'T WORRY!\MessageBreak
- * THIS IS A HARMLESS MESSAGE :-)\MessageBreak
- ******************************************}
\RequirePackage{xkeyval}
\newif\ifsuftesi@compatibility
\newif\ifsuftesi@nofont
@@ -1898,7 +1882,7 @@
\ProcessOptions
\relax
\LoadClass{book}
-\@ifpackageloaded{fontsize}{}{\RequirePackage{fontsize}}
+\RequirePackage{fontsize}
\DeclareOptionX{parindent}{\setlength{\parindent}{#1}}
\ExecuteOptionsX{parindent=\baselineskip}
\ProcessOptionsX*\relax
@@ -1944,7 +1928,7 @@
\DeclareRobustCommand{\SUF@sectionsize}{\large}
\DeclareRobustCommand{\SUF@subsectionsize}{\normalsize}
\DeclareRobustCommand{\SUF@subsubsectionsize}{\normalsize}
- \geometry{%
+ \geometry{
heightrounded,
a4paper,
includeheadfoot=true,
@@ -1959,7 +1943,7 @@
\DeclareRobustCommand{\SUF@sectionsize}{\large}
\DeclareRobustCommand{\SUF@subsectionsize}{\normalsize}
\DeclareRobustCommand{\SUF@subsubsectionsize}{\normalsize}
- \geometry{%
+ \geometry{
heightrounded,
a4paper,
includeheadfoot=true,
@@ -2060,7 +2044,7 @@
\DeclareRobustCommand{\SUF@sectionsize}{\normalsize}
\DeclareRobustCommand{\SUF@subsectionsize}{\normalsize}
\DeclareRobustCommand{\SUF@subsubsectionsize}{\normalsize}
- \geometry{%
+ \geometry{
heightrounded,
includeheadfoot=true,
textwidth= 120mm,
@@ -2212,7 +2196,6 @@
\or
\def\SUF@SUBSUBSEC@StyleSwitch{\expandafter\SUF@titlesmallcaps}
\fi}
-%
% \end{macrocode}
% \subsection*{TOC font}
% \begin{macrocode}
@@ -2462,20 +2445,16 @@ dotarabic,dotroman,dotRoman}[arabic]{%
\newcommand{\subsubsecnumfont}[1]{\def\SUF@thesubsubsection{#1}}
\newcommand{\titlefont}[1]{\def\SUF@titlefont@Switch{#1}}
\newcommand{\authorfont}[1]{\def\SUF@authorfont@Switch{#1}}
-%
% \newcommand{\tocpartfont}[1]{\def\SUF@tocPART@font{#1}}
\newcommand{\tocchapfont}[1]{\def\SUF@tocCHAP@font{#1}}
\newcommand{\tocsecfont}[1]{\def\SUF@tocSEC@font{#1}}
\newcommand{\tocsubsecfont}[1]{\def\SUF@tocSUBSEC@font{#1}}
\newcommand{\tocsubsubsecfont}[1]{\def\SUF@tocSUBSUBSEC@font{#1}}
-
-% \newcommand{\tocpartnumfont}[1]{\def\SUF@PART@thecontentslabel{#1\thecontentslabel}}
+\newcommand{\tocpartnumfont}[1]{\def\SUF@PART@thecontentslabel{#1\thecontentslabel}}
\newcommand{\tocchapnumfont}[1]{\def\SUF@CHAP@thecontentslabel{#1\thecontentslabel}}
\newcommand{\tocsecnumfont}[1]{\def\SUF@SEC@thecontentslabel{#1\thecontentslabel}}
\newcommand{\tocsubsecnumfont}[1]{\def\SUF@SUBSEC@thecontentslabel{#1\thecontentslabel}}
\newcommand{\tocsubsubsecnumfont}[1]{\def\SUF@SUBSUBSEC@thecontentslabel{#1\thecontentslabel}}
-
-%
% \end{macrocode}
% \subsection*{Headers}
%
@@ -3064,7 +3043,6 @@ quotesize,footnotestyle,liststyle,captionstyle}
\or
\def\SUF@titlefont@Switch{\expandafter\SUF@titlesmallcaps}
\fi}
-
\define@choicekey{}{authorfont}[\val\nr]{roman,italic,smallcaps}[roman]{%
\ifcase\nr\relax
\def\SUF@authorfont@Switch{\relax}
@@ -3496,7 +3474,7 @@ quotesize,footnotestyle,liststyle,captionstyle}
% \begin{macrocode}
\def\SUF@default@SECTIONS{
\ifsuftesi@numparsec
-%\titleformat{\section}[display]
+% \titleformat{\section}[display]
% {\SUF@sectionsize\SUF@lr@SECSwitch}
% {\ifsuftesi@article\SUF@thesection
% \else\thesection\fi\SUF@dotsec}
@@ -3509,7 +3487,7 @@ quotesize,footnotestyle,liststyle,captionstyle}
{\SUF@SEC@StyleSwitch}
\titlespacing*{\section}{0em}{\sectionsep}{\sectionsep}[0em]
\else
-%\titleformat{\section}[hang]
+% \titleformat{\section}[hang]
% {\SUF@sectionsize\SUF@lr@SECSwitch}
% {\ifsuftesi@article\SUF@thesection
% \else\thesection\fi\SUF@dotsec}
@@ -3525,7 +3503,7 @@ quotesize,footnotestyle,liststyle,captionstyle}
% \end{macrocode}
% \begin{macrocode}
\ifsuftesi@numparsubsec
-%\titleformat{\subsection}[display]
+% \titleformat{\subsection}[display]
% {\SUF@subsectionsize\SUF@lr@SUBSECSwitch}
% {\textnormal\thesubsection}
% {0ex}
@@ -3537,7 +3515,7 @@ quotesize,footnotestyle,liststyle,captionstyle}
{\SUF@SUBSEC@StyleSwitch}
\titlespacing*{\subsection}{0em}{\sectionsep}{\sectionsep}[0em]
\else
-%\titleformat{\subsection}[hang]
+% \titleformat{\subsection}[hang]
% {\SUF@subsectionsize\SUF@lr@SUBSECSwitch}
% {\textnormal\thesubsection}
% {1em}
@@ -3552,7 +3530,7 @@ quotesize,footnotestyle,liststyle,captionstyle}
% \end{macrocode}
% \begin{macrocode}
\ifsuftesi@numparsubsubsec
-%\titleformat{\subsubsection}[display]
+% \titleformat{\subsubsection}[display]
% {\SUF@subsectionsize\SUF@lr@SUBSUBSECSwitch}
% {\textnormal\thesubsubsection}
% {0ex}
@@ -3564,7 +3542,7 @@ quotesize,footnotestyle,liststyle,captionstyle}
{\SUF@SUBSUBSEC@StyleSwitch}
\titlespacing*{\subsubsection}{0em}{\sectionsep}{\sectionsep}[0em]
\else
-%\titleformat{\subsubsection}[hang]
+% \titleformat{\subsubsection}[hang]
% {\SUF@subsectionsize\SUF@lr@SUBSUBSECSwitch}
% {\textnormal\thesubsubsection}
% {1em}
@@ -3857,7 +3835,6 @@ quotesize,footnotestyle,liststyle,captionstyle}
\def\isbn#1{\gdef\@issn{#1}}
\def\@issn{\@latex@warning@no@line{%
No \noexpand\isbn given}}
-
\renewcommand*{\title}[2][]{\gdef\@headtitle{#1}\gdef\@title{#2}}
\edef\title{\noexpand\@dblarg
\expandafter\noexpand\csname\string\title\endcsname}
@@ -4119,7 +4096,6 @@ quotesize,footnotestyle,liststyle,captionstyle}
\protect\ClassWarningNoLine{suftesi}{%
No \string\author\space given\MessageBreak%
See the class documentation for explanation}}
-
\newcommand*\l@title[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
@@ -4214,7 +4190,7 @@ quotesize,footnotestyle,liststyle,captionstyle}
\SUF@titlefont@Switch{\@title}%
\fi\vskip1.5cm}}%
}
-%\newenvironment{article}
+% \newenvironment{article}
% {\begingroup
% \global\let\@thanks\@empty
% \setcounter{footnote}{0}
@@ -4554,7 +4530,7 @@ quotesize,footnotestyle,liststyle,captionstyle}
{\list{}{\leftmargin \parindent
\SUF@quote@style}%
\item\relax%
- \SUF@quotation@size}%\ignorespaces?
+ \SUF@quotation@size}% \ignorespaces?
{\endlist}
\renewenvironment{verse}
{\let\\\@centercr
@@ -5494,7 +5470,6 @@ Janusz M. Nowacki.
Volume = {6},
Year = {2008}}
-
@article{valbusa:20122,
Author = {Ivan Valbusa},
Date = {2012},
@@ -5508,7 +5483,6 @@ Janusz M. Nowacki.
Title = {La forma del testo umanistico},
url={http://www.guitex.org/home/images/ArsTeXnica/AT014/valbusa.pdf}}
-
@book{munari:arte-come-mestiere,
Author = {Bruno Munari},
Booktitle = {Arte come mestiere},
@@ -5518,7 +5492,6 @@ Janusz M. Nowacki.
Publisher = {Laterza},
Title = {Arte come mestiere},
Year = {1966}}
-
%</bib>
% \fi
%
diff --git a/macros/latex/contrib/suftesi/suftesi.pdf b/macros/latex/contrib/suftesi/suftesi.pdf
index 4c6a1e43c4..02e73f34ab 100644
--- a/macros/latex/contrib/suftesi/suftesi.pdf
+++ b/macros/latex/contrib/suftesi/suftesi.pdf
Binary files differ
diff --git a/macros/luatex/generic/luamplib/NEWS b/macros/luatex/generic/luamplib/NEWS
index 109cb4ffcb..7155c5a4b8 100644
--- a/macros/luatex/generic/luamplib/NEWS
+++ b/macros/luatex/generic/luamplib/NEWS
@@ -1,5 +1,11 @@
History of the luamplib package
+2020/02/24 2.20.5
+ * Extra check for \pdfliteral (PR #89)
+ * allow expansion of \mpdim and \mpcolor when they are used in
+ another macro
+ * step copyright year
+
2019/12/11 2.20.4
* remove unnecessary setting of endlinechar
* \prependtomplibbox instead of \mplibhmodeornot
diff --git a/macros/luatex/generic/luamplib/luamplib.dtx b/macros/luatex/generic/luamplib/luamplib.dtx
index e683a7a2f4..af3229da7a 100644
--- a/macros/luatex/generic/luamplib/luamplib.dtx
+++ b/macros/luatex/generic/luamplib/luamplib.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment -- by the way, this file contains UTF-8
%
-% Copyright (C) 2008-2019 by Hans Hagen, Taco Hoekwater, Elie Roux,
+% Copyright (C) 2008-2020 by Hans Hagen, Taco Hoekwater, Elie Roux,
% Manuel Pégourié-Gonnard, Philipp Gesang and Kim Dohyun.
% Currently maintained by the LuaLaTeX development team.
% Support: <lualatex-dev@tug.org>
@@ -85,7 +85,7 @@ See source file '\inFileName' for licencing and contact information.
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{luamplib.drv}%
- [2019/12/11 v2.20.4 Interface for using the mplib library]%
+ [2020/02/24 v2.20.5 Interface for using the mplib library]%
\documentclass{ltxdoc}
\usepackage{metalogo,multicol,mdwlist,fancyvrb,xspace}
\usepackage[x11names]{xcolor}
@@ -153,7 +153,7 @@ See source file '\inFileName' for licencing and contact information.
% \author{Hans Hagen, Taco Hoekwater, Elie Roux, Philipp Gesang and Kim Dohyun\\
% Maintainer: LuaLaTeX Maintainers ---
% Support: \email{lualatex-dev@tug.org}}
-% \date{2019/12/11 v2.20.4}
+% \date{2020/02/24 v2.20.5}
%
% \maketitle
%
@@ -407,8 +407,8 @@ See source file '\inFileName' for licencing and contact information.
luatexbase.provides_module {
name = "luamplib",
- version = "2.20.4",
- date = "2019/12/11",
+ version = "2.20.5",
+ date = "2020/02/24",
description = "Lua package to typeset Metapost with LuaTeX's MPLib.",
}
@@ -1960,7 +1960,7 @@ luamplib.colorconverter = colorconverter
\else
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{luamplib}
- [2019/12/11 v2.20.4 mplib package for LuaTeX]
+ [2020/02/24 v2.20.5 mplib package for LuaTeX]
\ifx\newluafunction\@undefined
\input ltluatex
\fi
@@ -1974,15 +1974,21 @@ luamplib.colorconverter = colorconverter
%
% Support older engine. Seems we don't need it, but no harm.
% \begin{macrocode}
-\ifx\scantextokens\undefined
- \let\scantextokens\luatexscantextokens
-\fi
\ifx\pdfoutput\undefined
\let\pdfoutput\outputmode
\protected\def\pdfliteral{\pdfextension literal}
\fi
% \end{macrocode}
%
+% Unfortuantely there are still packages out there that think it is a good
+% idea to manually set \cs{pdfoutput} which defeats the above branch that
+% defines \cs{pdfliteral}. To cover that case we need an extra check.
+% \begin{macrocode}
+\ifx\pdfliteral\undefined
+ \protected\def\pdfliteral{\pdfextension literal}
+\fi
+% \end{macrocode}
+%
% Set the format for metapost.
% \begin{macrocode}
\def\mplibsetformat#1{\directlua{luamplib.setformat("#1")}}
@@ -2118,10 +2124,14 @@ luamplib.colorconverter = colorconverter
}
% \end{macrocode}
%
-% Allow \TeX\ dimen macros in |mplibcode|. But now |runscript| does the job.
-% \begin{verbatim}
-% \def\mpdim#1{ begingroup \the\dimexpr #1\relax\space endgroup }% gmp.sty
-% \end{verbatim}
+% Allow \TeX\ dimen/color macros. Now |runscript| does the job,
+% so the following lines are not needed for most cases.
+% But the macros will be expanded when they are used in another macro.
+% \begin{macrocode}
+\def\mpdim#1{ mplibdimen("#1") }
+\def\mpcolor#1#{\domplibcolor{#1}}
+\def\domplibcolor#1#2{ mplibcolor("#1{#2}") }
+% \end{macrocode}
%
% MPLib's number system. Now |binary| has gone away.
% \begin{macrocode}
diff --git a/macros/luatex/generic/luamplib/luamplib.pdf b/macros/luatex/generic/luamplib/luamplib.pdf
index 7ddfb31505..881e643e25 100644
--- a/macros/luatex/generic/luamplib/luamplib.pdf
+++ b/macros/luatex/generic/luamplib/luamplib.pdf
Binary files differ