diff options
Diffstat (limited to 'macros/latex')
51 files changed, 1082 insertions, 505 deletions
diff --git a/macros/latex/contrib/acmart/README b/macros/latex/contrib/acmart/README index c354989831..e6e3e8cbca 100644 --- a/macros/latex/contrib/acmart/README +++ b/macros/latex/contrib/acmart/README @@ -12,10 +12,12 @@ The production version is the one on CTAN and ACM sites. Changes +Version 2.01 \acmPrice now produces a warning. + Version 2.00 ACM switches to electronic only version. We do not print article tabs anymore. New copyright wording. - Deleted acmPrice. + Deleted \acmPrice. Version 1.93 Added PACMSE diff --git a/macros/latex/contrib/acmart/acmart-changes.tex b/macros/latex/contrib/acmart/acmart-changes.tex new file mode 100644 index 0000000000..4531b79533 --- /dev/null +++ b/macros/latex/contrib/acmart/acmart-changes.tex @@ -0,0 +1,117 @@ +% !Mode:: "TeX:UTF-8:Main" +% !Mode:: "TeX:UTF-8:Main" +\DocumentMetadata{testphase={phase-III,firstaid}} + +% # store and restore section command: +\makeatletter +\let\ori@startsection\@startsection +\let\ori@xsect\@xsect +\let\ori@sect\@sect +\let\ori@ssect\@ssect +\documentclass[]{acmart} +\let\@startsection\ori@startsection %acmart definition is like kernel, so tagging version should be ok +\let\@xsect\ori@xsect %acmart definition is like kernel, so tagging version should be ok +% everyone patches \@sect and @ssect, here we should change the internal nameref version ;-( +\let\NR@ssect\ori@ssect %acmart definition is like kernel, so tagging version should be ok +\let\NR@sect\ori@sect %TODO: must be checked! acmart definition is slightly different. + + +% part is level 9??? It must be checked if this confuse the new tagging code. +\renewcommand\part{\@startsection{part}{9}{\z@}% + {-10\p@ \@plus -4\p@ \@minus -2\p@}% + {4\p@}% + {\ACM@NRadjust\@parfont}} +\def\toclevel@part{9} %??? + +% # tableofcontents. Insert hooks into \tocline (I hope arguments + placement are correct) +\def\@tocline#1#2#3#4#5#6#7{\relax + \ifnum #1>\c@tocdepth % then omit + \else + \par \addpenalty\@secpenalty\addvspace{#2}% + \begingroup \hyphenpenalty\@M + \@ifempty{#4}{% + \@tempdima\csname r@tocindent\number#1\endcsname\relax + }{% + \@tempdima#4\relax + }% + \parindent\z@ \leftskip#3\relax \advance\leftskip\@tempdima\relax + \rightskip\@pnumwidth plus4em \parfillskip-\@pnumwidth + #5\leavevmode\hskip-\@tempdima + \UseHookWithArguments{contentsline/text/before}{4}{#1}{#6}{#7}{\@contentsline@destination}%NEW + #6% + \UseHookWithArguments{contentsline/text/after}{4}{#1}{#6}{#7}{\@contentsline@destination}%NEW + \nobreak\relax + \hfil\hbox to\@pnumwidth{% + \UseHookWithArguments{contentsline/page/before}{4}{#1}{#6}{#7}{\@contentsline@destination}%NEW + \@tocpagenum{#7} + \UseHookWithArguments{contentsline/page/after}{4}{#1}{#6}{#7}{\@contentsline@destination}%NEW + }\par + \nobreak + \endgroup + \fi} +% add config points to starttoc +% TODO: extend kernel version so that acmart no longer has to redefine it. +\def\@starttoc#1#2{\begingroup\makeatletter + \setTrue{#1}% + \par\removelastskip\vskip\z@skip + \@startsection{section}\@M\z@{\linespacing\@plus\linespacing}% + {.5\linespacing}{\centering\contentsnamefont}{#2}% + \@starttoc@cfgpoint@before{#1}%NEW<<<<<<<<<< (name will change) + \@input{\jobname.#1}% + \@starttoc@cfgpoint@after{#1}%NEW<<<<<<<<<<<< (name will change) + \if@filesw + \@xp\newwrite\csname tf@#1\endcsname + \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax + \fi + \global\@nobreakfalse \endgroup + \addvspace{32\p@\@plus14\p@}% +} + + + +% # maketitle is much too complex, so we stop all tagging for now +\ExplSyntaxOn +\AddToHook{cmd/maketitle/before} + {\tagstructbegin{tag=Title}\tagmcbegin{} \tag_stop:} +\AddToHook{cmd/maketitle/after} + {\tag_start:\tagmcend\tagstructend } +\ExplSyntaxOff + +% # TODO +% \endminipage must be restored (acmart wants to remove the footnoterule.) +% \@footnotetext is changed, but no in all variants + +\title{title} + +\usepackage{blindtext} + +\begin{document} + +\maketitle + +\tableofcontents + +\section{section} +\subsection{sub} +\subsubsection{subsub} + +\paragraph{paragraph} some text\footnote{xxxx} + +\subsection{sub} +\subsubsection{subsub} + +\paragraph{paragraph} some text + +\begin{figure} +a figure +\caption{test caption figure} +\end{figure} + +\begin{table} +a table +\caption{test caption table} +\end{table} + +\blinddocument + +\end{document} diff --git a/macros/latex/contrib/acmart/acmart-data.md b/macros/latex/contrib/acmart/acmart-data.md new file mode 100644 index 0000000000..7e7a5437c9 --- /dev/null +++ b/macros/latex/contrib/acmart/acmart-data.md @@ -0,0 +1,114 @@ +## acmart.cls + +* class to typeset articles for the Association + for Computing Machinery +* around 3500 lines of code +* bases on amsart.cls +* support various journal styles + +## Packages + +* xkeyval: probably harmless +* xstring: probably harmless +* iftex: probably harmless +* amsart.cls: ** must be checked** +* amsmath: good +* microtype: can be problematic, if needed disable patches +* etoolbox: probably harmless +* booktabs: table tagging is uncomplete anyway +* refcount: probably harmless +* ltxcmds: probably harmless +* infwarerr: probably harmless +* totpages: **?, should be checked** +* everyshi: harmless (now wrapper to kernel hook) +* environ: **probably harmless, but use should be checked** +* trimspaces: probably harmless +* setspace: probably harmless +* textcase: harmless but unneeded in current latex +* natbib: handled in latex-lab-bib +* hyperxmp: **incompatible, but doesn't harm as it is ignored. It must be checked if XMP-data are missing** +* kvoptions +* various internal hyperref packages: hopefully all harmless +* hyperref: explicitly handled by the latex-lab code +* nameref: explicitly handled by the latex-lab code +* graphicx: handled by the latex-lab code +* (x)color: probably harmless +* geometry: probably harmless +* manyfoot: **must be checked, could affect footnote tagging** +* nccfoots: **must be checked, could affect footnote tagging** +* font packages: probably harmless (but math packages can affect later math tagging) +* caption: **must be checked as latex-lab-floats redefines caption commands.** +* float: **must be checked as latex-lab-floats redefines floats. Handling of H is unclear.** +* comment: probably harmless +* fancyhdr: **should work, but if must be checked if there is meaningful content in the header/footer as by default there are artifact**. +* upquote: probably harmless + +Some packages are only loaded sometimes, e.g. + +* framed: probably problematic + + +With lualatex result is similar, but probably unicode-math should be loaded. + +## Redefinitions of main LaTeX commands + +### sectioning + +* `\@startsection`: acmart definition is like kernel definition. Using new tagging definition should be fine. +* `\@sect`: acmart definition slightly different. Reason must be checked. +* `\@xsect`: acmart definition is like kernel definition. Using new tagging definition should be fine. +* `\@seccntformat`: not changed by tagging code, so probably fine +* `\@ssect`: acmart definition is like kernel definition. Using new tagging definition should be fine. +* `\section` etc defined with `\@startsection`: OK +* `\part` defined as level 9 command?? Does the tagging code handles that or gets it confused?? + +### toc + +* `\@starttoc`: must be adjusted to the tagging code +* `\l@section`, `\l@subsection`, `\l@subsubsection`: they use `\@tocline` (amsart), so that must be changed similar to `\@dottedtocline` + + +### footnotes + +It must be checked if this harms! + +* `\@makefntext` +* `\@footnotetext` (sometimes) +* `\@mpfootnotetext` +* `\@makefnmark` +* `\footnoterule` + +### floats + +Must be checked. + +* `\@dblfloat`, `\end@dblfloat` sometimes + +### lists + +* `\@listI` etc +* description + + +### title + +lots of complicated box combinations + +* `\author` +* `\maketitle` +* `abstract` + +### other + + +* `\endminipage`: will probably break minipage tagging. +* `\theindex` + + +## New commands and environments + +All their tagging must be checked!! + +* +* +* diff --git a/macros/latex/contrib/acmart/acmart-ori.tex b/macros/latex/contrib/acmart/acmart-ori.tex new file mode 100644 index 0000000000..aeecb28701 --- /dev/null +++ b/macros/latex/contrib/acmart/acmart-ori.tex @@ -0,0 +1,40 @@ +% !Mode:: "TeX:UTF-8:Main" +% !Mode:: "TeX:UTF-8:Main" +\DocumentMetadata{testphase={phase-III,firstaid},pdfversion=2.0} + +\documentclass[]{acmart} + +\title{title} + +\usepackage{blindtext} + +\begin{document} + +\maketitle + +\tableofcontents + +\section{section} +\subsection{sub} +\subsubsection{subsub} + +\paragraph{paragraph} some text\footnote{xxxx} + +\subsection{sub} +\subsubsection{subsub} + +\paragraph{paragraph} some text + +\begin{figure} +a figure +\caption{test caption figure} +\end{figure} + +\begin{table} +a table +\caption{test caption table} +\end{table} + +\blinddocument + +\end{document} diff --git a/macros/latex/contrib/acmart/acmart.dtx b/macros/latex/contrib/acmart/acmart.dtx index b2f1d411b6..d20064d6b7 100644 --- a/macros/latex/contrib/acmart/acmart.dtx +++ b/macros/latex/contrib/acmart/acmart.dtx @@ -2266,7 +2266,7 @@ \ProvidesFile{acmart.dtx} %</gobble> %<class>\ProvidesClass{acmart} -[2023/11/05 v2.00 Typesetting articles for the Association for Computing Machinery] +[2023/12/29 v2.01 Typesetting articles for the Association for Computing Machinery] % \end{macrocode} % % \changes{v1.00}{2016/04/14}{First released version} @@ -5209,7 +5209,12 @@ % % \begin{macro}{\acmPrice} % \changes{v2.00}{2023/10/22}{Deleted macro} -% The price---obsolete +% \changes{v2.01}{2023/12/29}{Now the macro produces a warning} +% The price---obsolete +% \begin{macrocode} +\def\acmPrice#1{\ClassWarning{\@classname}{The macro \string\acmPrice + is obsolete. ACM no longer prints the price in bibstrip.}} +% \end{macrocode} % \end{macro} % % diff --git a/macros/latex/contrib/acmart/acmart.pdf b/macros/latex/contrib/acmart/acmart.pdf Binary files differindex c913a47d4c..883a93e433 100644 --- a/macros/latex/contrib/acmart/acmart.pdf +++ b/macros/latex/contrib/acmart/acmart.pdf diff --git a/macros/latex/contrib/acmart/acmguide.pdf b/macros/latex/contrib/acmart/acmguide.pdf Binary files differindex b3d7e385b0..e721714333 100644 --- a/macros/latex/contrib/acmart/acmguide.pdf +++ b/macros/latex/contrib/acmart/acmguide.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmcp.pdf b/macros/latex/contrib/acmart/samples/sample-acmcp.pdf Binary files differindex 655f9179a4..9ad5e4d25a 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmcp.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmcp.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmengage.pdf b/macros/latex/contrib/acmart/samples/sample-acmengage.pdf Binary files differindex 085b9cfad7..4ab1f05a07 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmengage.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmengage.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf b/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf Binary files differindex 7520d0f5fe..b696cd8a5a 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf Binary files differindex c6db217566..10d530f2a9 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf Binary files differindex 032fa512e0..9464e1934d 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf Binary files differindex a76c447705..66f8d534f9 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf Binary files differindex a794f82dd2..5ea73019c6 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmtog.pdf b/macros/latex/contrib/acmart/samples/sample-acmtog.pdf Binary files differindex a46ef43225..0498ab6f6d 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmtog.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmtog.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-authordraft.pdf b/macros/latex/contrib/acmart/samples/sample-authordraft.pdf Binary files differindex 6947dbf64d..ab45490859 100644 --- a/macros/latex/contrib/acmart/samples/sample-authordraft.pdf +++ b/macros/latex/contrib/acmart/samples/sample-authordraft.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-lualatex.pdf b/macros/latex/contrib/acmart/samples/sample-lualatex.pdf Binary files differindex 19fe246de3..753ef18486 100644 --- a/macros/latex/contrib/acmart/samples/sample-lualatex.pdf +++ b/macros/latex/contrib/acmart/samples/sample-lualatex.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-manuscript.pdf b/macros/latex/contrib/acmart/samples/sample-manuscript.pdf Binary files differindex 32543cc1db..152285569b 100644 --- a/macros/latex/contrib/acmart/samples/sample-manuscript.pdf +++ b/macros/latex/contrib/acmart/samples/sample-manuscript.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf Binary files differindex 90a3155de7..d065c3d548 100644 --- a/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf +++ b/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf Binary files differindex 8b336f003d..69cb91907d 100644 --- a/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf +++ b/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf.pdf Binary files differindex 1cf2c92ff4..c187371caa 100644 --- a/macros/latex/contrib/acmart/samples/sample-sigconf.pdf +++ b/macros/latex/contrib/acmart/samples/sample-sigconf.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-sigplan.pdf b/macros/latex/contrib/acmart/samples/sample-sigplan.pdf Binary files differindex 1a745c54fc..51948655a3 100644 --- a/macros/latex/contrib/acmart/samples/sample-sigplan.pdf +++ b/macros/latex/contrib/acmart/samples/sample-sigplan.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-xelatex.pdf b/macros/latex/contrib/acmart/samples/sample-xelatex.pdf Binary files differindex 27fa5857dc..b2542da59e 100644 --- a/macros/latex/contrib/acmart/samples/sample-xelatex.pdf +++ b/macros/latex/contrib/acmart/samples/sample-xelatex.pdf diff --git a/macros/latex/contrib/acmart/samples/samples.dtx b/macros/latex/contrib/acmart/samples/samples.dtx index d970b49ffb..e0c5f30216 100644 --- a/macros/latex/contrib/acmart/samples/samples.dtx +++ b/macros/latex/contrib/acmart/samples/samples.dtx @@ -443,7 +443,7 @@ use the {\verb|acmsmall|} template style: The majority of conference proceedings documentation will use the {\verb|acmconf|} template style. \begin{itemize} -\item {\texttt{acmconf}}: The default proceedings template style. +\item {\texttt{sigconf}}: The default proceedings template style. \item{\texttt{sigchi}}: Used for SIGCHI conference articles. \item{\texttt{sigplan}}: Used for SIGPLAN conference articles. \end{itemize} diff --git a/macros/latex/contrib/changebar/CATALOG b/macros/latex/contrib/changebar/CATALOG index 395f902fe2..4878681f57 100644 --- a/macros/latex/contrib/changebar/CATALOG +++ b/macros/latex/contrib/changebar/CATALOG @@ -1,7 +1,7 @@ Name: ChangeBar Problems-To: johannes.braams(at)texniek.nl Author: J.L. Braams -Version: 3.7a +Version: 3.7b Description: diff --git a/macros/latex/contrib/changebar/README b/macros/latex/contrib/changebar/README index 209e8748d3..e5ef309494 100644 --- a/macros/latex/contrib/changebar/README +++ b/macros/latex/contrib/changebar/README @@ -1,6 +1,6 @@ changebar bundle - December 24, 2023 + December 30, 2023 This bundle contains a package that I maintain to add changebars to a LaTeX document. diff --git a/macros/latex/contrib/changebar/changebar.dtx b/macros/latex/contrib/changebar/changebar.dtx index 6f34ad89ec..e4d71b5c39 100644 --- a/macros/latex/contrib/changebar/changebar.dtx +++ b/macros/latex/contrib/changebar/changebar.dtx @@ -24,7 +24,7 @@ % and covered by LPPL is defined by the unpacking scripts (with % extension .ins) which are part of the distribution. % \fi -% \CheckSum{2949} +% \CheckSum{2952} % %\iffalse % This file is built for \LaTeXe, so we make sure an error is @@ -39,7 +39,7 @@ \ProvidesFile{changebar.dtx} %</dtx> %<+package>\ProvidesPackage{changebar} - [2023/12/24 v3.7a Indicate changes with marginal bars] + [2023/12/30 v3.7b Indicate changes with marginal bars] % \end{macrocode} % % \section{A driver for this document} @@ -135,7 +135,10 @@ % \changes{v3.6b}{2018/02/03}{Added a macro for pdf scaling for % Xe\TeX} % \changes{v3.6e}{2023/08/13}{Added supprt for luaTeX} -% +% \changes{v3.7b}{2023/12/28}{Added a few lines that were inadvertantly removed} +% \changes{v3.7b}{2023/12/30}{the cb2-file use delimiting chars may +% change meaning when they end up in the wrong situation} +% % \title{The Changebar package % \thanks{This file has version number \fileversion, % last revised \filedate.}} @@ -797,9 +800,10 @@ % \end{macrocode} % Redefine the |\cb@pdfxy| macro to write point coordinates to the % \file{.cb2} file. +% \changes{v3.7b}{2023/12/30}{use ¨;¨ instead of ¨,¨ as delimiter} % \begin{macrocode} \gdef\cb@pdfxy##1##2##3##4##5{% - \immediate\write\cb@writexy{##1.##2p##3,##4,##5}% + \immediate\write\cb@writexy{##1.##2p##3;##4;##5}% \expandafter\gdef\csname cb@##1.##2\endcsname{##3,##4,##5}} \else\cb@pdftexerror\fi\fi\fi} % \end{macrocode} @@ -834,14 +838,23 @@ % \end{macrocode} % Redefine the |\cb@pdfxy| macro to write point coordinates to the % \file{.cb2} file. +% \changes{v3.7b}{2023/12/30}{use ¨;¨ instead of ¨,¨ as delimiter} % \begin{macrocode} \gdef\cb@pdfxy##1##2##3##4##5{% - \immediate\write\cb@writexy{##1.##2p##3,##4,##5}% + \immediate\write\cb@writexy{##1.##2p##3;##4;##5}% \expandafter\gdef\csname cb@##1.##2\endcsname{##3,##4,##5}} \gdef\sec@nd@ftw@##1 ##2{##2} \fi} % \end{macrocode} % +% Give a warning if we cannot support the \Lopt{xetex} option. +% \begin{macrocode} +\def\cb@xetexerror{\PackageError + {changebar}% + {XeTeX option cannot be used}% + {You are not using XeLaTeX}} +% \end{macrocode} +% % \begin{changebar} % \begin{macrocode} \DeclareOption{luaTeX}{\cb@luatexcheck} @@ -865,9 +878,10 @@ % \end{macrocode} % Redefine the |\cb@pdfxy| macro to write point coordinates to the % \file{.cb2} file. +% \changes{v3.7b}{2023/12/30}{use ¨;¨ instead of ¨,¨ as delimiter} % \begin{macrocode} \gdef\cb@pdfxy##1##2##3##4##5{% - \immediate\write\cb@writexy{##1.##2p##3,##4,##5}% + \immediate\write\cb@writexy{##1.##2p##3;##4;##5}% \expandafter\gdef\csname cb@##1.##2\endcsname{##3,##4,##5}} \fi} % \end{macrocode} @@ -1451,10 +1465,11 @@ % When the point is found it is removed from |\cb@pdfpoints|. \#9 % contains the cumulative head of the list to construct the new list % with the entry removed. \#3--\#8 are for pattern matching. +% \changes{v3.7b}{2023/12/30}{use ¨;¨ instead of ¨,¨ as delimiter} % \begin{macrocode} - \def\cb@pdffind##1##2##3.##4p##5,##6,##7pt##8\relax##9{% + \def\cb@pdffind##1##2##3.##4p##5;##6;##7pt##8\relax##9{% \def\cb@next{% - \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5,##6,##7pt}}% + \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5;##6;##7pt}}% \ifnum ##1=##3 \ifnum ##2=##4 \def\cb@pdfx{##5sp}% @@ -1506,7 +1521,7 @@ % The |\cb@pdfparsexy| macro extracts the pagecount from an entry read in % from the \file{.cb2} file. % \begin{macrocode} - \def\cb@pdfparsexy##1.##2p##3,##4,##5pt{% + \def\cb@pdfparsexy##1.##2p##3;##4;##5pt{% \def\cb@pdfpg{##2}}% % \end{macrocode} % \end{macro} @@ -1623,12 +1638,12 @@ \gdef\cb@checkPdfxy##1##2##3##4##5{% \cb@@findpdfpoint{##1}{##2}% % \end{macrocdode} -%\begin{changebar} +% \begin{changebar} % \begin{macrocode \ifdim##3sp=\cb@pdfx\relax \ifdim##4sp=\cb@pdfy\relax % \end{macrocdode} -%\end{changebar} +% \end{changebar} % \begin{macrocode \ifdim##5=\cb@pdfz\relax \else @@ -1727,10 +1742,11 @@ % When the point is found it is removed from |\cb@pdfpoints|. \#9 % contains the cumulative head of the list to construct the new list % with the entry removed. \#3--\#8 are for pattern matching. +% \changes{v3.7b}{2023/12/30}{use ¨;¨ instead of ¨,¨ as delimiter} % \begin{macrocode} - \def\cb@pdffind##1##2##3.##4p##5,##6,##7pt##8\relax##9{% + \def\cb@pdffind##1##2##3.##4p##5;##6;##7pt##8\relax##9{% \def\cb@next{% - \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5,##6,##7pt}}% + \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5;##6;##7pt}}% \ifnum ##1=##3 \ifnum ##2=##4 \def\cb@pdfx{##5sp}% @@ -1782,7 +1798,7 @@ % The |\cb@pdfparsexy| macro extracts the pagecount from an entry read in % from the \file{.cb2} file. % \begin{macrocode} - \def\cb@pdfparsexy##1.##2p##3,##4,##5pt{% + \def\cb@pdfparsexy##1.##2p##3;##4;##5pt{% \def\cb@pdfpg{##2}}% % \end{macrocode} % \end{macro} @@ -1932,9 +1948,7 @@ \immediate\closeout\cb@writexy \immediate\openin\cb@readxy=\jobname.cb2\relax % \end{macrocode} -% \end{changebar} % -% \begin{changebar} % \begin{macro}{\cb@pdfpoints} % \begin{macro}{\cb@pdfpagenr} % The |\cb@pdfpoints| macro contains the list of coordinates of points @@ -1946,9 +1960,7 @@ % \end{macrocode} % \end{macro} % \end{macro} -% \end{changebar} % -% \begin{changebar} % \begin{macro}{\cb@findpdfpoint} % The |\cb@findpdfpoint| macro finds the coordinates of point \#1 on % pagecount \#2. First we expand the arguments to get the real values. @@ -1960,9 +1972,7 @@ } % \end{macrocode} % \end{macro} -% \end{changebar} % -% \begin{changebar} % \begin{macro}{\pdfliteral} % For lua\TeX{} we also mimick PDF\TeX's command |\pdfliteral|. % \begin{macrocode} @@ -1994,9 +2004,7 @@ } % \end{macrocode} % \end{macro} -% \end{changebar} % -% \begin{changebar} % \begin{macro}{\cb@pdffind} % The |\cb@pdffind| recursively searches through |\cb@pdfpoints| to find % point \#1 on pagecount \#2. |\cb@pdfpoints| contains entries of the @@ -2005,10 +2013,11 @@ % When the point is found it is removed from |\cb@pdfpoints|. \#9 % contains the cumulative head of the list to construct the new list % with the entry removed. \#3--\#8 are for pattern matching. +% \changes{v3.7b}{2023/12/30}{use ¨;¨ instead of ¨,¨ as delimiter} % \begin{macrocode} - \def\cb@pdffind##1##2##3.##4p##5,##6,##7pt##8\relax##9{% + \def\cb@pdffind##1##2##3.##4p##5;##6;##7pt##8\relax##9{% \def\cb@next{% - \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5,##6,##7pt}}% + \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5;##6;##7pt}}% \ifnum ##1=##3 \ifnum ##2=##4 \def\cb@pdfx{##5sp}% @@ -2025,9 +2034,7 @@ }% % \end{macrocode} % \end{macro} -% \end{changebar} % -% \begin{changebar} % \begin{macro}{\cb@pdfreadxy} % The |\cb@pdfreadxy| macro reads lines from the \file{.cb2} file in % |\cb@pdfpoints| until the pagecount is greater than \#1 or the end of @@ -2062,13 +2069,11 @@ % The |\cb@pdfparsexy| macro extracts the pagecount from an entry read in % from the \file{.cb2} file. % \begin{macrocode} - \def\cb@pdfparsexy##1.##2p##3,##4,##5pt{% + \def\cb@pdfparsexy##1.##2p##3;##4;##5pt{% \def\cb@pdfpg{##2}}% % \end{macrocode} % \end{macro} -% \end{changebar} % -% \begin{changebar} % As PDF is not a programming language it does not have any variables to % remember the coordinates of the current point. Therefore we write the % information to the \file{.aux} file and read it in in the next run. We @@ -2091,9 +2096,7 @@ \cb@trace@defpoint##1##2% }% % \end{macrocode} -% \end{changebar} % -% \begin{changebar} % \begin{macro}{\cb@cvtpct} % The macro |\cb@cvtpct| converts a percentage between 0 and 100 to a % decimal fraction. @@ -2105,9 +2108,7 @@ 0.\the##1\fi\fi\fi} % \end{macrocode} % \end{macro} -% \end{changebar} % -% \begin{changebar} % \begin{macro}{\cb@pdf@scale} % \changes{v3.6a}{2018/02/03}{Added macro for scale factor} % In order to get things in the right spot we need a little scaling @@ -2175,9 +2176,7 @@ \cb@trace@connect##1##2##3% }% % \end{macrocode} -% \end{changebar} % -% \begin{changebar} % \begin{macro}{\cb@checkPdfxy} % The macro |\cb@checkPdfxy| checks if the coordinates of a point have % changed during the current run. If so, we need to rerun \LaTeX. diff --git a/macros/latex/contrib/changebar/changebar.pdf b/macros/latex/contrib/changebar/changebar.pdf Binary files differindex c12a901d4a..549d3e8883 100644 --- a/macros/latex/contrib/changebar/changebar.pdf +++ b/macros/latex/contrib/changebar/changebar.pdf diff --git a/macros/latex/contrib/decimalcomma/decimalcomma.dtx b/macros/latex/contrib/decimalcomma/decimalcomma.dtx index 5ee720ea2c..a78b0867bf 100644 --- a/macros/latex/contrib/decimalcomma/decimalcomma.dtx +++ b/macros/latex/contrib/decimalcomma/decimalcomma.dtx @@ -20,7 +20,7 @@ %<*package> \NeedsTeXFormat{LaTeX2e}[2005/12/01] \ProvidesPackage{decimalcomma} - [2023/12/28 v1.3 .dtx Comma for decimal numbers] + [2023/12/30 v1.4 .dtx Comma for decimal numbers] %</package> %<*driver> \documentclass{ltxdoc} @@ -60,7 +60,7 @@ %</driver> % \fi % -% \CheckSum{24} +% \CheckSum{18} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -82,6 +82,7 @@ % \changes{v1.1}{2023/12/19}{Error message when unicode-math loaded after decimalcomma} % \changes{v1.2}{2023/12/20}{Bug correction: bad typo for the boolean DC@unicodemath} % \changes{v1.3}{2023/12/28}{Loading icomma to avoid babel-french + numprint problems} +% \changes{v1.4}{2023/12/30}{Code improvement, first boolean unnecessary, thanks to J.F. Burnol} % % \GetFileInfo{decimalcomma.sty} % @@ -156,24 +157,24 @@ % This first piece of code aims to generate an appropriate error message, if you load % \textsf{unicode-math} \emph{after} \textsf{decimalcomma}. % To achieve this, first we check if \textsf{unicode-math} has been loaded before. -% In that case, the boolean "DC@unicodemath" will be set to true. -% Then, at the end of the preamble, when all the packages have been loaded, -% we perform a new verification. If \textsf{unicode-math} has been loaded after -% but not before, the appropriate error message is displayed. +% In that case, we do nothing. +% Else, at the end of the preamble, when all the packages have been loaded, +% we perform a new verification. If \textsf{unicode-math} has been loaded at that time, +% the appropriate error message is displayed. +% % Without this code, the compilation would produce an error message mentioning % a problem on "\futurelet", incomprehensible for the novice. % % \begin{macrocode} -\newif\ifDC@unicodemath -\@ifpackageloaded{unicode-math}{\DC@unicodemathtrue} -\AtBeginDocument{\@ifpackageloaded{unicode-math}{ - \ifDC@unicodemath\else - \PackageError{decimalcomma}{decimalcomma must be loaded - after unicode-math}{If you didn't load decimalcomma - yourself, check which package uses it.} - \fi +\@ifpackageloaded{unicode-math}{}{ + \AtBeginDocument{% + \@ifpackageloaded{unicode-math}{ + \PackageError{decimalcomma}{decimalcomma must be loaded + after unicode-math}{If you didn't load decimalcomma + yourself, check which package uses it.} }{} + } } % \end{macrocode} diff --git a/macros/latex/contrib/decimalcomma/decimalcomma.pdf b/macros/latex/contrib/decimalcomma/decimalcomma.pdf Binary files differindex a7c42c84b7..aa3913d621 100644 --- a/macros/latex/contrib/decimalcomma/decimalcomma.pdf +++ b/macros/latex/contrib/decimalcomma/decimalcomma.pdf diff --git a/macros/latex/contrib/exesheet/exesheet.dtx b/macros/latex/contrib/exesheet/exesheet.dtx index 7f57f4195e..efc56a4cf9 100644 --- a/macros/latex/contrib/exesheet/exesheet.dtx +++ b/macros/latex/contrib/exesheet/exesheet.dtx @@ -23,7 +23,7 @@ %<class>\ProvidesClass{exesheet} %<package>\ProvidesPackage{exesheet} %<*class|package> -[2023/10/28 v2.4 .dtx exesheet file] +[2023/12/30 v2.5 .dtx Typesetting exercise or exam sheets] %</class|package> %<*driver> \documentclass{ltxdoc} @@ -49,7 +49,7 @@ \psset{unit=1cm} \geometry{textwidth=355pt,vmarginratio=1:1,hmarginratio=3:2} % altered by schoodocs, now very close from the default geometry used by ltxdoc. -% The following instruction gives the same margin width +% The following instruction provides the same margin width % as with display=notes without altering the margin ratio \leftnotemarginwidth{0.55} % special setting here \newcommand{\ds}{\displaystyle} @@ -72,6 +72,7 @@ \hypersetup{% colorlinks, linkcolor=blue, + citecolor=red, pdftitle={exesheet}, pdfsubject={LaTeX class and package}, pdfauthor={Antoine Missier} @@ -83,7 +84,7 @@ %</driver> % \fi % -% \CheckSum{1200} +% \CheckSum{1183} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -159,13 +160,19 @@ % - using basic languages (with lower case first letter) instead of aliases % in translations commands} % -% \changes{v2.4}{2013/10/28}{ +% \changes{v2.4}{2023/10/28}{ % - a small mistake in the documentation about the example of the tablenuma environment % is now corrected % - other small changes in the documentation % - lack of percent symbols at end of lines in the exe@check macro causes an unwanted % space in points macro} % +% \changes{v2.5}{2023/12/30}{ +% - gsetlength and gaddtolength unnecessary +% - deprecated commands -> old commands +% - comparison with other packages +% - modifying introduction} +% % \GetFileInfo{exesheet.dtx} % % \maketitle @@ -183,6 +190,7 @@ % and forwards any unknown options to it. % % There are many other packages dedicated to exercise sheets. +% In section \ref{comparison} we provide an overview of some of their functionalities. % Most of them suggest encapsulating each exercise within an environment. % In contrast, \textsf{exesheet} starts each exercise with |\exercise|, % which functions similarly to a subsection (with the same features) @@ -194,19 +202,18 @@ % for enumeration lists, which are % suitable for numbering questions or answers within an exercise. % -% While other packages often offer more or less complex mechanisms -% for managing the placement of answers, -% \textsf{exesheet} doesn't aspire to such complexity. However, -% for all exercises within the sheet, you have the capability to display only questions, -% only answers, or both, all while preserving their placement as they appear +% For all exercises within the sheet, you can display only the questions, +% only the answers, or both, all while preserving their placement as they appear % in the source file. This choice allows for great flexibility: % you can create a correct version for all exercises collectively, % or individual corrections per exercise, % per part (subpart of exercise), per question, per sub-question. % -% Finally \textsf{exesheet} enables to display a detailed marking scheme -% in the margin, with optional explanations or remarks, -% and offering consistency control. +% The ability to hide questions or answers is found in many packages, +% but the main interest of \textsf{exesheet} is to be able to display or not +% a detailed scoring guide, along with correction instructions. +% This is very useful for grading papers with multiple graders. +% Furthermore \textsf{exesheet} can check the consistency of the scale. % % Many settings can be customized, and various options are available % to manage the output document. @@ -240,7 +247,6 @@ % \psframe(-0.25,1.3)(12.75,-0.3) % Try this first command; easy! % -% \bigskip % To bring optional text closer to the exercise number, % you can employ |\unskip| which removes any preceding space. % Take a look at the following example, achieved with @@ -260,8 +266,8 @@ % depending on the language that is loaded (via \textsf{babel} or \textsf{polyglossia}). % You can alter it by modifying |\exercisename|. % A better approach is to use macros from the \textsf{translations} -% package by Clemens Niederberger (which allows dynamic language switching), \eg -% |\DeclareTranslation{swedish}{exesheet-exercise}{\"Ovning}}|. +% package by Clemens Niederberger~\cite{TRAN} (which allows dynamic language switching), +% \eg |\DeclareTranslation{swedish}{exesheet-exercise}{\"Ovning}}|. % % \smallskip % \DescribeMacro{\labelexercise} @@ -282,7 +288,7 @@ % |\renewcommand{\labelexercisestyle}{\rmfamily\color{black}}| % \footnote{In this document, real section and subsection titles have been highlighted by % modifying their color and font (sans serif) using the -% \texttt{\bs allsectionsfont} macro from the \textsf{sectsty} package.}. +% \texttt{\bs allsectionsfont} macro from the \textsf{sectsty} package~\cite{SECT}.}. % % \medskip % \DescribeMacro{\exercise*} @@ -349,7 +355,7 @@ % The term ``\annexname'' is automatically translated into several languages % (depending on the chosen language). % It can be extended to additional languages or altered by redefining |\annexname| -% or by utilizing macros from the \textsf{translations} package. +% or by utilizing macros from the \textsf{translations} package~\cite{TRAN}. % % \smallskip % \DescribeMacro{\annexstyle} @@ -383,7 +389,7 @@ % \bigskip % \DescribeMacro{\exname} \DescribeMacro{\exlabel} \DescribeMacro{\exsepmark} % The abbreviation \textbf{\exname} can be modified by -% redefining |\exname| or with macros from the \textsf{translations} package. +% redefining |\exname| or with macros from the \textsf{translations} package~\cite{TRAN}. % The |\exlabel| macro combines |\exname| with a period then the exercise number % (given by the same \texttt{exercise} counter), % while |\exsepmark| typesets a long dash. @@ -408,7 +414,7 @@ % without indentation, and the vertical spacing between items % is increased compared to standard \LaTeX{} lists. % These formatting adjustments are achieved using the |\setlist| command, -% a feature from the \textsf{enumitem} package by Javier Bezos. +% a feature from the \textsf{enumitem} package by Javier Bezos~\cite{ENUM}. % % \vspace{-\baselineskip} % \noindent\psframe(-0.25,-0.35)(12.75,-3.9) @@ -429,7 +435,7 @@ % |\begin{enumerate}[label=\alph*),font=\itshape\normalfont]| % will yield the labels ``\emph{a)}, \emph{b)}, \emph{c)}\ldots''. % There are many other options available -% (see the \textsf{enumitem} package documentation) +% (see the \textsf{enumitem}~\cite{ENUM} package documentation) % \footnote{Labels can also be modified using a ``shortlabel'' argument, % \eg \texttt{\bs begin\{enumerate\}[A.]}, % or globally through the redefinition of \texttt{\bs labelenumi} @@ -484,8 +490,8 @@ % \end{exenumerate} % % \smallskip -% The \texttt{exenumerate} environment (also based on the \textsf{enumitem} package) -% accepts an optional parameter, +% The \texttt{exenumerate} environment (also based on the +% \textsf{enumitem}~\cite{ENUM} package) accepts an optional parameter, % similar to the \texttt{enumerate} environment. % % \subsection{Items aligned by row: \texttt{tablenum1}, \texttt{tablenuma}, \texttt{tablitem}} @@ -503,10 +509,11 @@ % % \smallskip % Internally we have utilized the -% |\NewTasksEnvironment| macro from the \textsf{tasks} package by Clemens Niederberger. +% |\NewTasksEnvironment| macro from the \textsf{tasks} package by +% Clemens Niederberger~\cite{TASK}. % The usage of the optional argument \meta{opt} is % explained in the documentation of this package. -% For example, similar to the \textsf{enumitem} package, +% For example, similar to the \textsf{enumitem} package~\cite{ENUM}, % |label=\arabic*)| produces an Arabic numbering % followed by a closing parenthesis. % Additionally there are numerous possibilities for arranging items in original ways. @@ -704,6 +711,7 @@ % \textsf{exam} by Philip Hirschhorn, % \textsf{answers} by Mike Piff and Joseph Wright, % \textsf{probsoln} by Nicola Talbot, and more. +% They are briefly presented in section \ref{comparison}. % \end{enumerate} % \end{answers} % @@ -713,14 +721,14 @@ % % \subsection{More about \texttt{answers} environments} % Internally, we have utilized the |\comment| and |\endcomment| macros -% from the \textsf{versions} package by Uwe Lück. +% from the \textsf{versions} package by Uwe Lück~\cite{VERS}. % ^^A Several other packages also enable selective management of code portions. % ^^A Notably, the \textsf{verbatim} package by Rainer Schöpf, % ^^A \textsf{comment} by Victor Eijkhout, % ^^A \textsf{version} by Donald Arseneau and Stephen Bellantoni, % ^^A \textsf{optional} by Donald Arseneau % ^^A and \textsf{codesection} by Matthias Pospiech. -% Moreover, the \textsf{versions} package offers +% Moreover, the \textsf{versions} package~\cite{VERS} offers % the |\excludeversion|\marg{env} and % |\includeversion|\marg{env} macros which allow for the exclusion or inclusion of % any environment \meta{env}. These ``optional'' environments @@ -900,7 +908,8 @@ % With the \texttt{twoside} mode, marginal notes might occasionally % appear on the wrong side of a page. % This is a known \LaTeX{} bug, and the solution involves using -% the \textsf{mparhack} package (which \textsf{exesheet} automatically includes +% the \textsf{mparhack} package by Tom Sgouros and Stefan Ulrich~\cite{MPAR} +% (which \textsf{exesheet} automatically includes % for documents in two-side mode) and \emph{running \LaTeX{} twice}. % If necessary, a warning message will prompt you to perform the re-run. % @@ -1010,7 +1019,7 @@ % The color and style for displaying points in |\totalexe| and |\note*| % can be customized using \texttt{markingcolor} and |\markingstyle|, respectively. % The oval box produced by |\totalexe| is created using the |\ovalbox| command -% from the \textsf{fancybox} package (by Timothy Van Zandt), +% from the \textsf{fancybox} package by Timothy Van Zandt~\cite{FBOX}, % with corner arcs set by |\cornersize{1}|. % The box's length is determined by % |\ptsboxlength|, and not by the box's content, to ensure uniformity across exercises. @@ -1070,7 +1079,7 @@ % are not suitable. % In this case, no adjustments are made to the margin width. Instead, you can define % your own settings using the convenient |\geometry| macro -% from the \textsf{geometry} package (by Hideo Umeki). +% from the \textsf{geometry} package by Hideo Umeki~\cite{GEOM}. % For instance, you can place the following in the preamble: % \centeredline{|\geometry{hmarginratio=2:1,marginparwidth=2.5cm}|.} % @@ -1155,9 +1164,9 @@ % Finally, a message indicates whether all scale controls have been successfully % passed or not. % -% \section{Options} \label{options} +% \section{Options and comparison with other packages} % -% \subsection{Summary of available options} +% \subsection{Summary of available options}\label{options} % % Here we provide a summary table of the available options. Details on their usage % can be found in the respective sections. @@ -1212,15 +1221,16 @@ % Using \texttt{correct=conditional}, it behaves as \texttt{true} % when answers are displayed and \texttt{false} when they're not. % -% \subsection{Alternative (deprecated) commands} +% \subsection{Alternative commands} % % Prior to version 2.0, we used specialized commands to configure % output and display options. % Thanks to a suggestion from Maxime Chupin and Denis Bitouzé, % we have now implemented \emph{key=value} options. % Although the latter is more user-friendly, -% the older commands are still supported for compatibility reasons and are outlined here. -% While these commands will trigger a warning message, they remain functional. +% one may prefer the old commands, so they are still supported, +% but will trigger a warning message. They are presented below. +% % However, the previous options \texttt{nosetlist} and \texttt{notoc} % are no longer supported. % @@ -1229,17 +1239,89 @@ % The command |\questionslonly| is equivalent to setting \texttt{output=questions} % and |\answersonly| means \texttt{output=answers}. % -% \medskip % \DescribeMacro{\displaypts} \DescribeMacro{\displaypoints} -% \DescribeMacro{\displaynotes}\DescribeMacro{\displaynotesright} % The commands |\displaypts| and |\displaypoints| -% are equivalent to setting \texttt{display=pts}; +% are equivalent to setting \texttt{display=pts}. +% +% \medskip +% \DescribeMacro{\displaynotes}\DescribeMacro{\displaynotesright} % |\displaynotes| means \texttt{display=notes}, % and |\displaynotesright| corresponds to -% \texttt{display=notes} and \texttt{marginpos=right}. +% \texttt{display=notes,marginpos=right}. +% These two commands have an optional argument |\displanotes|\marg{ragged} +% where \meta{ragged} is an alignment command to work inside margin notes. +% By default it is |\RaggedLeft| with |\displaynotes| and |RaggedRight| +% \footnote{These commands come from the \textsf{ragged2e} package +% by Martin Schröder~\cite{RAGG}.} +% with |\displaynotesright|. +% +% \subsection{Comparison with other packages}\label{comparison} +% +% In this section, we will provide an overview of the functionalities (as of today \today) +% of various packages or classes found in the 'Exercise' or 'Exam' sections +% of the CTAN archives +% (Comprehensive \TeX\ Archive Network). +% Considering the substantial number of packages in these sections, +% some omissions may have been unintentionally made. +% Those excluded are those with documentation not in English +% or primarily dedicated to producing multiple-choice questions +% or random question generation. Are also excluded those with non-free license. +% We have focused here on typesetting functionalities and not on managing exercise databases +% as there are specialized packages or external softwares for that. +% +% The following table is not a result of tests but presents a summary of information +% obtained from the documentation of these packages. +% +% \begin{multicols}{2} +% \begin{flushleft} +% \begin{enumerate}[label=\Alph*., font=\normalfont, noitemsep] +% \item \textsf{exercise}, Paul Pichaureau~\cite{EXER} +% \item \textsf{exercises}, Roger Jud~\cite{EXES} +% \item \textsf{xsim}, Clemens Niederberger~\cite{XSIM} +% \item \textsf{exframe}, Niklas Beisert~\cite{EXFR} +% \item \textsf{exam}, Philip Hirschhorn~\cite{EXAM}. +% \item \textsf{answers}, Mike Piff and Joseph Wright~\cite{ANSW} +% \item \textsf{probsoln}, Nicola L.C.\@ Talbot~\cite{PROB} +% \item \textsf{exsol}, Walter Daems~\cite{EXSO} +% \item \textsf{exercisepoints}, Henning Kerstan~\cite{EXEP} +% \item \textsf{worksheet}, Benjamin Zöllner~\cite{WORK} +% \item \textsf{exam-n}, Norman Gray, CTAN~\cite{EXAN} +% \item \textsf{eqexam}, D. P. Story~\cite{EQEX} +% \item \textsf{cesenaexam}, Alex Pacini~\cite{CESE} +% \item \textsf{hideanswer}, Yukoh Kusakabe~\cite{HIDE} +% \item \textsf{mathexam}, Jan Hlavacek~\cite{MATH} +% \item \textsf{exesheet}, Antoine Missier +% \end{enumerate} +% \end{flushleft} +% \end{multicols} +% +% \newcommand\X{\textsf{X}} +% \setlength{\extrarowheight}{2pt} +% \noindent\begin{tabular}{|@{\hspace{2pt}}l@{\hspace{4pt}}|% +% *{16}{@{\hspace{2pt}}c@{\hspace{2pt}}|}} +% \hline +% Functionality &A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P \\ +% \hline +% optional text for exercise titles &\X&&\X&\X&\X&&&&\X&&&&&&&\X \\ +% subparts of exercises &\X&&&\X&\X&&&&&&\X&&\X&&&\X \\ +% annex title &&&&&&&&&&&&&&&&\X \\ +% exercise titles in TOC of PDF files &\X&&&&&&&&&&&&&&&\X \\ +% short labels for exercises &\X&&&&&&&&&&&&&&&\X \\ +% hiding questions or answers* &\X&*&\X&\X&\X&*&\X&\X&&&*&\X&&*&&\X \\ +% different placements for answers &\X&&\X&&&&&&&&&\X&&&&\X \\ +% changing answers placement in output &\X&&\X&\X&&\X&&&&&&\X&&&& \\ +% blank spacing in place of answers &&&&&\X&&&&&&&\X&&&\X&\X \\ +% marking scheme commands &&\X&\X&\X&\X&&&&\X&\X&\X&\X&&&&\X \\ +% various positions of points &&&&&\X&&&&&&&\X&&&&\X \\ +% marking scheme calculation/checking &&\X&\X&\X&\X&&&&\X&&&&&&&\X \\ +% detailed notes for scoring guide &&&&&&&&&&&&&&&&\X \\ +% \hline +% \end{tabular} +% \medskip % % \StopEventually{} % +% \pagebreak % \section{Implementation} % % \subsection{Options and required packages} @@ -1301,6 +1383,10 @@ \ProcessKeyvalOptions* +\PackageInfo{exesheet}{The options `notoc' and `nosetlist' + \MessageBreak are no longer supported\@gobble} + % \@gobble suppresses the line number here + \def\exs@process@dynoptions{ \exs@process@output \exs@process@display @@ -1336,13 +1422,65 @@ % \end{macrocode} % \end{macro} +% +% The following old macros (used before version 2.0) provide an alternative to keyval options. +% They are kept for compatibility reasons. +% \begin{macrocode} +\newcommand{\questionsonly}{ + \PackageWarning{exesheet}{Old command \string\questionsonly\space + is used. \MessageBreak + It can be replaced by the option `output=questions'} + \renewcommand\exesheet@output{questions} + \exs@process@output +} +\newcommand{\answersonly}{ + \PackageWarning{exesheet}{Old command \string\answersonly\space + is used. \MessageBreak + It can be replaced by the option `output=answers'} + \renewcommand\exesheet@output{answers} + \exs@process@output +} +\newcommand{\displaypts}{% + \PackageWarning{exesheet}{Old command \string\displaypts\space + is used. \MessageBreak + It can be replaced by the option `display=pts'} + \renewcommand\exesheet@display{pts} + \exs@process@display +} +\newcommand{\displaypoints}{% + \PackageWarning{exesheet}{Old command \string\displaypoints\space + is used. \MessageBreak + It can be replaced by the option `display=pts'} + \renewcommand\exesheet@display{pts} + \exs@process@display +} +\newcommand*{\displaynotes}[1][\RaggedLeft]{% + \PackageWarning{exesheet}{Old command \string\displaynotes\space + is used. \MessageBreak + It can be replaced by the option `display=notes'} + \renewcommand\exesheet@display{notes} + \exs@process@display + \renewcommand{\noteragged}{#1} +} +\newcommand*{\displaynotesright}[1][\RaggedRight]{% + \PackageWarning{exesheet}{Old command \string\displaynotesright\space + is used. \MessageBreak + It can be replaced by the options `display=notes, margin=right'} + \renewcommand\exesheet@display{notes} + \exs@process@display + \renewcommand\exesheet@margin{right} + \renewcommand{\noteragged}{#1} +} + +% \end{macrocode} +% % Now, we load several packages. % If the \textsf{geometry} package is already loaded, it will not be reloaded % to prevent an option clash. -% The \texttt{shortlabel} option in the \textsf{enumitem} package allows the use +% The \texttt{shortlabel} option in the \textsf{enumitem} package~\cite{ENUM} allows the use % of labels similar to % the \textsf{enumerate} package such as 1., a), A., and so on. -% The \textsf{mparhack} package (by Tom Sgouros and Stefan Ulrich) +% The \textsf{mparhack} package by Tom Sgouros and Stefan Ulrich~\cite{MPAR} % is loaded exclusively for documents in \texttt{twoside} mode. % \begin{macrocode} \RequirePackage{ifthen} @@ -1361,14 +1499,10 @@ % \subsection{Internationalization} % Here we define keywords along with their translations in French, German, Spanish % Italian, Portuguese. We achieve this using macros from the \textsf{translations} package -% by Clemens Niederberger. This package automatically detects the language being used, +% by Clemens Niederberger~\cite{TRAN}. +% This package automatically detects the language being used, % as loaded by \textsf{babel} or \textsf{polyglossia}. % -% Accented characters cannot be utilized here, as they might not be recognized -% if \textsf{exesheet} is loaded before any other package -% (typically when it is loaded as a class). -% As a workaround, we rely on basic \LaTeX{} control sequences to generate them. -% % \begin{macrocode} \DeclareTranslationFallback{exesheet-exercise}{Exercise} \DeclareTranslationFallback{exesheet-subpart}{Part} @@ -1611,7 +1745,7 @@ % \end{macrocode} % \DescribeEnv{tablenum1} \DescribeEnv{tablenuma} -% The |\NewTasks| command is part of the \textsf{tasks} package. +% The |\NewTasks| command is part of the \textsf{tasks} package~\cite{TASK}. % It enables the definition of the environments \texttt{tablenum1}, % \texttt{tablenuma} and \texttt{tablitem}. % Horizontal spacing is adjusted to ensure proper alignment with @@ -1639,6 +1773,10 @@ \fi } % end of macro \exs@process@setlist +\PackageInfo{exesheet}{The environment `tablenum' is deprecated + \MessageBreak and has been replaced by `tablenum1'\@gobble} + % \@gobble suppresses the line number here + % \end{macrocode} % \DescribeEnv{tablitem} % \begin{macrocode} @@ -1750,7 +1888,7 @@ % \end{macro} % % \begin{environment}{questions} -% We utilize the \textsf{versions} package developed by Uwe Lück, +% We utilize the \textsf{versions} package developed by Uwe Lück~\cite{VERS}, % which introduces the macros |\comment| and |\endcomment|. % These macros facilitate conditional displays, a technique also employed % in the \textsf{verbatim} and \textsf{version} packages. @@ -1895,6 +2033,34 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\exs@process@correct} +% The \texttt{correct} option needs the \textsf{schooldocs} package. +% It triggers the |\correct| macro of \textsf{schooldocs} which +% adds the content of |\correctname| in the title of the document. +% Here the option \texttt{conditional} triggers |\correct| only if +% \texttt{output=answers} or \texttt{both}. +% \begin{macrocode} +\def\exs@process@correct{ + \ifthenelse{\equal{\exesheet@correct}{false}}{% do nothing + }{% else + \@ifpackageloaded{schooldocs}{ + \ifthenelse{\equal{\exesheet@correct}{true}}{ + \correct + }{% else + \ifthenelse{\equal{\exesheet@correct}{conditional}}{ + \ifexesheet@answers \correct \fi + }{}} + }{ + \PackageWarningNoLine{exesheet}{The `correct' option requires + \MessageBreak + the `schooldocs' package to be loaded} + }} +} + +% \end{macrocode} +% \end{macro} +% +% % \subsection{Marking scheme options processing} \label{MSoptions} % % The options \texttt{display}, \texttt{marginpos}, \texttt{marginwidth} @@ -2090,7 +2256,7 @@ % When working with a two-sided document, |\marginpar| can be used with an optional parameter % to distinguish left from right contents. % In this context, we employ |\noteraggedleft| and |\noteraggedright| instead of |\noteragged|. -% The \textsf{ragged2e} package by Martin Schröder offers the commands +% The \textsf{ragged2e} package by Martin Schröder~\cite{RAGG} offers the commands % |\RaggedLeft|, |\RaggedRight|, |\Centering|, and |\justifying|. % These commands yield better results compared to the standard % |\raggedleft|, |\raggedright| and |\centering| commands. @@ -2151,9 +2317,6 @@ % \begin{macro}{\exs@process@checkpts} % The scale control option relies on calculations with \emph{lengths}, % which need to have a \emph{global} scope. -% To achieve this, we first define the macros |\gsetlength| and |\gaddtolength|. -% These macros include \% symbols at the end of lines to avoid expanded blank -% spaces. % % For questions, assigned points will be added in |\sum@pts|, % while for exercises, points accumulate in |\sum@exe|. @@ -2171,21 +2334,6 @@ \def\exe@currentlabel{none} \newboolean{scale@valid} -\gdef\gsetlength#1#2{% for obtaining global length values - \begingroup - \setlength\skip@{#2}% local assignment to a scratch register - \global#1=\skip@% global assignment to #1 - \endgroup % \skip@ is restored at the end of the group -} - -\gdef\gaddtolength#1#2{% percent symbol necessary here! - \begingroup - \setlength\skip@{#1}% - \addtolength\skip@{#2}% - \global#1=\skip@% - \endgroup -} - \def\exe@check{% \ifthenelse{\lengthtest{\sum@pts = 0pt}}{% % do not check, no points or first exercise begins @@ -2214,9 +2362,9 @@ in the preamble. \MessageBreak See documentation} }{} - \gsetlength{\sum@exe}{0pt} - \gsetlength{\exe@total}{0pt} - \gsetlength{\sum@pts}{0pt} + \global\sum@exe=0pt + \global\exe@total=0pt + \global\sum@pts=0pt \setboolean{scale@valid}{true} \AtEndDocument{% final checking (global) \ifthenelse{\equal{\exe@currentlabel}{none}}{ @@ -2270,9 +2418,9 @@ \ifexesheet@checkpts% \exe@check% checks the previous exercise \gdef\exe@currentlabel{\exe@label}% for the upcoming exercise - \gsetlength{\sum@pts}{0pt}% - \gsetlength{\exe@total}{#1pt}% - \gaddtolength{\sum@exe}{#1pt}% + \global\sum@pts=0pt% + \global\exe@total=#1pt% + \global\advance\sum@exe by #1pt% \fi% } @@ -2310,7 +2458,7 @@ \mbox{}% \marginpar{\hspace{0pt}\ptsstyle{\ptsmark{#1}}}% \ifexesheet@checkpts% - \gaddtolength{\sum@pts}{#1pt}% + \global\advance\sum@pts by #1pt% \fi% \fi% \ignorespaces @@ -2346,7 +2494,7 @@ % \begin{macro}{\totalsheet} % \begin{macrocode} \newcommand*{\totalsheet}[1]{ - \gsetlength{\sheet@total}{#1pt} + \global\sheet@total=#1pt } % \end{macrocode} @@ -2358,7 +2506,7 @@ % \DescribeMacro{\note*} % \texttt{exesheet@notes} will be ignored. % |\noindent| is required when using |\justifying| from the \textsf{ragged2e} -% package. +% package~\cite{RAGG}. % Within the |\note@marginpar| macro, enclosing |\markingstyle| in double braces % helps prevent unintended formatting within the mandatory argument of |\note|. % A vicious error occurs when using an |\if| \ldots |\fi| structure @@ -2386,7 +2534,8 @@ }% \ifexesheet@checkpts% \ifthenelse{\equal{#1}{}}{}{% - \gaddtolength{\sum@pts}{#1pt}}% + \global\advance\sum@pts by #1pt% + }% \fi% \fi% \ignorespaces @@ -2396,7 +2545,7 @@ \mbox{}% \marginpar{\noindent\hspace{0pt}\markingstyle{#1}}% \ifexesheet@checkpts% - \gaddtolength{\sum@pts}{#1pt}% + \global\advance\sum@pts by #1pt% \fi% \fi% \ignorespaces @@ -2410,90 +2559,59 @@ \newcommand{\totalpoints}{% \ifthenelse{\boolean{exesheet@pts}}{\totalexe}{\points}} -% \end{macrocode} -% \end{macro} -% -% \subsection{The \texttt{correct} option and other (deprecated) commands} -% -% \begin{macro}{\exs@process@correct} -% \begin{macrocode} -\def\exs@process@correct{ - \ifthenelse{\equal{\exesheet@correct}{false}}{% do nothing - }{% else - \@ifpackageloaded{schooldocs}{ - \ifthenelse{\equal{\exesheet@correct}{true}}{ - \correct - }{% else - \ifthenelse{\equal{\exesheet@correct}{conditional}}{ - \ifexesheet@answers \correct \fi - }{}} - }{ - \PackageWarningNoLine{exesheet}{The `correct' option requires - \MessageBreak - the `schooldocs' package to be loaded} - }} -} - -% \end{macrocode} -% \end{macro} -% -% For the time being, the following macros are kept for compatibility reasons. -% \begin{macrocode} -\newcommand{\questionsonly}{ - \PackageWarning{exesheet}{The command \string\questionsonly\space - is deprecated; \MessageBreak - use the package option `output=questions' instead} - \renewcommand\exesheet@output{questions} - \exs@process@output -} -\newcommand{\answersonly}{ - \PackageWarning{exesheet}{The command \string\answersonly\space - is deprecated; \MessageBreak - use the package option `output=answers' instead} - \renewcommand\exesheet@output{answers} - \exs@process@output -} -\newcommand{\displaypts}{% - \PackageWarning{exesheet}{The command \string\displaypts\space - is deprecated; \MessageBreak - use the package option `display=pts' instead} - \renewcommand\exesheet@display{pts} - \exs@process@display -} -\newcommand{\displaypoints}{% - \PackageWarning{exesheet}{The command \string\displaypoints\space - is deprecated; \MessageBreak - use the package option `display=pts' instead} - \renewcommand\exesheet@display{pts} - \exs@process@display -} -\newcommand*{\displaynotes}[1][\RaggedLeft]{% - % \renewcommand{\noteragged}{#1} no effect now! - \PackageWarning{exesheet}{The command \string\displaynotes\space - is deprecated; \MessageBreak - use the package option `display=notes' instead} - \renewcommand\exesheet@display{notes} - \exs@process@display - \renewcommand{\noteragged}{#1} -} -\newcommand*{\displaynotesright}[1][\RaggedRight]{% - % \renewcommand{\noteragged}{#1} no effect now! - \PackageWarning{exesheet}{The command \string\displaynotes\space - is deprecated; \MessageBreak - use the package options `display=notes, margin=right' instead} - \renewcommand\exesheet@display{notes} - \exs@process@display - \renewcommand\exesheet@margin{right} - \renewcommand{\noteragged}{#1} -} - -\PackageInfo{exesheet}{The environment `tablenum' is deprecated - \MessageBreak and has been replaced by `tablenum1'. - \MessageBreak The options `notoc' and `nosetlist' - \MessageBreak are no longer supported\@gobble} - % \@gobble suppresses the line number here %</package> % \end{macrocode} +% \end{macro} % +% \begin{thebibliography}{24} +% % \begin{raggedright} +% \bibitem{GEOM} \emph{The \textsf{geometry} package}, +% Hideo Umeki, CTAN, v5.9 2020/01/02. +% \bibitem{ENUM} \emph{Customizing lists with teh \textsf{enumitem} package}, +% Javier Bezos, CTAN, v3.9 2019/06/20. +% \bibitem{TASK} \emph{\textsf{tasks} -- lists with columns filled horizontally}, +% Clemens Niederberger. CTAN, v1.4a, 2022/01/08. +% \bibitem{VERS} \emph{The \textsf{versions} package -- Omit passages optionally +% under \LaTeX}, Uwe Lück, CTAN, v0.55 2005/04/28. +% \bibitem{FBOX} \emph{Documentation for \texttt{fancybox.sty}: +% Box tips and tricks for \LaTeX}, Timothy Van Zandt, CTAN, v1.4 2010/05/15. +% \bibitem{TRAN} \emph{\textsf{translations} -- Internationalization of \LaTeXe\ Packages}, +% Clemens Niederberger, CTAN, v1.12 2022/02/05. +% \bibitem{RAGG} \emph{The \textsf{ragged2e-}package}, Martin Schröder, +% CTAN, v3.6 2023/06/22. +% \bibitem{MPAR} \emph{\texttt{mparhack.sty}}, Tom Sgouros, Stefan Ulrich, +% CTAN, v1.5 2021/05/02. +% \bibitem{SECT} \emph{The \textsf{sectsty} package}, Rowland McDonnell, +% CTAN, v2.0.2 2002/02/25. +% \bibitem{EXER} \emph{\texttt{exercise.sty} : a package to typeset exercises}, +% Paul Pichaureau, CTAN, v1.6 2014/10/21. +% \bibitem{EXES} \emph{The \textsf{exercises} package}, Roger Jud, +% CTAN, v1.1 2000/05/17. +% \bibitem{XSIM} \emph{\textsf{xsim} -- eXercise Sheets IMproved -- +% the official successor of the \textsf{exsheets} package}, Clemens Niederberger, +% CTAN, v0.21 2022/02/12. +% \bibitem{EXFR} \emph{The \textsf{exframe} package}, Niklas Beisert, +% CTAN, v3.4 202/02/24. +% \bibitem{EXAM} \emph{Using the \textsf{exam} document class}, Philip Hirschhorn, +% CTAN, v2.704 2023/07/09. +% \bibitem{ANSW} \emph{\textsf{answers} Production of solution sheets in \LaTeXe}, +% Mike Piff and Joseph Wright, CTAN, 2.16 2014/08/24. +% \bibitem{PROB} \emph{The \textsf{probsoln v3.05}: creating problem sheets +% optionally with solutions}, Nicola L.C.\@ Talbot, CTAN 2017/07/10. +% \bibitem{EXSO} \emph{The \textsf{ExSol} package}, Walter Daems, +% CTAN, 1.4 2018/10/23. +% \bibitem{EXEP} \emph{The \textsf{exercisepoints} Package}, Henning Kerstan, +% CTAN, v1.2.3 2019/01/03. +% \bibitem{WORK} \emph{\textsf{worksheet}}, Benjamin Zöllner, CTAN, v1.1 2018/08/17. +% \bibitem{EXAN} \emph{\textsf{exam-n}: exam papers}, Norman Gray, CTAN, v1.4.0 2022/10/10. +% \bibitem{EQEX} \emph{The \textsf{eqexam} Package -- part of the Acro\TeX\ eDucation Bundle}, +% D. P. Story, CTAN, 5.2 2021/02/26. +% \bibitem{CESE} \emph{\textsf{cesenaexam} — class file to typeset exams}, Alex Pacini, +% CTAN, v2.0 2017/08/03. +% \bibitem{HIDE} \emph{The \textsf{hideanswer} package: generate documents with +% and without answers by toggling a switch}, Yukoh Kusakabe, CTAN, v1.1 2022/07/09. +% \bibitem{MATH} \emph{The \textsf{mathexam} Package}, Jan Hlavacek, CTAN, v1.00 2007/07/30. +% \end{raggedright} +% \end{thebibliography} % \Finale \endinput diff --git a/macros/latex/contrib/exesheet/exesheet.pdf b/macros/latex/contrib/exesheet/exesheet.pdf Binary files differindex ee19226c2c..be92d96cc5 100644 --- a/macros/latex/contrib/exesheet/exesheet.pdf +++ b/macros/latex/contrib/exesheet/exesheet.pdf diff --git a/macros/latex/contrib/orcidlink/README.md b/macros/latex/contrib/orcidlink/README.md index 6b0100438a..272e3f9bee 100644 --- a/macros/latex/contrib/orcidlink/README.md +++ b/macros/latex/contrib/orcidlink/README.md @@ -30,8 +30,8 @@ When you want to insert the hyperlinked ORCiD logo, use `\orcidlink{0000-0000-00 This will appear as a clickable hyperlink, and will look like this: ![Author LaTeX render preview image](https://raw.githubusercontent.com/duetosymmetry/orcidlink-LaTeX-command/f03c85cd9fe3e40bec5f51b1319b0e9ab30c2e09/preview.png) -Dependancies ------------- +Dependancies and Compatibility +------------------------------ This package relies on the following packages: - [hyperref](https://www.ctan.org/pkg/hyperref) @@ -39,12 +39,16 @@ This package relies on the following packages: All of these packages are included in the popular [TeX Live](https://www.tug.org/texlive/) distribution, so most users should not have to install anything new. +If you want to pass options to either of these packages, load them +before you load `orcidlink`. Similarly, if you want to specify options +to e.g. `xcolor`, load `xcolor` before loading `tikz` or `orcidlink`. + Credits ------- The original TikZ icon code was created by user [Milo on TeX.SE](https://tex.stackexchange.com/users/128068/milo). This package was created and is maintained by [Leo -C. Stein](http://duetosymmetry.com/), (c) 2019. +C. Stein](http://duetosymmetry.com/), (c) 2019-2023. This material is subject to the [LaTeX Project Public License 1.3c](https://www.ctan.org/license/lppl1.3). diff --git a/macros/latex/contrib/orcidlink/orcidlink.dtx b/macros/latex/contrib/orcidlink/orcidlink.dtx index 219fb44268..e096f502f6 100644 --- a/macros/latex/contrib/orcidlink/orcidlink.dtx +++ b/macros/latex/contrib/orcidlink/orcidlink.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2020 by Leo C. Stein <leo.stein@gmail.com> +% Copyright (C) 2019-2023 by Leo C. Stein <leo.stein@gmail.com> % --------------------------------------------------------------------------- % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -27,7 +27,7 @@ %<*driver> \documentclass{ltxdoc} \usepackage[dvipsnames]{xcolor} -\usepackage{orcidlink}[2021/03/15] +\usepackage{orcidlink}[2023/12/30] \hypersetup{colorlinks,urlcolor=NavyBlue,citecolor=NavyBlue,linkcolor=NavyBlue,pdfusetitle} \usepackage{graphicx} \EnableCrossrefs @@ -40,7 +40,7 @@ %</driver> % \fi % -% \CheckSum{33} +% \CheckSum{41} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -67,6 +67,8 @@ % scaling ourselves, and using DeclareRobustCommand} % \changes{v1.0.4}{2021/06/11}{Use XeTeXLinkBox to get hyperlink % working correctly with XeTeX. Thanks to Tim Henke for the bug report.} +% \changes{v1.0.5}{2023/12/30}{Turn off TikZ externalization of logos. +% Thanks to github user aquileia for the bug report.} % % \DoNotIndex{\newcommand,\newenvironment} % @@ -111,6 +113,14 @@ % \includegraphics[width=0.5\textwidth]{preview}\newline{} % The macro is used in the author line of this documentation as well. % +% \section{Package Compatibility} +% +% This package relies on \texttt{hyperref} and \texttt{tikz}. If you +% want to pass options to either of these packages, load them +% \emph{before} you load \texttt{orcidlink}. Similarly, if you want +% to specify options to e.g. \texttt{xcolor}, load \texttt{xcolor} +% before loading \texttt{tikz} or \texttt{orcidlink}. +% % \StopEventually{} % % \section{Implementation} @@ -122,7 +132,7 @@ % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[1994/06/01] \ProvidesPackage{orcidlink} - [2021/06/11 v1.0.4 Linked ORCiD logo macro package] + [2023/12/30 v1.0.5 Linked ORCiD logo macro package] %% All I did was package up Milo's code on TeX.SE, %% see https://tex.stackexchange.com/a/445583/34063 @@ -150,6 +160,12 @@ %% We will compute the current X height to make the logo the right height \newlength{\@curXheight} +%% Prevent externalization of the ORCiD logo. +\newcommand{\@preventExternalization}{% +\ifcsname tikz@library@external@loaded\endcsname% +\tikzset{external/export next=false}\else\fi% +} + % \end{macrocode} % % \begin{macro}{\orcidlink} @@ -158,6 +174,7 @@ \texorpdfstring{% \setlength{\@curXheight}{\fontcharht\font`X}% \href{https://orcid.org/#1}{\XeTeXLinkBox{\mbox{% +\@preventExternalization% \begin{tikzpicture}[yscale=-\@OrigHeightRecip*\@curXheight, xscale=\@OrigHeightRecip*\@curXheight,transform shape] \pic{orcidlogo}; diff --git a/macros/latex/contrib/orcidlink/orcidlink.ins b/macros/latex/contrib/orcidlink/orcidlink.ins index dcdd43c005..201841f638 100644 --- a/macros/latex/contrib/orcidlink/orcidlink.ins +++ b/macros/latex/contrib/orcidlink/orcidlink.ins @@ -1,4 +1,4 @@ -%% Copyright (C) 2020 by Leo C. Stein <leo.stein@gmail.com> +%% Copyright (C) 2019-2023 by Leo C. Stein <leo.stein@gmail.com> %% -------------------------------------------------------------------------- %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -25,7 +25,7 @@ This is a generated file. -Copyright (C) 2020 by Leo C. Stein <leo.stein@gmail.com> +Copyright (C) 2019-2023 by Leo C. Stein <leo.stein@gmail.com> -------------------------------------------------------------------------- This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/orcidlink/orcidlink.pdf b/macros/latex/contrib/orcidlink/orcidlink.pdf Binary files differindex 49a8daa112..25ba75e856 100644 --- a/macros/latex/contrib/orcidlink/orcidlink.pdf +++ b/macros/latex/contrib/orcidlink/orcidlink.pdf diff --git a/macros/latex/contrib/pgfkeysearch/README.md b/macros/latex/contrib/pgfkeysearch/README.md index 58a12659fc..71ff4b251d 100644 --- a/macros/latex/contrib/pgfkeysearch/README.md +++ b/macros/latex/contrib/pgfkeysearch/README.md @@ -34,6 +34,28 @@ This work has the LPPL maintenance status *maintained*. The Current Maintainer of this work is Alceu Frigeri +------------- +## This work consist of the files + +* pgfkeysearch.sty + - the package itself + +* README.md (this file) + - quick introduction + +* pgfkeysearch.tex + - pakcage documentation +* pgfkeysearch.pdf + - documentation in PDF format + +------------- + +## Changelog + +* Version 1.1 (this) + - More typos. + - renamed some internal variables to better follow the expl3 recommendations. + - exposing the Expl3 commands. * Version 1.0 - Initial setup. diff --git a/macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.pdf b/macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.pdf Binary files differindex ce036e2a6e..70d2abe150 100644 --- a/macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.pdf +++ b/macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.pdf diff --git a/macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.tex b/macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.tex index 5ebd18a090..8e29e2a3ab 100644 --- a/macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.tex +++ b/macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.tex @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {1.5} {2023/11/28} +%% This is version {1.5} {2023/12/29} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/pgfkeysearch @@ -51,7 +51,7 @@ That's exactly the aim of this, by having a way to find a key in a given path (o \tsobj[marg]{path-list} is a comma separated list (clist) of paths (can be a single one). \tsobj[marg]{key} is the desired key and \tsobj[marg]{macro} is the macro/command that will receive (store) the key value (if one was found). For instance, given a path /A/B/C/D it will look first at /A/B/C/D/\tsobj[marg]{key}, them /A/B/C/\tsobj[marg]{key}, and so on, until /A/\tsobj[marg]{key}, -Stopping at the first hit, returning the value found in the \tsobj[marg]{macro}. +stopping at the first hit, returning the value found in the \tsobj[marg]{macro}. The branch version will also execute either \tsobj[marg,sep={or}]{if-found,if-not}. \end{codedescribe} @@ -61,26 +61,31 @@ The branch version will also execute either \tsobj[marg,sep={or}]{if-found,if-no \begin{codestore}[keyval.demo] \pgfkeys{/tikz/A/.cd, - keyA/.initial={A keyA}, - keyB/.initial={A keyB}, + keyA/.initial={keyA at /tikz/A}, + keyB/.initial={keyB at /tikz/A}, B/.cd, - keyA/.initial={B keyA}, - keyC/.initial={B keyC}, + keyA/.initial={keyA at /tikz/A/B}, + keyC/.initial={keyC at /tikz/A/B}, C/.cd, - keyX/.initial={C keyX} } + keyX/.initial={keyX at /tikz/A/B/C} } \pgfkeysearchvalueof{/tikz/A/B/C}{keyA}{\VALkeyA} \pgfkeysearchvalueof{/tikz/A/B/C}{keyB}{\VALkeyB} \pgfkeysearchvalueof{/tikz/A/B/C}{keyC}{\VALkeyC} \pgfkeysearchvalueof{/tikz/A/B/C}{keyX}{\VALkeyX} - I got for keyA: \textbf{\VALkeyA} \par I got for keyB: \textbf{\VALkeyB} \par I got for keyC: \textbf{\VALkeyC} \par I got for keyX: \textbf{\VALkeyX} \par - \end{codestore} \tsdemo[emph={pgfkeysearchvalueof}]{keyval.demo} - -\end{document}
\ No newline at end of file +\section{Expl3 Base Commands} +\begin{codedescribe}{\pgfkeysearch_multipath_keysearch:nnnTF,\pgfkeysearch_keysearch:nnnTF} +\begin{codesyntax}% +\tsmacro{\pgfkeysearch_multipath_keysearch:nnnTF}{path-list,key,macro,if-found,if-not} +\tsmacro{\pgfkeysearch_keysearch:nnnTF}{single-path,key,macro,if-found,if-not} +\end{codesyntax} +These are the \tsobj[pkg]{Expl3} version of it (for package writers). In fact, the \tsobj{\pgfkeysearchvalueof} is just a wrapper to \tsobj{\pgfkeysearch_multipath_keysearch:nnnTF}. The \tsobj{\pgfkeysearch_keysearch:nnnTF} is the single path version. +\end{codedescribe} +\end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/pgfkeysearch/latex/pgfkeysearch.sty b/macros/latex/contrib/pgfkeysearch/latex/pgfkeysearch.sty index bc1da1ae03..1b2144cfe1 100644 --- a/macros/latex/contrib/pgfkeysearch/latex/pgfkeysearch.sty +++ b/macros/latex/contrib/pgfkeysearch/latex/pgfkeysearch.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {1.0} {2023/12/27} +%% This is version {1.1} {2023/12/29} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/pgfkeysearch @@ -23,8 +23,8 @@ \ProvidesExplPackage {pgfkeysearch} - {2023/12/27} - {1.0} + {2023/12/29} + {1.1} {pgfkeys Search Extension} \ExplSyntaxOn @@ -38,8 +38,8 @@ { name .code:n = {pgfkeysearch} , prefix .code:n = {pgfkeysearch} , - date .code:n = {2023/12/27}, - version .code:n = {1.0} , + date .code:n = {2023/12/29}, + version .code:n = {1.1} , description .code:n = {pgfkeys Search Extension} } \cs_if_exist:NF \__codedesc_pkg_info:nn @@ -60,89 +60,24 @@ %%% End of cut-n-paste %%%%%%% - %%%%%%%%%%%%%%% %%% -%%% Expl3 machinery. _keysearch_ allows to find a key, +%%% _keysearch allows to find a key, %%% if it's defined from 'anywhere' in the tree. I mean, upwards until, likely, /tikz/<key> %%% if it isn't defined, returns nothing (no error triggered) %%% %%%%%%%%%%%%%%% -\seq_new:N \l__ctikzext_pathterms_seq -\seq_new:N \l__ctikzext_pathtree_seq -\tl_new:N \l__ctikzext_key_tl -\tl_new:N \l__ctikzext_path_tl - - -%%%%%%%%%%%%%%%% -%%%% -%%%% This works BUT, it isn't expandable and not a 1-to-1 replacement for pgfkeysvalueof (which is fully expandable) -%%%% don't use this unless you know what you are doing. To avoid trouble tickets headaches, it's commeted out -%%%% -%%%%%%%%%%%%%%%% -%\cs_new_protected:Npn \__ctikzext_keysearch:n #1 -% { -% \seq_set_split:Nne \l__ctikzext_pathterms_seq {/} {#1} -% \seq_pop_right:NN \l__ctikzext_pathterms_seq \l__ctikzext_key_tl -% \seq_remove_all:Nn \l__ctikzext_pathterms_seq {} -% \tl_clear:N \l__ctikzext_path_tl -% \seq_clear:N \l__ctikzext_pathtree_seq -% \seq_map_inline:Nn \l__ctikzext_pathterms_seq -% { -% \tl_put_right:Ne \l__ctikzext_path_tl {/##1} -% \seq_put_right:Ne \l__ctikzext_pathtree_seq {\l__ctikzext_path_tl} -% } -% \seq_reverse:N \l__ctikzext_pathtree_seq -% \seq_map_inline:Nn \l__ctikzext_pathtree_seq -% { -% \cs_if_exist:cT {pgfk@##1/\l__ctikzext_key_tl} -% { -% \exp_args:Ne \use:c {pgfk@##1/\l__ctikzext_key_tl} -% \seq_map_break: -% } -% } -% } - - - -%%%%%%%%%%%%%%% -%%% -%%% Deplecated... single path key search (just a bit faster if a single path) -%%% -%%%%%%%%%%%%%%% -%\prg_new_protected_conditional:Npnn \__ctikzext_keysearch:nn #1#2 {TF,T,F} -% { -% \seq_set_split:Nne \l__ctikzext_pathterms_seq {/} {#1} -% \seq_pop_right:NN \l__ctikzext_pathterms_seq \l__ctikzext_key_tl -% \seq_remove_all:Nn \l__ctikzext_pathterms_seq {} -% \tl_clear:N \l__ctikzext_path_tl -% \seq_clear:N \l__ctikzext_pathtree_seq -% \seq_map_inline:Nn \l__ctikzext_pathterms_seq -% { -% \tl_put_right:Ne \l__ctikzext_path_tl {/##1} -% \seq_put_right:Ne \l__ctikzext_pathtree_seq {\l__ctikzext_path_tl} -% } -% \seq_reverse:N \l__ctikzext_pathtree_seq -% \bool_set_false:N \l__ctikzext_valuefound_bool -% \seq_map_inline:Nn \l__ctikzext_pathtree_seq -% { -% \cs_if_exist:cT {pgfk@##1/\l__ctikzext_key_tl} -% { -% \tl_set:Ne #2 {\exp_not:N \use:c{pgfk@##1/\l__ctikzext_key_tl}} -% \bool_set_true:N \l__ctikzext_valuefound_bool -% \seq_map_break: -% } -% } -% \bool_if:nTF {\l__ctikzext_valuefound_bool} -% { \prg_return_true: } -% { \prg_return_false: } -% } - +\seq_new:N \l__pgfkeysearch_pathterms_seq +\seq_new:N \l__pgfkeysearch_pathtree_seq +\tl_new:N \l__pgfkeysearch_path_tl +\bool_new:N \l__pgfkeysearch_keyfound_bool +\bool_new:N \l__pgfkeysearch_multipath_keyfound_bool +\cs_generate_variant:Nn \tl_set:Nn {Ne} %%%%%%%%%%%%%%% %%% -%%% Given a path /A/B/C/D it will look after +%%% Given a single path /A/B/C/D it will look after %%% /A/B/C/D/<key> %%% /A/B/C/<key> %%% /A/B/<key> @@ -150,63 +85,56 @@ %%% stoping at the first hit %%% %%%%%%%%%%%%%%% - -\bool_new:N \l__ctikzext_valuefound_bool -\prg_new_protected_conditional:Npnn \__ctikzext_keysearch:nnn #1#2#3 {TF,T,F} +\prg_new_protected_conditional:Npnn \pgfkeysearch_keysearch:nnn #1#2#3 {TF,T,F} { - \seq_set_split:Nne \l__ctikzext_pathterms_seq {/} {#1} - \seq_remove_all:Nn \l__ctikzext_pathterms_seq {} - \tl_clear:N \l__ctikzext_path_tl - \seq_clear:N \l__ctikzext_pathtree_seq - \seq_map_inline:Nn \l__ctikzext_pathterms_seq + \seq_set_split:Nne \l__pgfkeysearch_pathterms_seq {/} {#1} + \seq_remove_all:Nn \l__pgfkeysearch_pathterms_seq {} + \tl_clear:N \l__pgfkeysearch_path_tl + \seq_clear:N \l__pgfkeysearch_pathtree_seq + \seq_map_inline:Nn \l__pgfkeysearch_pathterms_seq { - \tl_put_right:Ne \l__ctikzext_path_tl {/##1} - \seq_put_right:Ne \l__ctikzext_pathtree_seq {\l__ctikzext_path_tl} + \tl_put_right:Ne \l__pgfkeysearch_path_tl {/##1} + \seq_put_right:Ne \l__pgfkeysearch_pathtree_seq {\l__pgfkeysearch_path_tl} } - \seq_reverse:N \l__ctikzext_pathtree_seq - \bool_set_false:N \l__ctikzext_valuefound_bool - \seq_map_inline:Nn \l__ctikzext_pathtree_seq + \seq_reverse:N \l__pgfkeysearch_pathtree_seq + \bool_set_false:N \l__pgfkeysearch_keyfound_bool + \seq_map_inline:Nn \l__pgfkeysearch_pathtree_seq { \cs_if_exist:cT {pgfk@##1/#2} { \tl_set:Ne #3 {\exp_not:N \use:c{pgfk@##1/#2}} - \bool_set_true:N \l__ctikzext_valuefound_bool + \bool_set_true:N \l__pgfkeysearch_keyfound_bool \seq_map_break: } } - \bool_if:nTF {\l__ctikzext_valuefound_bool} + \bool_if:nTF {\l__pgfkeysearch_keyfound_bool} { \prg_return_true: } { \prg_return_false: } } - - - %%%%%%%%%%%%%%% %%% %%% #1 shall be a comma separated list of paths (can be a single one) -%%% it searchs for the key in every path, stoping at the first hit. +%%% it searchs for key in every path, stoping at the first hit. %%% %%%%%%%%%%%%%%% - -\bool_new:N \l__ctikzext_multisearch_bool -\prg_new_protected_conditional:Npnn \__ctikzext_multipath_keysearch:nnn #1#2#3 {T,F,TF} +\prg_new_protected_conditional:Npnn \pgfkeysearch_multipath_keysearch:nnn #1#2#3 {T,F,TF} { - \bool_set_false:N \l__ctikzext_multisearch_bool + \bool_set_false:N \l__pgfkeysearch_multipath_keyfound_bool \clist_map_inline:nn {#1} { - \__ctikzext_keysearch:nnnT {##1}{#2}{#3} + \pgfkeysearch_keysearch:nnnT {##1}{#2}{#3} { - \bool_set_true:N \l__ctikzext_multisearch_bool + \bool_set_true:N \l__pgfkeysearch_multipath_keyfound_bool \clist_map_break: } } - \bool_if:nTF {\l__ctikzext_multisearch_bool} + \bool_if:nTF {\l__pgfkeysearch_multipath_keyfound_bool} { \prg_return_true: } { \prg_return_false: } } -\cs_generate_variant:Nn \tl_set:Nn {Ne} + %%%%%%%%%%%%%%% %%% @@ -223,13 +151,13 @@ \NewDocumentCommand{\pgfkeysearchvalueof}{mmm} { - \__ctikzext_multipath_keysearch:nnnF {#1}{#2}{#3} + \pgfkeysearch_multipath_keysearch:nnnF {#1}{#2}{#3} { \tl_set:Nn #3 {} } } \NewDocumentCommand{\pgfkeysearchvalueofTF}{mmmmm} { - \__ctikzext_multipath_keysearch:nnnTF {#1}{#2}{#3} + \pgfkeysearch_multipath_keysearch:nnnTF {#1}{#2}{#3} { #4 } { \tl_set:Nn #3 {} diff --git a/macros/latex/contrib/schulmathematik/README b/macros/latex/contrib/schulmathematik/README index 7a9604603f..a0c22b6243 100644 --- a/macros/latex/contrib/schulmathematik/README +++ b/macros/latex/contrib/schulmathematik/README @@ -2,8 +2,8 @@ The schulmathematik bundle provides LaTeX commands and document classes for German-speaking teachers of mathematics and physics. Package author: K. Wehr -Version: 1.5 -Date: 21 June 2023 +Version: 1.6 +Date: 30 December 2023 The schulmathematik bundle is subject to the LaTeX Project Public License, version 1.3 or later. diff --git a/macros/latex/contrib/schulmathematik/schulma-ab.cls b/macros/latex/contrib/schulmathematik/schulma-ab.cls index 6417bb86ee..05d9d176e4 100644 --- a/macros/latex/contrib/schulmathematik/schulma-ab.cls +++ b/macros/latex/contrib/schulmathematik/schulma-ab.cls @@ -1,8 +1,8 @@ % schulmathematik bundle: document class schulma-ab -% Version 1.5 -% 21. Juni 2023 +% Version 1.6 +% 30. Dezember 2023 \NeedsTeXFormat{LaTeX2e} -\ProvidesExplClass{schulma-ab}{2023-06-21}{1.5}{Dokumentenklasse fuer Arbeitsblaetter} +\ProvidesExplClass{schulma-ab}{2023-12-30}{1.6}{Dokumentenklasse fuer Arbeitsblaetter} \tl_new:N \g_schulma_ab_kurs_tl \tl_new:N \g_schulma_ab_thema_tl @@ -49,7 +49,7 @@ \PassOptionsToClass {\CurrentOption} {scrartcl} } -\ProcessOptions\relax +\ProcessOptions \relax \NewDocumentCommand \Kurs {m} { @@ -132,6 +132,7 @@ \addtokomafont{pagefoot}{\upshape} \cfoot{\pagemark/\pageref{LastPage}} +\ofoot{} %\DTMlangsetup*{twodigits=false,datesep={.\thinspace}} % Option twodigits z. Zt. nicht implementiert diff --git a/macros/latex/contrib/schulmathematik/schulma-gutachten.cls b/macros/latex/contrib/schulmathematik/schulma-gutachten.cls index 5c3dd770d8..90dd4e2c65 100644 --- a/macros/latex/contrib/schulmathematik/schulma-gutachten.cls +++ b/macros/latex/contrib/schulmathematik/schulma-gutachten.cls @@ -1,8 +1,8 @@ % schulmathematik bundle: document class schulma-gutachten -% Version 1.5 -% 21. Juni 2023 +% Version 1.6 +% 30. Dezember 2023 \NeedsTeXFormat{LaTeX2e} -\ProvidesExplClass{schulma-gutachten}{2023-06-21}{1.5}{Dokumentenklasse fuer Gutachten ueber schriftliche Abiturklausuren} +\ProvidesExplClass{schulma-gutachten}{2023-12-30}{1.6}{Dokumentenklasse fuer Gutachten ueber schriftliche Abiturklausuren} \bool_new:N \g_schulma_gutachten_bell_bool \bool_new:N \g_schulma_gutachten_oesterreich_bool @@ -75,7 +75,7 @@ \cs_generate_variant:Nn \tl_if_eq:nnTF {V} -\cs_new:Npn \schulma_gutachten_notenpunkte_ermitteln: +\cs_new:Npn \schulma_gutachten_notenpunkte_ermitteln: { \int_set:Nn \l_schulma_gutachten_notenpunkte_int {15} \fp_compare:nNnT {\l_schulma_gutachten_prozentsatz_fp} < {95.0}{ @@ -189,7 +189,7 @@ \bool_set_true:N \l_schulma_gutachten_pruefling_weiblich_bool } \noindent - \tl_if_empty:NTF \g_schulma_gutachten_schulname_tl + \tl_if_empty:NTF \g_schulma_gutachten_schulname_tl { \msg_warning:nn {schulma-gutachten} {Schule fehlt} } @@ -222,7 +222,7 @@ } \\[1mm] \normalsize - \tl_if_empty:NTF \g_schulma_gutachten_fach_tl + \tl_if_empty:NTF \g_schulma_gutachten_fach_tl { \msg_warning:nn {schulma-gutachten} {Fach fehlt} } @@ -305,7 +305,7 @@ \c_space_tl und~wird~mit \begin {center} - \schulma_gutachten_notenpunktausgabe:N + \schulma_gutachten_notenpunktausgabe:N \l_schulma_gutachten_notenpunkte_int \end {center} bewertet. diff --git a/macros/latex/contrib/schulmathematik/schulma-klausur.cls b/macros/latex/contrib/schulmathematik/schulma-klausur.cls index 24499bd1cc..7304b2696c 100644 --- a/macros/latex/contrib/schulmathematik/schulma-klausur.cls +++ b/macros/latex/contrib/schulmathematik/schulma-klausur.cls @@ -1,17 +1,19 @@ % schulmathematik bundle: document class schulma-klausur -% Version 1.5 -% 21. Juni 2023 +% Version 1.6 +% 30. Dezember 2023 \NeedsTeXFormat{LaTeX2e} -\ProvidesExplClass{schulma-klausur}{2023-06-21}{1.5}{Dokumentenklasse fuer Klausuren} +\ProvidesExplClass{schulma-klausur}{2023-12-30}{1.6}{Dokumentenklasse fuer Klausuren} \RequirePackage {etoolbox} \str_new:N \g_schulma_klausur_datum_str +\str_new:N \g_schulma_klausur_loesungsdatum_str \str_new:N \g_schulma_klausur_titel_str \str_new:N \g_schulma_klausur_teiltitel_str \str_new:N \g_schulma_klausur_bearbeitungszeit_str \str_new:N \g_schulma_klausur_formeldokumentseiten_str +\tl_new:N \g_schulma_klausur_musterloesungstitel_tl \tl_new:N \g_schulma_klausur_kurs_tl \tl_new:N \g_schulma_klausur_nummer_tl \tl_new:N \g_schulma_klausur_untertitel_tl @@ -27,6 +29,7 @@ \bool_new:N \g_schulma_klausur_differenzenquotient_bool \bool_new:N \g_schulma_klausur_differentialquotient_bool \bool_new:N \g_schulma_klausur_musterloesung_bool +\bool_new:N \g_schulma_klausur_praesentation_bool \bool_new:N \l_schulma_klausur_loesung_bool \int_new:N \g_schulma_klausur_anzahl_hilfen_int @@ -138,6 +141,13 @@ \DeclareOption {Musterloesung} { \bool_gset_true:N \g_schulma_klausur_musterloesung_bool + \bool_gset_true:N \g_schulma_klausur_praesentation_bool + } + +\DeclareOption {MusterloesungD} + { + \bool_gset_true:N \g_schulma_klausur_musterloesung_bool + \bool_gset_false:N \g_schulma_klausur_praesentation_bool } \DeclareOption* @@ -156,13 +166,44 @@ \str_gset:Nn \g_schulma_klausur_titel_str {Klausur} } -\PassOptionsToPackage {override} {xcolor} +\tl_gset:Nn \g_schulma_klausur_musterloesungstitel_tl + { + Musterl\"osung~der~ + \tl_if_empty:NF \g_schulma_klausur_nummer_tl + { + \g_schulma_klausur_nummer_tl.~ + } + \bool_if:NTF \g_schulma_klausur_schriftliche_lernkontrolle_bool + { + schriftlichen~Lernkontrolle + } + { + \g_schulma_klausur_titel_str + } + \str_if_empty:NF \g_schulma_klausur_datum_str + { + \c_space_tl + \mbox { vom~ \DTMdate { \g_schulma_klausur_datum_str } } + } + \str_if_empty:NF \g_schulma_klausur_teiltitel_str + { + \\ [1ex] + \textit { \g_schulma_klausur_teiltitel_str } + } + } + +% \PassOptionsToPackage {override} {xcolor} % verursacht seit 17. Nov. 2023 Fehlermeldung \NewDocumentCommand \Nr {m} { \tl_gset:Nn \g_schulma_klausur_nummer_tl {#1} } +\NewDocumentCommand \Loesungsdatum {m} + { + \str_gset:Nn \g_schulma_klausur_loesungsdatum_str {#1} + } + \NewDocumentCommand \Formeldokument {m} { \str_gset:Nn \g_schulma_klausur_formeldokumentseiten_str {#1} @@ -180,38 +221,26 @@ \RequirePackage {schulma} \RequirePackage {schulma-physik} -\bool_if:NTF \g_schulma_klausur_musterloesung_bool +\bool_if:NTF \g_schulma_klausur_praesentation_bool { \LoadClass [t] {schulma-praes} - \tl_set:Nn \g_schulma_praes_nummer_tl + \date { - Musterl\"osung~der~ - \tl_if_empty:NF \g_schulma_klausur_nummer_tl - { - \g_schulma_klausur_nummer_tl.~ - } - \bool_if:NTF \g_schulma_klausur_schriftliche_lernkontrolle_bool + \str_if_empty:NTF \g_schulma_klausur_loesungsdatum_str { - schriftlichen~Lernkontrolle + \today } { - \g_schulma_klausur_titel_str - } - \DTMifsaveddate {g_schulma_klausur_klausurdatum} - { - \c_space_tl - vom~ - \DTMusedate {g_schulma_klausur_klausurdatum} - } - {} % \DTMifsaveddate hat drei Argumente - \str_if_empty:NF \g_schulma_klausur_teiltitel_str - { - \\ [1ex] - \textit { \g_schulma_klausur_teiltitel_str } + \printdate { \g_schulma_klausur_loesungsdatum_str } % isodate-Befehl } } + \tl_set:Nn \g_schulma_praes_nummer_tl + { + \g_schulma_klausur_musterloesungstitel_tl + } + \resetcounteronoverlays {Aufgabe} \NewDocumentCommand \Aufgabe {s o o d()} @@ -262,8 +291,8 @@ \alph {Teilaufgabe} ) } { - \setlength \topsep {\Teilaufgabenabstand} - \setlength \itemsep {\Teilaufgabenabstand} + \setlength \topsep { \Teilaufgabenabstand } + \setlength \itemsep { \Teilaufgabenabstand } \bool_if:NF \l_schulma_klausur_loesung_bool { \FarbeAufgabe @@ -274,20 +303,9 @@ \end {list} } - \NewDocumentEnvironment {Lsg} {s} - % Stern: Lösung beginnt mit einer Gleichung, kein Abstand erforderlich - { - \IfBooleanF {#1} { \par \medskip } - \bool_gset_true:N \l_schulma_klausur_loesung_bool - \FarbeLoesung - } - { - \bool_gset_false:N \l_schulma_klausur_loesung_bool - } - \RenewDocumentCommand \Datum {m} { - \DTMsavedate {g_schulma_klausur_klausurdatum} {#1} + \str_gset:Nn \g_schulma_klausur_datum_str {#1} } } { @@ -300,6 +318,24 @@ \label{LastPage} } + \bool_if:NT \g_schulma_klausur_musterloesung_bool + { + \bool_if:NTF \g_schulma_klausur_oesterreich_bool + { + \RequirePackage [naustrian] {isodate} + } + { + \RequirePackage [ngerman] {isodate} + } + + % isodate: Monat ggf. einstellig anzeigen: + \numdate[arabic] + % isodate: Tag ggf. einstellig anzeigen: + \isotwodigitdayfalse + % isodate: Abstand zwischen Monat und Jahr im numerischen Format: + \monthyearsepgerman{\,}{\,} + } + \NewDocumentCommand \Kurs {m} { \tl_gset:Nn \g_schulma_klausur_kurs_tl {#1} @@ -307,7 +343,7 @@ \NewDocumentCommand \Datum {m} { - \str_set:Nn \g_schulma_klausur_datum_str {#1} + \str_gset:Nn \g_schulma_klausur_datum_str {#1} } \NewDocumentEnvironment {Teilaufgaben} { } @@ -316,8 +352,8 @@ \begin {list} { \stepcounter {Teilaufgabe} \alph {Teilaufgabe} ) } { - \setlength \topsep {\Teilaufgabenabstand} - \setlength \itemsep {\Teilaufgabenabstand} + \setlength \topsep { \Teilaufgabenabstand } + \setlength \itemsep { \Teilaufgabenabstand } } } { @@ -330,28 +366,29 @@ { \setlength \leftmargin {0pt} \setlength \partopsep {0pt} - \setlength \topsep {0.75\Aufgabenabstand} - \setlength \itemsep {\Aufgabenabstand} + \setlength \topsep { 0.75 \Aufgabenabstand } + \setlength \itemsep { \Aufgabenabstand } } % innerhalb der Liste Originalwert verwenden \setlength \topsep {9pt plus3pt minus5pt} } - \AtBeginDocument {\schulma_klausur_kopf:} + \AtBeginDocument { \schulma_klausur_kopf: } \RequirePackage {pdfpages} + \RequirePackage {comment} - \pretocmd {\enddocument} + \pretocmd { \enddocument } { \end {list} - \par - \int_compare:nNnT {\g_schulma_klausur_anzahl_hilfen_int} > {1} + \par + \int_compare:nNnT { \g_schulma_klausur_anzahl_hilfen_int } > {1} { \vfill \noindent \textsl {Hilfen:} \begin {itemize} - + \bool_if:NT \g_schulma_klausur_pqformel_bool { \item @@ -367,15 +404,15 @@ \item \c_schulma_klausur_differentialquotient_tl } - + \end {itemize} } - \int_compare:nNnT {\g_schulma_klausur_anzahl_hilfen_int} = {1} + \int_compare:nNnT { \g_schulma_klausur_anzahl_hilfen_int } = {1} { \vfill \noindent \textsl {Hilfe:} ~ - + \bool_if:NT \g_schulma_klausur_pqformel_bool { \c_schulma_klausur_pqformel_tl @@ -425,7 +462,7 @@ } \IfBooleanF {#1} {.} \group_end: - \peek_catcode:NF \c_space_token {\c_space_tl} + \peek_catcode:NF \c_space_token { \c_space_tl } } \NewDocumentCommand \Gruppen {smm} @@ -449,13 +486,18 @@ \RequirePackage [top=2.7cm, hmargin=2.5cm] {geometry} } - \addtokomafont {pagefoot} {\slshape} - \addtokomafont {pagenumber} {\slshape} - \rohead { Name:~ \raisebox {-1mm} { \rule {7cm} {0,4pt} } } + \addtokomafont {pagefoot} { \slshape } + \addtokomafont {pagenumber} { \slshape } + + \bool_if:NF \g_schulma_klausur_musterloesung_bool + { + \rohead { Name:~ \raisebox {-1mm} { \rule {7cm} {0,4pt} } } + \excludecomment {Lsg} + } + \cfoot { Seite~ \pagemark \c_space_tl von~ \pageref {LastPage} } + \ofoot { } - \RequirePackage {comment} - \excludecomment {Lsg} \RequirePackage {beamerarticle} \RequirePackage {tasks} @@ -493,7 +535,7 @@ \int_incr:N \l_tmpa_int } } - \int_compare:nNnF {\l_tmpa_int} = {0} {\int_use:N \l_tmpa_int} + \int_compare:nNnF { \l_tmpa_int } = {0} { \int_use:N \l_tmpa_int } \int_compare:nNnF {##1} = {6} {&} } \end {tabular} @@ -526,7 +568,7 @@ \int_incr:N \l_tmpa_int } } - \int_compare:nNnF {\l_tmpa_int} = {0} {\int_use:N \l_tmpa_int} + \int_compare:nNnF { \l_tmpa_int } = {0} { \int_use:N \l_tmpa_int } \int_compare:nNnF {##1} = {0} {&} } \end {tabular} @@ -567,12 +609,6 @@ \tl_gset:Nn \g_schulma_klausur_hilfsmittel_tl {#1} } -\NewDocumentCommand \Loesungsdatum {m} - { - % \date { \DTMdate {#1} } - \date { \printdate {#1} } % isodate-Befehl - } - \DeclareDocumentCommand \Aufgabentitel {m} { \tl_set:Nn \l_schulma_klausur_aufgabentitel_tl {#1} @@ -597,8 +633,8 @@ \bool_if:NT \g_schulma_klausur_musterloesung_bool { \begin {frame} - \begin {center} \frametitle {Notenspiegel} + \begin {center} \large \schulma_klausur_notenpunkttabelle:n {#1} \end {center} @@ -609,23 +645,38 @@ \cs_set:Npn \schulma_klausur_kopf: { \noindent - \parbox [t] {5cm} {\g_schulma_klausur_kurs_tl} + \parbox [t] {5cm} { \g_schulma_klausur_kurs_tl } \hfill - \str_if_empty:NF \g_schulma_klausur_datum_str + \bool_if:NTF \g_schulma_klausur_musterloesung_bool + { + \str_if_empty:NF \g_schulma_klausur_loesungsdatum_str + { + \printdate { \g_schulma_klausur_loesungsdatum_str } % isodate-Befehl + } + } { - \DTMdate {\g_schulma_klausur_datum_str} + \str_if_empty:NF \g_schulma_klausur_datum_str + { + \DTMdate { \g_schulma_klausur_datum_str } + } } \begin {center} \sffamily \bfseries \Large - \g_schulma_klausur_titel_str - \tl_if_empty:NF \g_schulma_klausur_nummer_tl + \bool_if:NTF \g_schulma_klausur_musterloesung_bool { - \c_space_tl - Nr.~ - \g_schulma_klausur_nummer_tl + \g_schulma_klausur_musterloesungstitel_tl + } + { + \g_schulma_klausur_titel_str + \tl_if_empty:NF \g_schulma_klausur_nummer_tl + { + \c_space_tl + Nr.~ + \g_schulma_klausur_nummer_tl + } } \bool_if:NT \g_schulma_klausur_gruppe_a_bool { \c_space_tl (A) } @@ -642,7 +693,7 @@ { \par \vspace {3ex} \large - \textit {\g_schulma_klausur_teiltitel_str} + \textit { \g_schulma_klausur_teiltitel_str } } \str_if_empty:NF \g_schulma_klausur_bearbeitungszeit_str @@ -687,3 +738,17 @@ { \bool_if:NT \g_schulma_klausur_musterloesung_bool {#1} } + +\bool_if:NT \g_schulma_klausur_musterloesung_bool + { + \NewDocumentEnvironment {Lsg} {s} + % Stern: Lösung beginnt mit einer Gleichung, kein Abstand erforderlich + { + \IfBooleanF {#1} { \par \medskip } + \bool_gset_true:N \l_schulma_klausur_loesung_bool + \FarbeLoesung + } + { + \bool_gset_false:N \l_schulma_klausur_loesung_bool + } + } diff --git a/macros/latex/contrib/schulmathematik/schulma-komp.cls b/macros/latex/contrib/schulmathematik/schulma-komp.cls index 9d650b51ae..4a3f2408d2 100644 --- a/macros/latex/contrib/schulmathematik/schulma-komp.cls +++ b/macros/latex/contrib/schulmathematik/schulma-komp.cls @@ -1,13 +1,23 @@ % schulmathematik bundle: document class schulma-komp -% Version 1.5 -% 21. Juni 2023 +% Version 1.6 +% 30. Dezember 2023 \NeedsTeXFormat{LaTeX2e} -\ProvidesExplClass{schulma-komp}{2023-06-21}{1.5}{Dokumentenklasse fuer Kompetenzlisten} +\ProvidesExplClass{schulma-komp}{2023-12-30}{1.6}{Dokumentenklasse fuer Kompetenzlisten} + +\DeclareOption* + { + \PassOptionsToClass {\CurrentOption} {schulma-ab} + } \ProcessOptions \relax \LoadClass {schulma-ab} +\RequirePackage [useregional] {datetime2} + +\int_new:N \g_schulma_komp_klausurnummer_int +\str_new:N \g_schulma_komp_klausurdatum_str + \dim_const:Nn \c_schulma_komp_abstand_dim {0.5em} \dim_new:N \g_schulma_komp_einrueckunga_dim \dim_new:N \g_schulma_komp_einrueckungb_dim @@ -33,56 +43,138 @@ } } +\cs_new:Npn \schulma_komp_ueberschrift: + { + \bool_if:NTF \g_schulma_ab_musterloesung_bool + { + L\"osungen~der~\"Ubungsaufgaben + } + { + Kompetenzen + } + } + +\cs_new:Npn \schulma_komp_thema_festlegen: + { + \int_if_zero:nTF { \g_schulma_komp_klausurnummer_int } + { + \str_if_empty:NF \g_schulma_komp_klausurdatum_str + { + \tl_gset:Nn \g_schulma_ab_thema_tl + { + \schulma_komp_ueberschrift: + \c_space_tl + zur~Klausur~am~ + \DTMdate { \g_schulma_komp_klausurdatum_str } + } + } + } + { + \str_if_empty:NTF \g_schulma_komp_klausurdatum_str + { + \tl_gset:Nn \g_schulma_ab_thema_tl + { + \schulma_komp_ueberschrift: + \c_space_tl + zur~ + \int_to_arabic:n { \g_schulma_komp_klausurnummer_int } + .~Klausur + } + } + { + \tl_gset:Nn \g_schulma_ab_thema_tl + { + \schulma_komp_ueberschrift: + \c_space_tl + zur~ + \int_to_arabic:n { \g_schulma_komp_klausurnummer_int } + .~Klausur~am~ + \DTMdate { \g_schulma_komp_klausurdatum_str } + } + } + } + } + +\NewDocumentCommand \Nr {m} + { + \int_set:Nn \g_schulma_komp_klausurnummer_int {#1} + \schulma_komp_thema_festlegen: + } + +\NewDocumentCommand \Klausurdatum {m} + { + \str_set:Nn \g_schulma_komp_klausurdatum_str {#1} + \schulma_komp_thema_festlegen: + } + \NewDocumentCommand \Abschnitt {o m} { - \IfValueTF {#1} { \setcounter {section} {#1} } { \stepcounter {section} } - \arabic {section} - \skip_horizontal:N \c_schulma_komp_abstand_dim - #2 - \par - \smallskip + \bool_if:NF \g_schulma_ab_musterloesung_bool + { + \IfValueTF {#1} + { + \setcounter {section} {#1} + } + { + \stepcounter {section} + } + \arabic {section} + \skip_horizontal:N \c_schulma_komp_abstand_dim + #2 + \par + \smallskip + } } \NewDocumentCommand \Unterabschnitt {o m o} { - \IfValueTF {#1} { \setcounter{subsection} {#1} } { \stepcounter{subsection} } - \setcounter {subsubsection} {0} - \skip_horizontal:N \g_schulma_komp_einrueckunga_dim - \arabic {section} . - \arabic {subsection} - \skip_horizontal:N \c_schulma_komp_abstand_dim - #2 - \IfValueT {#3} + \bool_if:NF \g_schulma_ab_musterloesung_bool { - \group_begin: - \schulma_komp_listeneinstellung: - \emph {#3} - \group_end: + \IfValueTF {#1} + { + \setcounter{subsection} {#1} + } + { + \stepcounter{subsection} + } + \setcounter {subsubsection} {0} + \skip_horizontal:N \g_schulma_komp_einrueckunga_dim + \arabic {section} . \arabic {subsection} + \skip_horizontal:N \c_schulma_komp_abstand_dim + #2 + \IfValueT {#3} + { + \group_begin: + \schulma_komp_listeneinstellung: + \emph {#3} + \group_end: + } + \par + \smallskip } - \par - \smallskip } \NewDocumentCommand \Unterunterabschnitt {o m m} { - \par - \IfValueTF {#1} - { - \setcounter {subsubsection} {#1} - } + \bool_if:NF \g_schulma_ab_musterloesung_bool { - \stepcounter {subsubsection} + \par + \IfValueTF {#1} + { + \setcounter {subsubsection} {#1} + } + { + \stepcounter {subsubsection} + } + \skip_horizontal:N \g_schulma_komp_einrueckungb_dim + \arabic {section} . \arabic {subsection} . \arabic {subsubsection} + \skip_horizontal:N \c_schulma_komp_abstand_dim + #2 + \group_begin: + \schulma_komp_listeneinstellung: + \emph {#3} + \group_end: + \par + \smallskip } - \skip_horizontal:N \g_schulma_komp_einrueckungb_dim - \arabic {section} . - \arabic {subsection} . - \arabic {subsubsection} - \skip_horizontal:N \c_schulma_komp_abstand_dim - #2 - \group_begin: - \schulma_komp_listeneinstellung: - \emph {#3} - \group_end: - \par - \smallskip } diff --git a/macros/latex/contrib/schulmathematik/schulma-mdlprf.cls b/macros/latex/contrib/schulmathematik/schulma-mdlprf.cls index 4f45f3a469..b33aa204fa 100644 --- a/macros/latex/contrib/schulmathematik/schulma-mdlprf.cls +++ b/macros/latex/contrib/schulmathematik/schulma-mdlprf.cls @@ -1,8 +1,8 @@ % schulmathematik bundle: document class schulma-mdlprf -% Version 1.5 -% 21. Juni 2023 +% Version 1.6 +% 30. Dezember 2023 \NeedsTeXFormat{LaTeX2e} -\ProvidesExplClass{schulma-mdlprf}{2023-06-21}{1.5}{Dokumentenklasse fuer muendliche Abiturpruefungen} +\ProvidesExplClass{schulma-mdlprf}{2023-12-30}{1.6}{Dokumentenklasse fuer muendliche Abiturpruefungen} \bool_new:N \g_schulma_mdlprf_oesterreich_bool \bool_new:N \g_schulma_mdlprf_pruefer_weiblich_bool @@ -196,7 +196,7 @@ { \msg_warning:nn {schulma-mdlprf} {Datum~fehlt} } - + \vspace {2ex} \begin {center} \sffamily\bfseries\Large @@ -210,7 +210,7 @@ ( P \, \g_schulma_mdlprf_pnummer_str ) } \end {center} - + \vspace {1ex} \begin {tabbing} Beginn~der~Vorbereitungszeit:~ \= @@ -248,10 +248,10 @@ \> Pr\"ufungsraum: \> \g_schulma_mdlprf_pruefungsraum_tl \end {tabbing} \hrule - + \subsubsection* {Aufgabe:} \g_schulma_mdlprf_aufgabe_tl - + \tl_if_empty:NF \g_schulma_mdlprf_hilfsmittel_tl { \par diff --git a/macros/latex/contrib/schulmathematik/schulma-physik.sty b/macros/latex/contrib/schulmathematik/schulma-physik.sty index 92b5a45d23..14eb5029a9 100644 --- a/macros/latex/contrib/schulmathematik/schulma-physik.sty +++ b/macros/latex/contrib/schulmathematik/schulma-physik.sty @@ -1,7 +1,7 @@ % schulmathematik bundle: package schulma-physik -% Version 1.5 -% 21. Juni 2023 -\ProvidesExplPackage{schulma-physik}{2023-06-21}{1.5}{Befehle für die Schulphysik} +% Version 1.6 +% 30. Dezember 2023 +\ProvidesExplPackage{schulma-physik}{2023-12-30}{1.6}{Befehle für die Schulphysik} \newif \ifschulma@physik@circuitikz % keine expl3-Syntax möglich, da von circuits.ee.IEC nicht unterstützt diff --git a/macros/latex/contrib/schulmathematik/schulma-praes.cls b/macros/latex/contrib/schulmathematik/schulma-praes.cls index f3c7f6b77b..50c0085da9 100644 --- a/macros/latex/contrib/schulmathematik/schulma-praes.cls +++ b/macros/latex/contrib/schulmathematik/schulma-praes.cls @@ -1,8 +1,8 @@ % schulmathematik bundle: document class schulma-praes -% Version 1.5 -% 21. Juni 2023 +% Version 1.6 +% 30. Dezember 2023 \NeedsTeXFormat{LaTeX2e} -\ProvidesExplClass{schulma-praes}{2023-06-21}{1.5}{Dokumentenklasse fuer Bildschirmpraesentationen} +\ProvidesExplClass{schulma-praes}{2023-12-30}{1.6}{Dokumentenklasse fuer Bildschirmpraesentationen} \bool_new:N \g_schulma_praes_seitenzahlen_bool \bool_new:N \g_schulma_praes_druck_bool diff --git a/macros/latex/contrib/schulmathematik/schulma.sty b/macros/latex/contrib/schulmathematik/schulma.sty index b33a24f861..5ba074a51a 100644 --- a/macros/latex/contrib/schulmathematik/schulma.sty +++ b/macros/latex/contrib/schulmathematik/schulma.sty @@ -1,7 +1,7 @@ % schulmathematik bundle: package schulma -% Version 1.5 -% 21. Juni 2023 -\ProvidesExplPackage{schulma}{2023-06-21}{1.5}{Befehle für die Schulmathematik} +% Version 1.6 +% 30. Dezember 2023 +\ProvidesExplPackage{schulma}{2023-12-30}{1.6}{Befehle für die Schulmathematik} \bool_new:N \g_schulma_icomma_bool \bool_gset_true:N \g_schulma_icomma_bool @@ -71,6 +71,13 @@ \end {tikzpicture} } +\NewDocumentCommand \Rechenkaestchen { O{5mm} m m } + { + \begin {tikzpicture} + \draw [ step = #1 , help~lines ] (0,0) grid (#2,#3) ; + \end {tikzpicture} + } + \NewDocumentCommand \LGS {m} { \ensuremath diff --git a/macros/latex/contrib/schulmathematik/schulmathematik.pdf b/macros/latex/contrib/schulmathematik/schulmathematik.pdf Binary files differindex 9c60983c63..34ad393230 100644 --- a/macros/latex/contrib/schulmathematik/schulmathematik.pdf +++ b/macros/latex/contrib/schulmathematik/schulmathematik.pdf diff --git a/macros/latex/contrib/schulmathematik/schulmathematik.tex b/macros/latex/contrib/schulmathematik/schulmathematik.tex index bb647163e7..7cb0dac602 100644 --- a/macros/latex/contrib/schulmathematik/schulmathematik.tex +++ b/macros/latex/contrib/schulmathematik/schulmathematik.tex @@ -1,8 +1,10 @@ % Manual of the schulmathematik bundle -% Version 1.5 -% 21. Juni 2023 +% Version 1.6 +% 30. Dezember 2023 \documentclass{scrartcl} \usepackage[babelshorthands]{polyglossia} +\usepackage{biblatex} +\usepackage{csquotes} \usepackage{longtable} \usepackage[ohne-icomma]{schulma} \usepackage{schulma-physik} @@ -21,7 +23,7 @@ \usepackage{cnltx-example} \usepackage{enumitem} \usepackage[colorlinks=true, - allcolors=black, + linkcolor=black, bookmarksnumbered=true, pdfencoding=auto, pdftitle={Das Paket SCHULMATHEMATIK}, @@ -32,6 +34,9 @@ \setmainlanguage{german} \pghyphenation{german}{Pa-ket-op-tion} +\addbibresource{dtk-bibliography.bib} +\renewcommand\labelnamepunct{\addcolon\space} + \setkeys{hv}{force=true} \makeatletter @@ -343,9 +348,10 @@ Stellt Mathematikbefehle zur Verfügung wie in Abschnitt \ref{schulma} beschrieb \newcommand\PaketbeschreibungSchulmaPhysik{\Paketbeschreibung{schulma-physik} Stellt Physikbefehle zur Verfügung wie in Abschnitt \ref{schulma-physik} beschrieben.} -\newcommand\LsgBeschreibungA{Innerhalb dieser Umgebung kann die Lösung einer - Aufgabe oder Teilaufgabe eingegeben werden. Sie erscheint nur in der - Musterlösung (d.\,h. bei Verwendung der Klassenoption \Option{Musterloesung}). +\NewDocumentCommand\LsgBeschreibungA{O{}}{Innerhalb dieser Umgebung kann die + Lösung einer Aufgabe oder Teilaufgabe eingegeben werden. Sie erscheint nur in + der Musterlösung (d.\,h. bei Verwendung der Klassenoption + \Option{Musterloesung}#1). \par Die Befehle \Befehl{begin\{Lsg\}} und \Befehl{end\{Lsg\}} müssen jeweils in einer eigenen Zeile stehen und dürfen nicht eingerückt werden. Dies ist eine @@ -370,7 +376,7 @@ Schulmathematik \medskip \large -Version 1.5 +Version 1.6 \medskip \normalsize @@ -508,6 +514,12 @@ Befehl zur Darstellung einer Funktionstermvariable eines grafikfähigen Taschenr \begin{sidebyside} \GTRY{1}[x^2-4] \end{sidebyside} +\Befehlsbeschreibung{Rechenkaestchen}[\oarg{Kästchengröße}\marg{Breite}\marg{Höhe}] +Gibt ein Raster mit Rechenkästchen aus. Die Standardgröße der Kästchen ist \qty{5}{\mm}. +\begin{example}[pre-output={\raggedright}] + \Rechenkaestchen{12cm}{4cm}\\[1ex] + \Rechenkaestchen[7mm]{11.9cm}{3.5cm} +\end{example} \Knotentypbeschreibung{Kreuz} Hierbei handelt es sich um einen TikZ-Knotentyp, der der Markierung von Punkten im Koordinatensystem dient. Voreingestellt ist eine Größe von \texttt{5pt} ($\approx\qty{1,8}{mm}$). Eine andere Größe kann mit Hilfe der TikZ-Option \texttt{minimum size} eingestellt werden. \begin{example} @@ -691,6 +703,14 @@ Da die Nuklidschreibweise eher selten benötigt wird, wird dieses Paket nicht au \isotope{222,Rn} \end{sidebyside} +\subsubsection*{Literatur} +In der \href{https://www.dante.de/dtk/bisher-erschienen/}{Vereinszeitschrift von Dante e.\,V.} erscheint eine Artikelreihe zum Einsatz von \LaTeX\ in der Schulphysik. Bisher sind erschienen: +\nocite{dtk23.1:wehr:schulphysik} +\nocite{dtk23.2:wehr:schulphysik} +\nocite{dtk23.3:wehr:schulphysik} +\nocite{dtk23.4:wehr:schulphysik} +\printbibliography[heading=none] + \section{Dokumentenklassen} \subsection{Arbeitsblätter mit der Klasse \Klasse{schulma-ab}} Die Dokumentenklasse für Arbeitsblätter basiert auf der KOMA-Script-Klasse \Klasse{scrartcl}. Diese wird mit der Option \Option{DIV=14} geladen, d.\,h. der linke und rechte Rand sind im Hochformat A\,4 je \qty{2,25}{cm} breit. @@ -749,6 +769,7 @@ Stellt das Querformat für die Seite ein. Die horizontalen Seitenränder sind in Stellt die Papiergröße A\,5 im Hochformat ein. In diesem Fall wird die KOMA-Option \Option{DIV=11} gewählt, was horizontalen Rändern von ca. \qty{2,0}{cm} entspricht. \Optionsbeschreibung{A5quer} Stellt die Papiergröße A\,5 im Querformat ein. In diesem Fall wird die KOMA-Option \Option{DIV=11} gewählt, was horizontalen Rändern von ca. \qty{2,9}{cm} entspricht. +\newpage \Optionsbeschreibung{Musterloesung} Gibt die Musterlösung der Aufgabe aus, die innerhalb der Umgebung \Umgebung{Lsg} (s.\,u.) eingegeben wurde. \end{Liste} @@ -975,7 +996,7 @@ Zur farblichen Hervorhebung innerhalb von Texten oder Zeichnungen eignen sich un Weitere vordefinierte Farben sind der Anleitung des Pakets \Paket{xcolor} zu entnehmen, das von der zugrundeliegenden Dokumentenklasse \Klasse{beamer} geladen wird. \subsection{Klausuren mit der Klasse \Klasse{schulma-klausur}} -Mit der Dokumentenklasse für Klausuren kann sowohl eine Klausur als auch ihre Musterlösung aus dem gleichen Dokument erzeugt werden. Sie basiert auf der Klasse \Klasse{scrartcl}. Wird die Musterlösung der Klausur erzeugt, wird hingegen auf die Klasse \Klasse{schulma-praes} zurückgegriffen. +Mit der Dokumentenklasse für Klausuren kann sowohl eine Klausur als auch ihre Musterlösung aus dem gleichen Dokument erzeugt werden. Sie basiert auf der Klasse \Klasse{scrartcl}. Wird die Musterlösung der Klausur mit der Klassenoption \Option{Musterloesung} erzeugt, wird hingegen auf die Klasse \Klasse{schulma-praes} zurückgegriffen. Mit dem Befehl \verb:\begin{document}: wird automatisch eine Listenumgebung für Aufgaben eröffnet und mit \verb:\end{document}: automatisch geschlossen. Dies bedeutet, dass der erste Befehl innerhalb des Dokumentenkörpers entweder \Befehl{Aufgabe} oder -- falls am Anfang der Klausur keine Aufgabe steht -- \Befehl{item} lauten muss. \subsubsection*{Klassenoptionen} @@ -998,6 +1019,8 @@ Erzeugt bei Verwendung unterschiedlicher Aufgaben für zwei Gruppen mit Hilfe de Erzeugt bei Verwendung unterschiedlicher Aufgaben für zwei Gruppen mit Hilfe des Befehls \Befehl{Gruppen} (s.\,u.) die Aufgaben für die Gruppe B. \Optionsbeschreibung{Musterloesung} Erzeugt eine Bildschirmpräsentation mit der Musterlösung der Klausur, die innerhalb der Umgebung \Umgebung{Lsg} (s.\,u.) eingegeben wurde. Zur Erzeugung einer Druckfassung der Musterlösung kann zusätzlich eine der von der Klasse \Klasse{schulma-praes} ererbten Optionen \Option{Druck} und \Option{Druck2} gesetzt werden. +\Optionsbeschreibung{MusterloesungD} +Gibt eine Druckfassung der Klausur mit den Musterlösungen aus, die innerhalb der Umgebung \Umgebung{Lsg} (s.\,u.) eingegeben wurden. Im Gegensatz zur vorgenannten Option wird mit dieser Option nicht zu einer Bildschirmpräsentation gewechselt. \end{Liste} \subsubsection*{Geladene Pakete} \begin{Liste} @@ -1043,7 +1066,7 @@ Legt die Bearbeitungszeit der Klausur oder des Klausurteils in Minuten fest. \Befehlsbeschreibung{Hilfsmittel}[\marg{Hilfsmittel}] Legt die in der Klausur oder im Klausurteil erlaubten Hilfsmittel (z.\,B. Taschenrechner, Formelsammlung) fest. \Befehlsbeschreibung{Loesungsdatum}[\marg{Datum}] -Legt das Datum der Besprechung der Musterlösung fest, das bei Verwendung der Klassenoption \Option{Musterloesung} auf der Titelseite der Bildschirmpräsentation erscheint. Das Eingabeformat ist \texttt{JJJJ-MM-TT}. +Legt das Datum der Musterlösung fest. Das Eingabeformat ist \texttt{JJJJ-MM-TT}. \Befehlsbeschreibung{Formeldokument}[\marg{Seitenzahlen}]\label{formeldokument}% Bindet die gewählten Seiten aus dem »Dokument mit mathematischen Formeln« des IQB mit Hilfe des Pakets \Paket{pdfpages} am Ende der Klausur ein. Das Dokument muss sich unter dem Namen \texttt{M\_Dokument\_mit\_mathematischen\_Formeln.pdf} im Suchbaum befinden.\footnote{Die PDF-Datei mit dem Formeldokument ist erhältlich unter \url{https://www.iqb.hu-berlin.de/abitur/abitur/dokumente/mathematik/}.} \end{Liste} @@ -1052,7 +1075,7 @@ Bindet die gewählten Seiten aus dem »Dokument mit mathematischen Formeln« des \Befehlsbeschreibung{Aufgabe}[\sarg\oarg{Thema}\oarg{Bearbeitungszeit}\darg{Punktzahl}] Mit diesem Befehl wird eine neue Aufgabe der Klausur eröffnet. Er sollte der erste Befehl nach \verb:\begin{document}: sein. Die Sternvariante setzt keinen Punkt nach der Aufgabennummer. -Das erste optionale Argument (in eckigen Klammern) gibt das Thema der Aufgabe an und erscheint nur auf dem Terminal und in der Musterlösung. Das zweite optionale Argument (in eckigen Klammern) gibt die avisierte Bearbeitungszeit an und erscheint nur auf dem Terminal. Das dritte optionale Argument (in runden Klammern) gibt die in der Aufgabe erreichbare Punktzahl an; diese erscheint nur auf dem Terminal und in der Klausur. +Das erste optionale Argument (in eckigen Klammern) gibt das Thema der Aufgabe an und erscheint nur auf dem Terminal und in der Bildschirmpräsentation mit der Musterlösung. Das zweite optionale Argument (in eckigen Klammern) gibt die avisierte Bearbeitungszeit an und erscheint nur auf dem Terminal. Das dritte optionale Argument (in runden Klammern) gibt die in der Aufgabe erreichbare Punktzahl an; diese erscheint nur auf dem Terminal, in der Klausur und in der mit der Klassenoption \Option{MusterloesungD} erzeugten Musterlösung. Am Ende der Klausur werden die Anzahl der Aufgaben, die Summe der Bearbeitungszeiten und die Summe der erreichbaren Punkte auf das Terminal geschrieben. @@ -1060,9 +1083,9 @@ Für den Satz von Unteraufgaben empfiehlt sich die Umgebung \Umgebung{Teilaufgab \Umgebungsbeschreibung{Teilaufgaben} Umgebung, mit der mit Kleinbuchstaben nummerierte Teilaufgaben innerhalb einer Aufgabe gesetzt werden können. Jede Teilaufgabe wird mit dem Befehl \verb:\item: eingeleitet. Der Abstand der Aufgaben wird durch die Länge \Laenge{Teilaufgabenabstand} festgelegt. Die Nummerierung erfolgt mit Hilfe des Zählers \Zaehler{Teilaufgabe}. \Umgebungsbeschreibung{Lsg}[\sarg] -\LsgBeschreibungA +\LsgBeschreibungA[ oder \Option{MusterloesungD}] -Die Lösung wird in einer anderen Farbe angezeigt als die Aufgabe. Die verwendeten Farben hängen vom gewählten \Klasse{beamer}-Thema ab, das mit dem Befehl \Befehl{usetheme} eingestellt werden kann (siehe \Klasse{beamer}-Anleitung). In der Voreinstellung wird der Aufgabentext blau und der Lösungstext schwarz ausgegeben. +Mit der Klassenoption \Option{Musterloesung} wird die Lösung in einer anderen Farbe angezeigt als die Aufgabe. Die verwendeten Farben hängen vom gewählten \Klasse{beamer}-Thema ab, das mit dem Befehl \Befehl{usetheme} eingestellt werden kann (siehe \Klasse{beamer}-Anleitung). In der Voreinstellung wird der Aufgabentext blau und der Lösungstext schwarz ausgegeben. \LsgBeschreibungB \Befehlsbeschreibung{FarbeAufgabe} @@ -1074,11 +1097,11 @@ Der \meta{Teil der Aufgabe}, der Argument dieses Befehls ist, erscheint nur in d \Befehlsbeschreibung{NurLoesung}[\marg{Teil der Aufgabe}] Der \meta{Teil der Aufgabe}, der Argument dieses Befehls ist, erscheint nur in der Musterlösung, aber nicht in der Klausur. Dies ist beispielsweise nützlich, wenn für die Musterlösung Abbildungen anders skaliert werden müssen. Im Gegensatz zur Umgebung \Umgebung{Lsg} beginnt dieser Befehl keinen neuen Absatz und schaltet auch nicht die Farbe um. \Befehlsbeschreibung{Gruppen}[\sarg\marg{Text für Gruppe A}\marg{Text für Gruppe B}] -Mit diesem Befehl können unterschiedliche Aufgabentexte für zwei Klausurgruppen A und B eingegeben werden. Welcher davon in der Klausur erscheint, hängt davon ab, ob die Klassenoption \Option{GruppeA} oder die Klassenoption \Option{GruppeB} verwendet wird. Wird keine dieser Optionen gesetzt, wird in der Klausur der Text für Gruppe A ausgegeben, in der Musterlösung der Text für beide Gruppen, getrennt durch einen Absatz. Mit der Sternversion des Befehls wird in der Musterlösung zwischen den Texten beider Gruppen kein neuer Absatz begonnen. +Mit diesem Befehl können unterschiedliche Aufgabentexte für zwei Klausurgruppen A und B eingegeben werden. Welcher davon in der Klausur erscheint, hängt davon ab, ob die Klassenoption \Option{GruppeA} oder die Klassenoption \Option{GruppeB} verwendet wird. Wird keine dieser Optionen gesetzt, wird der Text für Gruppe A ausgegeben, in der Bildschirmpräsentation mit der Musterlösung (Klassenoption \Option{Musterloesung}) jedoch der Text für beide Gruppen, getrennt durch einen Absatz. Mit der Sternversion des Befehls wird in der Bildschirmpräsentation zwischen den Texten beider Gruppen kein neuer Absatz begonnen. \Befehlsbeschreibung{Notenspiegel}[\marg{kommaseparierte Notenliste}] -Erstellt in der Musterlösung eine eigene Folie mit dem Notenspiegel mit Schulnoten von 1 bis 6. Die \meta{kommaseparierte Notenliste} kann gänzlich unsortiert sein, z.\,B. \texttt{3,2,5,2,2,1,4,6,4,3}. +Erstellt in der Musterlösung den Notenspiegel mit Schulnoten von 1 bis 6; bei Verwendung der Klassenoption \Option{Musterloesung} wird hierfür eine eigene Folie verwendet. Die \meta{kommaseparierte Notenliste} kann gänzlich unsortiert sein, z.\,B. \texttt{3,2,5,2,2,1,4,6,""4,3}. \Befehlsbeschreibung{Notenpunktspiegel}[\marg{kommaseparierte Notenliste}] -Erstellt in der Musterlösung eine eigene Folie mit dem Notenspiegel mit Oberstufenpunkten von 0 bis 15. Die \meta{kommaseparierte Notenliste} kann gänzlich unsortiert sein, z.\,B. \texttt{13,2,5,12,8,10,8,7,4,0}. +Erstellt in der Musterlösung den Notenspiegel mit Oberstufenpunkten von 0 bis 15; bei Verwendung der Klassenoption \Option{Musterloesung} wird hierfür eine eigene Folie verwendet. Die \meta{kommaseparierte Notenliste} kann gänzlich unsortiert sein, z.\,B. \texttt{13,2,5,12,""8,10,8,7,4,0}. \end{Liste} \subsubsection*{Zähler} @@ -1099,7 +1122,16 @@ Abstand zwischen Teilaufgaben innerhalb der Umgebung \Umgebung{Teilaufgaben}. Vo \subsection{Kompetenzlisten mit der Klasse \Klasse{schulma-komp}} Mit dieser Klasse können gegliederte Listen erstellt werden, die die Schüler über die erwarteten Kompetenzen in schriftlichen Klausuren und anderen Prüfungen informieren. Sie basiert auf der Klasse \Klasse{schulma-ab}. +Falls der Befehl \Befehl{Thema} aus der Klasse \Klasse{schulma-ab} nicht verwendet wird, wird eine automatische Überschrift erzeugt, die die Nummer und das Datum der Klausur enthält. + Für die Aufzählungsumgebung \Umgebung{enumerate} ist die Verwendung runder Klammern um die Aufzählungsnummern voreingestellt. +\subsubsection*{Befehle in der Präambel} +\begin{Liste} +\Befehlsbeschreibung{Nr}[\marg{Nummer}] +Gibt die laufende Nummer der Klausur an, die in der automatisch erzeugten Überschrift erscheint. +\Befehlsbeschreibung{Klausurdatum}[\marg{Datum}] +Legt das Datum der Klausur fest, das in der automatisch erzeugten Überschrift erscheint. Das Eingabeformat ist \texttt{JJJJ-MM-TT}. +\end{Liste} \subsubsection*{Befehle im Dokumentenkörper} \begin{Liste} \Befehlsbeschreibung{Abschnitt}[\oarg{Nummer}\marg{Thema}] @@ -1113,6 +1145,7 @@ Gibt die Gliederungsnummer und den Titel eines Unterunterabschnitts des Unterric Zur Angabe der Kompetenzen bieten sich die Listenumgebungen \Umgebung{itemize} und \Umgebung{enumerate} an. \end{Liste} +Die mit den vorgenannten drei Befehlen erzeugten Kompetenzlisten werden bei Verwendung der von der Dokumentenklasse \Klasse{schulma-ab} ererbten Klassenoption \Option{Musterloesung} ausgeblendet. Dies ist nützlich, falls der Kompetenzliste Übungsaufgaben beigegeben werden. \subsection{Abiturgutachten mit der Klasse \Klasse{schulma-gutachten}} Die Klasse \Klasse{schulma-gutachten} dient zur Erstellung von Gutachten über schriftliche Abiturklausuren in Fächern, in denen die Note auf der Grundlage der erreichten Punktzahl vergeben wird. Außerdem können Gutachten über eine \emph{besondere Lernleistung} gemäß niedersächsischem Schulrecht (AVO-GOBAK §\,2\,(2)) erstellt werden. Grundlage ist die Dokumentenklasse \Klasse{scrartcl}, die mit den Optionen \Option{DIV=13} und \Option{fontsize=12} geladen wird. \subsubsection*{Klassenoptionen} @@ -1268,12 +1301,19 @@ Für die Musterlösung wird bei Verwendung der Umgebung \Umgebung{Teilaufgaben} Das Verhalten des Befehls \Befehl{Gruppen} wurde für den Fall geändert, dass keine der Klassenoptionen \Option{GruppeA} und \Option{GruppeB} gewählt wurde: In der Musterlösung werden die Texte für beide Gruppen ausgegeben; in der Klausur wird weiterhin der Text für Gruppe A abgedruckt, aber eine Warnung ausgegeben. Damit verbunden ist die Einführung einer Sternversion des Befehls \Befehl{Gruppen}. \end{itemize} -\item[1.5] \today +\item[1.5] 21. Juni 2023 \begin{itemize} \item \textbf{\Paket{schulma}:} Verwendung des Schriftbefehls \verb:\small: für alle Beschriftungen innerhalb der Umgebung \texttt{axis} und des Befehls \verb:\,: als Tausendertrennzeichen für die Skalenbeschriftung innerhalb der gleichen Umgebung \item \textbf{\Paket{schulma-physik}:} neuer Befehl \Befehl{Multimeter} \item \textbf{\Klasse{schulma-gutachten}:} Ermöglichung mehrzeiliger Schulnamen; Anpassung der Schriftart des erreichten Prozentsatzes an die umgebende Schrift \end{itemize} +\item[1.6] \today +\begin{itemize} +\item \textbf{\Paket{schulma}:} neuer Befehl \Befehl{Rechenkaestchen} +\item \textbf{\Klasse{schulma-ab}:} Vermeidung doppelter Seitenzahlen bei Verwendung der Klassenoption \Option{twoside} +\item \textbf{\Klasse{schulma-klausur}:} neue Klassenoption \Option{MusterloesungD}; Problembehebung im Zusammenhang mit dem Paket \Paket{xcolor}; Vermeidung doppelter Seitenzahlen bei Verwendung der Klassenoption \Option{twoside} +\item \textbf{\Klasse{schulma-komp}:} neue Befehle \Befehl{Nr} und \Befehl{Klausurdatum}, automatische Erzeugung einer Überschrift; Ausblendung der Kompetenzen bei Verwendung der Klassenoption \Option{Musterloesung} +\end{itemize} \end{description} \end{document} |