summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-01-27 03:00:57 +0000
committerNorbert Preining <norbert@preining.info>2024-01-27 03:00:57 +0000
commitb93d257f657e619e22b8b7a27446118ce041727e (patch)
tree9743069419ee702e9088dbda6411d3dd5e1d0033 /macros/latex
parent2eae12e56ca15396e8ff63b3a9b0d450d675dc5e (diff)
CTAN sync 202401270300
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/babel-contrib/norsk/README.md15
-rw-r--r--macros/latex/contrib/babel-contrib/norsk/norsk.dtx127
-rw-r--r--macros/latex/contrib/babel-contrib/norsk/norsk.ins40
-rw-r--r--macros/latex/contrib/babel-contrib/norsk/norsk.pdfbin142246 -> 154485 bytes
-rw-r--r--macros/latex/contrib/babel-contrib/samin/README.md8
-rw-r--r--macros/latex/contrib/babel-contrib/samin/samin.dtx75
-rw-r--r--macros/latex/contrib/babel-contrib/samin/samin.ins41
-rw-r--r--macros/latex/contrib/babel-contrib/samin/samin.pdfbin124782 -> 137510 bytes
-rw-r--r--macros/latex/contrib/memoir/README73
-rw-r--r--macros/latex/contrib/memoir/doc-src/memman.tex571
-rw-r--r--macros/latex/contrib/memoir/memman.pdfbin2826556 -> 2824552 bytes
-rw-r--r--macros/latex/contrib/memoir/memoir.dtx3246
-rw-r--r--macros/latex/contrib/memoir/mempatch.dtx99
-rw-r--r--macros/latex/contrib/metalogox/README.txt2
-rw-r--r--macros/latex/contrib/metalogox/metalogox.dtx75
-rw-r--r--macros/latex/contrib/metalogox/metalogox.pdfbin400460 -> 404029 bytes
-rw-r--r--macros/latex/contrib/proof-at-the-end/README.md3
-rw-r--r--macros/latex/contrib/proof-at-the-end/proof-at-the-end.dtx42
-rw-r--r--macros/latex/contrib/proof-at-the-end/proof-at-the-end.ins4
-rw-r--r--macros/latex/contrib/proof-at-the-end/proof-at-the-end.pdfbin329486 -> 332640 bytes
-rw-r--r--macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.pdfbin133735 -> 133745 bytes
-rw-r--r--macros/latex/contrib/tagpdf/README.md4
-rw-r--r--macros/latex/contrib/tagpdf/ex-AF-file.pdf206
-rw-r--r--macros/latex/contrib/tagpdf/ex-alt-actualtext.pdfbin34295 -> 34295 bytes
-rw-r--r--macros/latex/contrib/tagpdf/ex-attribute.pdf14
-rw-r--r--macros/latex/contrib/tagpdf/ex-formula-problem.pdf14
-rw-r--r--macros/latex/contrib/tagpdf/ex-list.pdf14
-rw-r--r--macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf14
-rw-r--r--macros/latex/contrib/tagpdf/ex-softhyphen.pdf14
-rw-r--r--macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf14
-rw-r--r--macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf14
-rw-r--r--macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf184
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-backend.dtx8
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-checks.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-code.pdfbin1660867 -> 1662036 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-data.dtx18
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-roles.dtx40
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-space.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-struct.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-tree.dtx113
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-user.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.pdfbin1085218 -> 1095221 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.tex21
-rw-r--r--macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty2
48 files changed, 2819 insertions, 2336 deletions
diff --git a/macros/latex/contrib/babel-contrib/norsk/README.md b/macros/latex/contrib/babel-contrib/norsk/README.md
new file mode 100644
index 0000000000..230f986bc5
--- /dev/null
+++ b/macros/latex/contrib/babel-contrib/norsk/README.md
@@ -0,0 +1,15 @@
+Norwegian 2.0j
+--------------
+
+This is the babel style for Norwegian
+
+**This package is NOT being actively maintained, but bugs might
+got fixed if you report them. If you want to take over maintenance
+of this language style, please contact me at
+https://latex3.github.io/babel/contact.html .**
+
+Changes 2.0j
+------------
+
+Allow norwegian as the language name, preferred to norsk.
+
diff --git a/macros/latex/contrib/babel-contrib/norsk/norsk.dtx b/macros/latex/contrib/babel-contrib/norsk/norsk.dtx
index e8b8880190..ab541701b8 100644
--- a/macros/latex/contrib/babel-contrib/norsk/norsk.dtx
+++ b/macros/latex/contrib/babel-contrib/norsk/norsk.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright 1989-2005 Johannes L. Braams and any individual authors
+% Copyright 1989-2024 Johannes L. Braams and any individual authors
% listed elsewhere in this file. All rights reserved.
%
% This file is part of the Babel system.
@@ -16,35 +16,30 @@
%
% This work has the LPPL maintenance status "maintained".
%
-% The Current Maintainer of this work is Johannes Braams.
-%
-% The list of all files belonging to the Babel system is
-% given in the file `manifest.bbl. See also `legal.bbl' for additional
-% information.
-%
+% The Current Maintainer of this work is Javier Bezos.
+%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
% \fi
-%\CheckSum{305}
% \iffalse
% Tell the \LaTeX\ system who we are and write an entry on the
% transcript.
%<*dtx>
\ProvidesFile{norsk.dtx}
%</dtx>
-%<code>\ProvidesLanguage{norsk}
+%<code>\ProvidesLanguage{norwegian}
+%<nynorsk>\ProvidesLanguage{nynorsk}
+%<norsk>\ProvidesLanguage{norsk}
%\fi
%\ProvidesFile{norsk.dtx}
- [2012/08/06 v2.0i Norsk support from the babel system]
+ [2024/01/26 v2.0j Norwegian support from the babel system]
%\iffalse
%%File `norsk.dtx'
%% Babel package for LaTeX version 2e
-%% Copyright (C) 1989 - 2005
+%% Copyright (C) 1989 - 2024
%% by Johannes Braams, TeXniek
-%
-%% Please report errors to: J.L. Braams
-%% babel at braams.cistron.nl
+%% by Javier Bezos
%
% This file is part of the babel system, it provides the source
% code for the Norwegian language definition file. Contributions
@@ -83,6 +78,7 @@
% with \LaTeX}
% \changes{norsk-1.2h}{1996/10/10}{Moved the definition of
% \cs{atcatcode} right to the beginning.}
+% \changes{norsk-2.0j}{2024/01/23}{Dual load norwegian/norsk}
%
%
% \section{The Norwegian language}
@@ -162,9 +158,19 @@
% \changes{norsk-1.2d}{1994/06/26}{Now use \cs{@nopatterns} to produce
% the warning}
% \begin{macrocode}
-\ifx\l@norsk\@undefined
- \@nopatterns{Norsk}
- \adddialect\l@norsk0\fi
+\expandafter\ifx\csname l@\CurrentOption\endcsname\relax
+ \def\bbl@tempa#1{%
+ \ifx#1\@undefined\else
+ \expandafter\adddialect\csname l@\CurrentOption\endcsname#1%
+ \fi}% Last wins:
+ \bbl@tempa\l@nynorsk
+ \bbl@tempa\l@norsk
+ \bbl@tempa\l@norwegian
+\fi
+\expandafter\ifx\csname l@\CurrentOption\endcsname\relax
+ \@nopatterns{\CurrentOption}
+ \expandafter\adddialect\csname l@\CurrentOption\endcsname\z@
+\fi
% \end{macrocode}
%
% \begin{macro}{\norskhyphenmins}
@@ -186,10 +192,6 @@
% Now we have to decide which version of the captions should be
% made available. This can be done by checking the contents of
% |\CurrentOption|.
-% \begin{macrocode}
-\def\bbl@tempa{norsk}
-\ifx\CurrentOption\bbl@tempa
-% \end{macrocode}
%
% The next step consists of defining commands to switch to (and
% from) the Norwegian language.
@@ -209,7 +211,34 @@
% \changes{norsk-2.0g}{1996/04/01}{Replaced `Glossary' by its
% translation}
% \begin{macrocode}
- \def\captionsnorsk{%
+\def\bbl@tempa{nynorsk}
+\ifx\CurrentOption\bbl@tempa
+ \def\captionsnynorsk{%
+ \def\prefacename{Forord}%
+ \def\refname{Referansar}%
+ \def\abstractname{Samandrag}%
+ \def\bibname{Litteratur}% or Litteraturoversyn
+ % or Referansar
+ \def\chaptername{Kapittel}%
+ \def\appendixname{Tillegg}% or Appendiks
+ \def\contentsname{Innhald}%
+ \def\listfigurename{Figurar}% or Figurliste
+ \def\listtablename{Tabellar}% or Tabelliste
+ \def\indexname{Register}%
+ \def\figurename{Figur}%
+ \def\tablename{Tabell}%
+ \def\partname{Del}%
+ \def\enclname{Vedlegg}%
+ \def\ccname{Kopi til}%
+ \def\headtoname{Til}% in letter
+ \def\pagename{Side}%
+ \def\seename{Sj\aa{}}%
+ \def\alsoname{Sj\aa{} \`{o}g}%
+ \def\proofname{Bevis}%
+ \def\glossaryname{Ordliste}%
+ }
+\else
+ \@namedef{captions\CurrentOption}{%
\def\prefacename{Forord}%
\def\refname{Referanser}%
\def\abstractname{Sammendrag}%
@@ -233,14 +262,13 @@
\def\proofname{Bevis}%
\def\glossaryname{Ordliste}%
}
-\else
+\fi
% \end{macrocode}
% \end{macro}
%
% For the `nynorsk' version of these definitions we just add a
% ``dialect''.
% \begin{macrocode}
- \adddialect\l@nynorsk\l@norsk
% \end{macrocode}
%
% \begin{macro}{\captionsnynorsk}
@@ -257,33 +285,7 @@
% \changes{norsk-2.0g}{1996/04/01}{Replaced `Glossary' by its
% translation}
% \changes{norks-2.0h}{2001/01/12}{Changed \cs{ccname} and \cs{alsoname}}
-% \begin{macrocode}
- \def\captionsnynorsk{%
- \def\prefacename{Forord}%
- \def\refname{Referansar}%
- \def\abstractname{Samandrag}%
- \def\bibname{Litteratur}% or Litteraturoversyn
- % or Referansar
- \def\chaptername{Kapittel}%
- \def\appendixname{Tillegg}% or Appendiks
- \def\contentsname{Innhald}%
- \def\listfigurename{Figurar}% or Figurliste
- \def\listtablename{Tabellar}% or Tabelliste
- \def\indexname{Register}%
- \def\figurename{Figur}%
- \def\tablename{Tabell}%
- \def\partname{Del}%
- \def\enclname{Vedlegg}%
- \def\ccname{Kopi til}%
- \def\headtoname{Til}% in letter
- \def\pagename{Side}%
- \def\seename{Sj\aa{}}%
- \def\alsoname{Sj\aa{} \`{o}g}%
- \def\proofname{Bevis}%
- \def\glossaryname{Ordliste}%
- }
-\fi
-% \end{macrocode}
+%
% \end{macro}
%
% \begin{macro}{\datenorsk}
@@ -431,24 +433,13 @@
% \begin{macrocode}
\ldf@finish\CurrentOption
%</code>
+% Finally, We create a few proxy files.
+%
+% \begin{macrocode}
+%<*norsk|nynorsk>
+\input norwegian.ldf\relax
+%</norsk|nynorsk>
% \end{macrocode}
%
% \Finale
-%%
-%% \CharacterTable
-%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%% Digits \0\1\2\3\4\5\6\7\8\9
-%% Exclamation \! Double quote \" Hash (number) \#
-%% Dollar \$ Percent \% Ampersand \&
-%% Acute accent \' Left paren \( Right paren \)
-%% Asterisk \* Plus \+ Comma \,
-%% Minus \- Point \. Solidus \/
-%% Colon \: Semicolon \; Less than \<
-%% Equals \= Greater than \> Question mark \?
-%% Commercial at \@ Left bracket \[ Backslash \\
-%% Right bracket \] Circumflex \^ Underscore \_
-%% Grave accent \` Left brace \{ Vertical bar \|
-%% Right brace \} Tilde \~}
-%%
\endinput
diff --git a/macros/latex/contrib/babel-contrib/norsk/norsk.ins b/macros/latex/contrib/babel-contrib/norsk/norsk.ins
index 9ec2729e64..f21a7bef19 100644
--- a/macros/latex/contrib/babel-contrib/norsk/norsk.ins
+++ b/macros/latex/contrib/babel-contrib/norsk/norsk.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright 1989-2005 Johannes L. Braams and any individual authors
+%% Copyright 1989-2024 Johannes L. Braams and any individual authors
%% listed elsewhere in this file. All rights reserved.
%%
%% This file is part of the Babel system.
@@ -19,19 +19,15 @@
%%
%% This work has the LPPL maintenance status "maintained".
%%
-%% The Current Maintainer of this work is Johannes Braams.
-%%
-%% The list of all files belonging to the LaTeX base distribution is
-%% given in the file `manifest.bbl. See also `legal.bbl' for additional
-%% information.
-%%
+%% The Current Maintainer of this work is Javier Bezos.
+%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%
%% --------------- start of docstrip commands ------------------
%%
-\def\filedate{1999/04/11}
+\def\filedate{2024/01/26}
\def\batchfile{norsk.ins}
\input docstrip.tex
@@ -53,7 +49,7 @@
\declarepreamble\mainpreamble
This is a generated file.
-Copyright 1989-2005 Johannes L. Braams and any individual authors
+Copyright 1989-2024 Johannes L. Braams and any individual authors
listed elsewhere in this file. All rights reserved.
This file was generated from file(s) of the Babel system.
@@ -69,15 +65,7 @@ version 2003/12/01 or later.
This work has the LPPL maintenance status "maintained".
-The Current Maintainer of this work is Johannes Braams.
-
-This file may only be distributed together with a copy of the Babel
-system. You may however distribute the Babel system without
-such generated files.
-
-The list of all files belonging to the Babel distribution is
-given in the file `manifest.bbl'. See also `legal.bbl for additional
-information.
+The Current Maintainer of this work is Javier Bezos.
The list of derived (unpacked) files belonging to the distribution
and covered by LPPL is defined by the unpacking scripts (with
@@ -87,7 +75,7 @@ extension .ins) which are part of the distribution.
\declarepreamble\fdpreamble
This is a generated file.
-Copyright 1989-2005 Johannes L. Braams and any individual authors
+Copyright 1989-2024 Johannes L. Braams and any individual authors
listed elsewhere in this file. All rights reserved.
This file was generated from file(s) of the Babel system.
@@ -103,15 +91,7 @@ version 2003/12/01 or later.
This work has the LPPL maintenance status "maintained".
-The Current Maintainer of this work is Johannes Braams.
-
-This file may only be distributed together with a copy of the Babel
-system. You may however distribute the Babel system without
-such generated files.
-
-The list of all files belonging to the Babel distribution is
-given in the file `manifest.bbl'. See also `legal.bbl for additional
-information.
+The Current Maintainer of this work is Javier Bezos.
In particular, permission is granted to customize the declarations in
this file to serve the needs of your installation.
@@ -126,7 +106,9 @@ of this file under its original name.
\usedir{tex/generic/babel}
\usepreamble\mainpreamble
-\generate{\file{norsk.ldf}{\from{norsk.dtx}{code}}
+\generate{\file{norwegian.ldf}{\from{norsk.dtx}{code}}
+ \file{norsk.ldf}{\from{norsk.dtx}{norsk}}
+ \file{nynorsk.ldf}{\from{norsk.dtx}{nynorsk}}
}
\usepreamble\fdpreamble
diff --git a/macros/latex/contrib/babel-contrib/norsk/norsk.pdf b/macros/latex/contrib/babel-contrib/norsk/norsk.pdf
index 896d926f50..7416dfc5bd 100644
--- a/macros/latex/contrib/babel-contrib/norsk/norsk.pdf
+++ b/macros/latex/contrib/babel-contrib/norsk/norsk.pdf
Binary files differ
diff --git a/macros/latex/contrib/babel-contrib/samin/README.md b/macros/latex/contrib/babel-contrib/samin/README.md
new file mode 100644
index 0000000000..29600f62c2
--- /dev/null
+++ b/macros/latex/contrib/babel-contrib/samin/README.md
@@ -0,0 +1,8 @@
+Northern Sami
+-------------
+
+Changes 1.0d
+------------
+
+Allow northernsami as the language name, preferred to samin.
+
diff --git a/macros/latex/contrib/babel-contrib/samin/samin.dtx b/macros/latex/contrib/babel-contrib/samin/samin.dtx
index b3d951204c..bca9dffe90 100644
--- a/macros/latex/contrib/babel-contrib/samin/samin.dtx
+++ b/macros/latex/contrib/babel-contrib/samin/samin.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright 1989-2005 Johannes L. Braams and any individual authors
+% Copyright 1989-2024 Johannes L. Braams and any individual authors
% listed elsewhere in this file. All rights reserved.
%
% This file is part of the Babel system.
@@ -16,17 +16,12 @@
%
% This work has the LPPL maintenance status "maintained".
%
-% The Current Maintainer of this work is Johannes Braams.
-%
-% The list of all files belonging to the Babel system is
-% given in the file `manifest.bbl. See also `legal.bbl' for additional
-% information.
+% The Current Maintainer of this work is Javier Bezos
%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
% \fi
-% \CheckSum{120}
%
% \iffalse
% Tell the \LaTeX\ system who we are and write an entry on the
@@ -34,20 +29,19 @@
%<*dtx>
\ProvidesFile{samin.dtx}
%</dtx>
-%<code>\ProvidesLanguage{samin}
+%<code>\ProvidesLanguage{northernsami}
+%<samin>\ProvidesLanguage{samin}
%\fi
%\ProvidesFile{samin.dtx}
- [2004/02/20 v1.0c North Sami support from the babel system]
+ [2024/01/26 v1.0d Northern Sami support from the babel system]
%\iffalse
%% Babel package for LaTeX version 2e
-%% Copyright (C) 1989 -- 2004
+%% Copyright (C) 1989 -- 2024
%% by Johannes Braams, TeXniek
-%
-%% Please report errors to: J.L. Braams
-%% babel at braams.cistron.nl
+%% by Javier Bezos
%
% This file is part of the babel system, it provides the source code for
-% the North Sami language definition file.
+% the Northern Sami language definition file.
%<*filedriver>
\documentclass{ltxdoc}
\newcommand*{\TeXhax}{\TeX hax}
@@ -63,6 +57,8 @@
%\fi
% \GetFileInfo{samin.dtx}
%
+% \changes{samin-1.0d}{2024/01/23}{Dual load northernsami/samin}
+%
% \section{The North Sami language}
%
% The file \file{\filename}\footnote{The file described in this
@@ -113,9 +109,19 @@
% something here.
%
% \begin{macrocode}
-\ifx\undefined\l@samin
- \@nopatterns{Samin}
- \adddialect\l@samin0\fi
+\ifx\l@northernsami\@undefined
+ \ifx\l@samin\@undefined
+ \@nopatterns{Northern Sami}
+ \adddialect\l@northernsami\z@
+ \let\l@samin\l@northernsami
+ \else
+ \let\l@northernsami\l@samin
+ \fi
+\else
+ \ifx\l@samin\@undefined
+ \let\l@samin\l@northernsami
+ \fi
+\fi
% \end{macrocode}
%
% The next step consists of defining commands to switch to (and
@@ -126,7 +132,7 @@
% parameters |\lefthyphenmin| and |\righthyphenmin|.
% \changes{samin-1.0b}{2000/09/26}{use \cs{providehyphenmins}}
% \begin{macrocode}
-\providehyphenmins{samin}{\tw@\tw@}
+\providehyphenmins{\CurrentOption}{\tw@\tw@}
% \end{macrocode}
% \end{macro}
%
@@ -137,7 +143,7 @@
% \changes{samin-1.0c}{2000/10/04}{Provided the translation for
% glossary}
% \begin{macrocode}
-\def\captionssamin{%
+\@namedef{captions\CurrentOption}{%
\def\prefacename{Ovdas\'atni}%
\def\refname{\v Cujuhusat}%
\def\abstractname{\v Coahkk\'aigeassu}%
@@ -167,7 +173,7 @@
% The macro |\datesamin| redefines the command |\today| to
% produce North Sami dates.
% \begin{macrocode}
-\def\datesamin{%
+\@namedef{date\CurrentOption}{%
\def\today{\ifcase\month\or
o\dj{}\dj{}ajagem\'anu\or
guovvam\'anu\or
@@ -197,8 +203,8 @@
% language definition files.
%
% \begin{macrocode}
-\addto\extrassamin{}
-\addto\noextrassamin{}
+\expandafter\addto\csname extras\CurrentOption\endcsname{}
+\expandafter\addto\csname noextras\CurrentOption\endcsname{}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -208,25 +214,16 @@
% at |\begin{document}| and resetting the category code of
% \texttt{@} to its original value.
% \begin{macrocode}
-\ldf@finish{samin}
+\ldf@finish{\CurrentOption}
%</code>
+% Finally, We create a proxy file.
+%
+% \begin{macrocode}
+%<*samin>
+\input northernsami.ldf\relax
+%</samin>
% \end{macrocode}
%
% \Finale
%\endinput
-%% \CharacterTable
-%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%% Digits \0\1\2\3\4\5\6\7\8\9
-%% Exclamation \! Double quote \" Hash (number) \#
-%% Dollar \$ Percent \% Ampersand \&
-%% Acute accent \' Left paren \( Right paren \)
-%% Asterisk \* Plus \+ Comma \,
-%% Minus \- Point \. Solidus \/
-%% Colon \: Semicolon \; Less than \<
-%% Equals \= Greater than \> Question mark \?
-%% Commercial at \@ Left bracket \[ Backslash \\
-%% Right bracket \] Circumflex \^ Underscore \_
-%% Grave accent \` Left brace \{ Vertical bar \|
-%% Right brace \} Tilde \~}
-%%
+
diff --git a/macros/latex/contrib/babel-contrib/samin/samin.ins b/macros/latex/contrib/babel-contrib/samin/samin.ins
index e94cf6f90a..2c63183687 100644
--- a/macros/latex/contrib/babel-contrib/samin/samin.ins
+++ b/macros/latex/contrib/babel-contrib/samin/samin.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright 1989-2005 Johannes L. Braams and any individual authors
+%% Copyright 1989-2024 Johannes L. Braams and any individual authors
%% listed elsewhere in this file. All rights reserved.
%%
%% This file is part of the Babel system.
@@ -19,19 +19,11 @@
%%
%% This work has the LPPL maintenance status "maintained".
%%
-%% The Current Maintainer of this work is Johannes Braams.
-%%
-%% The list of all files belonging to the LaTeX base distribution is
-%% given in the file `manifest.bbl. See also `legal.bbl' for additional
-%% information.
-%%
-%% The list of derived (unpacked) files belonging to the distribution
-%% and covered by LPPL is defined by the unpacking scripts (with
-%% extension .ins) which are part of the distribution.
+%% The Current Maintainer of this work is Javier Bezos.
%%
%% --------------- start of docstrip commands ------------------
%%
-\def\filedate{2000/09/26}
+\def\filedate{2024/01/26}
\def\batchfile{samin.ins}
\input docstrip.tex
@@ -53,7 +45,7 @@
\declarepreamble\mainpreamble
This is a generated file.
-Copyright 1989-2005 Johannes L. Braams and any individual authors
+Copyright 1989-2024 Johannes L. Braams and any individual authors
listed elsewhere in this file. All rights reserved.
This file was generated from file(s) of the Babel system.
@@ -69,15 +61,7 @@ version 2003/12/01 or later.
This work has the LPPL maintenance status "maintained".
-The Current Maintainer of this work is Johannes Braams.
-
-This file may only be distributed together with a copy of the Babel
-system. You may however distribute the Babel system without
-such generated files.
-
-The list of all files belonging to the Babel distribution is
-given in the file `manifest.bbl'. See also `legal.bbl for additional
-information.
+The Current Maintainer of this work is Javier Bezos
The list of derived (unpacked) files belonging to the distribution
and covered by LPPL is defined by the unpacking scripts (with
@@ -87,7 +71,7 @@ extension .ins) which are part of the distribution.
\declarepreamble\fdpreamble
This is a generated file.
-Copyright 1989-2005 Johannes L. Braams and any individual authors
+Copyright 1989-2024 Johannes L. Braams and any individual authors
listed elsewhere in this file. All rights reserved.
This file was generated from file(s) of the Babel system.
@@ -103,15 +87,7 @@ version 2003/12/01 or later.
This work has the LPPL maintenance status "maintained".
-The Current Maintainer of this work is Johannes Braams.
-
-This file may only be distributed together with a copy of the Babel
-system. You may however distribute the Babel system without
-such generated files.
-
-The list of all files belonging to the Babel distribution is
-given in the file `manifest.bbl'. See also `legal.bbl for additional
-information.
+The Current Maintainer of this work is Javier Bezos
In particular, permission is granted to customize the declarations in
this file to serve the needs of your installation.
@@ -126,7 +102,8 @@ of this file under its original name.
\usedir{tex/generic/babel}
\usepreamble\mainpreamble
-\generate{\file{samin.ldf}{\from{samin.dtx}{code}}
+\generate{\file{northernsami.ldf}{\from{samin.dtx}{code}}
+ \file{samin.ldf}{\from{samin.dtx}{samin}}
}
\usepreamble\fdpreamble
diff --git a/macros/latex/contrib/babel-contrib/samin/samin.pdf b/macros/latex/contrib/babel-contrib/samin/samin.pdf
index b47a57923b..c80673a1db 100644
--- a/macros/latex/contrib/babel-contrib/samin/samin.pdf
+++ b/macros/latex/contrib/babel-contrib/samin/samin.pdf
Binary files differ
diff --git a/macros/latex/contrib/memoir/README b/macros/latex/contrib/memoir/README
index a42cbee542..80fa436d8c 100644
--- a/macros/latex/contrib/memoir/README
+++ b/macros/latex/contrib/memoir/README
@@ -22,6 +22,79 @@ un-updated LaTeX systems and we often make no attempt to be backwards
compatible. Instead we assume that users use updated memoir with an
updated LaTeX installation.
+Changes (2024/01/26)
+
+o memoir v3.8.2
+
+-- In v3.8 I forgot to add some internal testing code related to
+ \@startsection. The code experiment has now been added, but is not
+ enabled by default.
+
+-- Axel Sommerfeldt suggested a useful macro abstraction for
+ sidecaption and sidecontcaption that simplifies his adjustments
+ whenever the caption package is loaded.
+
+-- Fixed a small (but important) typo in my maintainers note (Peter started
+ memoir in 2001, not 2021)
+
+-- The Nov-2023 kernel update gave issued with our version of \verb.
+ Now fixed by un-embedding the verbatim package. Issue first
+ reported by Andrew Swann.
+
+-- Fixed a typo in \m@make@footnotetext where ##1 got interpreted as a
+ macro name, not contents. Reported by Richard Zach.
+
+-- Replaced the embedded copy of the shortvrb package by loading the
+ package instead.
+
+-- Replaced the embedded and modified copy of the verbatim package by
+ just loading the package.
+
+ Have chosen to *not* patch in the modification back in. Primarily
+ because they are (1) disabled by default, (2) unknown how many
+ users actually use them, (3) the implementation had errors.
+
+ \setverbatimfont and the system to make comment-like envs of course
+ stayed.
+
+ The features removed are
+
+ - marking tabs using several spaces
+ - wrapping webatim text at white space
+
+ Macros disabled
+
+ - \tabson (\tabsoff redef to do nothing)
+ - \wrappingon (\wrappingoff redef to do nothing)
+
+ No longer used
+
+ - \verbatimbreakchar
+ - \verbatimindent
+
+ Removing the embedded verbatim copy also fixes the issue with
+ \verb+a b+ behaving like \verb*+a b+.
+
+ Many of the other verbatim-like creations have had tabs support
+ removed
+
+-- In verbatim 1.5x the macro \verbatiminput* has been altered
+ slightly such that it also marks tabs as spaces (just like \verb*
+ now also does via a kernel update). If 1.5x has not been released
+ yet, we automatically apply that patch.
+
+-- Updated \readverbatim* with the same patch as \verbatiminput* so it
+ also marks tabs as spaces.
+
+
+
+o memhfixc v1.22
+
+-- The change Axel S. suggested in memoir removes the need for
+ memhfixc to redefine \endsidecaption and \endsidecaption, thus
+ those redefinitions have been removed.
+
+
Changes (2023/08/21)
o memoir v3.8.1
diff --git a/macros/latex/contrib/memoir/doc-src/memman.tex b/macros/latex/contrib/memoir/doc-src/memman.tex
index c233cfecd9..f186c23cfd 100644
--- a/macros/latex/contrib/memoir/doc-src/memman.tex
+++ b/macros/latex/contrib/memoir/doc-src/memman.tex
@@ -389,8 +389,8 @@ Manual last changed \svnyear/\svnmonth/\svnday
\svnidlong
{$Ignore: $}
-{$LastChangedDate: 2023-08-08 16:33:42 +0200 (Tue, 08 Aug 2023) $}
-{$LastChangedRevision: 772 $}
+{$LastChangedDate: 2024-01-26 14:56:06 +0100 (Fri, 26 Jan 2024) $}
+{$LastChangedRevision: 806 $}
{$LastChangedBy: daleif@math.au.dk $}
\chapter{Remarks from the maintainer}
@@ -398,7 +398,7 @@ Manual last changed \svnyear/\svnmonth/\svnday
When Peter Wilson released the first version of \theclass{} (back in
-2021), \LaTeX{} land was very different. Updating packages outside of
+2001), \LaTeX{} land was very different. Updating packages outside of
the yearly release (TeXLive) had to be done by hand. Manuals for
packages was \emph{not} even a requirement for CTAN. Thus it made
sense to embed the functionality from several packages and provide
@@ -462,30 +462,12 @@ Additionally, going forward I will additionally be starting to look at
removing certain functionality from \theclass. This will be things
that does not really belong in \theclass, users should really get this
functionality from somewhere else (some additional package). Unless it
-is clear that the macro has to go due to reimplemantation of a
-feature, the removal will be announced in advance (say 12--18 months),
-by adding a warning to the macro (especially if we would like the user
-to use a different macro). It will also be marked in the manual that
-the macro/environment will be removed in a future release.
-
-% Macros and environments currently under consideration (but not marked
-% yet) include: \begingroup
-% \renewcommand\descriptionlabel[1]{\hspace\labelsep\parbox[t]{\dimexpr\textwidth-5pt\relax}{#1}}
-% \begin{description}
-% \item[\cmd{\patchcommand}]
-% Users should use \cmd{\pretocmd} and \cmd{\apptocmd} from
-% \Lpack{etoolbox}. The \Lpack{xpatch} package even have extended
-% versions of them.
-% \item[ctabular]
-% This is a breakable version of \Pe{tabular} but with not way of
-% replicating the table header like for example \Lpack{longtable}
-% can. These days there are several packages to handles tables.
-% \item[\cmd{\newloglike}]
-% \item[\cmd{\provideloglike}]
-% Users should really use \cmd{\DeclareMathOperator} from
-% \Lpack{amsopn} (autoloaded by the ever present \Lpack{amsmath}).
-% \end{description}
-% \endgroup
+is clear that the macro has to go due to reimplemantation of a feature
+or that the feature probably is not used by that many people, the
+removal will be announced in advance (say 12--18 months), by adding a
+warning to the macro (especially if we would like the user to use a
+different macro). It will also be marked in the manual that the
+macro/environment will be removed in a future release.
\begin{flushright}
Summer 2023
@@ -494,11 +476,13 @@ the macro/environment will be removed in a future release.
\end{flushright}
+\begingroup
+\renewcommand\descriptionlabel[1]{\hspace\labelsep\parbox[t]{\dimexpr\textwidth-5pt\relax}{#1}}
+
+
\section*{Public interfaces removed/disabled in v3.8}
The four title macros was disabled due to the \cmd{\titleref} reimplementation.
-\begingroup
-\renewcommand\descriptionlabel[1]{\hspace\labelsep\parbox[t]{\dimexpr\textwidth-5pt\relax}{#1}}
\begin{description}
\item[\cmd{\currenttitle}] Would have given the title of the current
sectional devide. Too risky to rely on, use
@@ -513,6 +497,21 @@ The four title macros was disabled due to the \cmd{\titleref} reimplementation.
formats before 2015. The package loading and the class option have
been removed.
\end{description}
+
+\section*{Public interfaces removed/disabled in v3.8.2}
+The following macros were discontinued due to the un-embedding of the \Lpack{verbatim package}
+\begin{description}
+\item[\cmd{\tabson}, \cmd{\tabsoff}] Used to be able to enable/disable
+ tab marking support in verbatim texts.
+\item[\cmd{\wrappingon}, \cmd{\wrappingoff}] Used to be able to enable
+ automatic line breaking at white space in verbatim
+ texts.\footnote{The implementation had bugs which were never
+ reported, thus probably not used that much.}
+\item[\cmd{\verbatimbreakchar}] Left on a verbatim line broken at
+ white space.
+\end{description}
+
+
\endgroup
@@ -521,6 +520,10 @@ The four title macros was disabled due to the \cmd{\titleref} reimplementation.
+
+
+
+
%#% extend
%#% extstart include preface.tex
%\chapter{Foreword}
@@ -1451,8 +1454,8 @@ been answered.
\svnidlong
{$Ignore: $}
-{$LastChangedDate: 2023-08-06 15:24:34 +0200 (Sun, 06 Aug 2023) $}
-{$LastChangedRevision: 767 $}
+{$LastChangedDate: 2024-01-10 16:45:12 +0100 (Wed, 10 Jan 2024) $}
+{$LastChangedRevision: 802 $}
{$LastChangedBy: daleif@math.au.dk $}
\chapter{Introduction to the eighth edition}
@@ -1831,7 +1834,7 @@ the same as those in the packages:
\item \Lpack{parskip}
\item \Lpack{patchcmd}
\item \Lpack{setspace}
- \item \Lpack{shortvrb}
+ %\item \Lpack{shortvrb}
\item \Lpack{showidx}
% \item \Lpack{tabularx}
\item \Lpack{titleref}
@@ -1905,6 +1908,7 @@ The following packages are automatically loaded by the class:
\item \Lpack{nameref}
\item \Lpack{mparhack}~(if~twocolumn)
\item \Lpack{memhfixc}~(if~\Lpack{hyperref}~is~loaded)
+ \item \Lpack{shortvrb}
\end{lineitems}
\end{center}
@@ -24121,8 +24125,8 @@ and the result is shown on the next page.
\svnidlong
{$Ignore: $}
-{$LastChangedDate: 2021-03-22 14:24:31 +0100 (Mon, 22 Mar 2021) $}
-{$LastChangedRevision: 706 $}
+{$LastChangedDate: 2024-01-25 16:57:21 +0100 (Thu, 25 Jan 2024) $}
+{$LastChangedRevision: 805 $}
{$LastChangedBy: daleif@math.au.dk $}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -24259,7 +24263,7 @@ contents than it does in the \Ie{shaded} environment.
\begin{recommended}
See the \Lpack{tcolorbox} package by Thomas~F.~Sturm. An impressive
- system of boxes and decorations and much much more. All based on TikZ.
+ system of boxes, decorations and much much more. All based on TikZ.
\end{recommended}
@@ -24677,6 +24681,13 @@ be expected:
More encompassing \Ie{comment} environments are available if you
use Victor Eijkhout's \Lpack{comment} package~\cite{COMMENT}.
+\fancybreak{}
+
+Do note that due to most syntax highlighting not being aware of your
+\Ie{comment}-like envs they are easy to miss in the code.
+
+
+
\section{Verbatims}
@@ -24696,11 +24707,15 @@ this book, it gets tedious to keep on typing this sort of thing:
the \cmd{\verb}, or \cmd{\verb*}, ends the verbatim processing.
\begin{syntax}
\cmd{\MakeShortVerb}\marg{backslash-char} \\
+\cmd{\MakeShortVerb*}\marg{backslash-char} \\
\cmd{\DeleteShortVerb}\marg{backslash-char} \\
\end{syntax}
\glossary(MakeShortVerb)%
{\cs{MakeShortVerb}\marg{backslash-char}}%
{Makes \meta{char} a shorthand for \cs{verb}\meta{char}.}
+\glossary(MakeShortVerb*)%
+ {\cs{MakeShortVerb*}\marg{backslash-char}}%
+ {Makes \meta{char} a shorthand for \cs{verb*}\meta{char}.}
\glossary(DeleteShortVerb)%
{\cs{DeleteShortVerb}\marg{backslash-char}}%
{Returns \meta{char} to its normal meaning instead of being a shorthand
@@ -24711,20 +24726,24 @@ as its argument, say \verb?\!?, and makes that character equivalent to
processing.
Doing, for example \verb?\MakeShortVerb{\!}?, lets you then use
\verb?!verbatim text!?
-instead of the longer winded \verb?\verb!verbatim text!?.
+instead of the longer winded \verb?\verb!verbatim text!?.
+The \cs{MakeShortVerb*} makes a version that uses \verb?\verb*? internally.
+
+You have to pick as the short verb character one that you are unlikely
+to use; a good choice is often the \verb?|? bar character as this
+rarely used in normal text. This choice, though may be unfortunate if
+you want to have any tabulars with vertical lines, as the bar
+character is used to specify those. The \cmd{\DeleteShortVerb} macro
+is provided for this contingency; give it the same argument as an
+earlier \cmd{\MakeShortVerb} and it will restore the short verb
+character to its normal state.
+
+The \cmd{\MakeShortVerb}, \cmd{\MakeShortVerb} and
+\cmd{\DeleteShortVerb} macros come from the \Lpack{shortvrb} package
+which is automatically loaded by the class.
- You have to pick
-as the short verb character one that you are unlikely to use; a good choice
-is often the \verb?|? bar character as this rarely used in normal text.
-This choice, though may be unfortunate if you want to have any tabulars with
-vertical lines, as the bar character is used to specify those. The
-\cmd{\DeleteShortVerb} macro is provided for this contingency; give it the
-same argument as an earlier \cmd{\MakeShortVerb} and it will restore
-the short verb character to its normal state.
+\fancybreak{}
- The \cmd{\MakeShortVerb} and \cmd{\DeleteShortVerb} macros come from the
-\Lpack{shortvrb} package which is part of the \ltx\ base system, but I
-have found them so convenient that I added them to the class.
\begin{syntax}
\cmd{\setverbatimfont}\marg{font-declaration} \\
@@ -24760,12 +24779,12 @@ like ``, or '', or ---, or <, or >, print as expected.
After this we will switch back to the default verbatim font via
\setverbatimfont{\normalfont\ttfamily}
\end{verbatim}
-\setverbatimfont{\normalfont\ttfamily}
-In the normal way of things with an OT1 fontencoding,
-typesetting the ligatures mentioned above
-in the sans font produces:
-{\fontencoding{OT1}\fontfamily{cmss}\selectfont ligatures like ``, or '', or ---, or <, or >},
-which is not what happens in the \cmd{\verbatim} environment.
+\setverbatimfont{\normalfont\ttfamily} In the normal way of things
+with an OT1 fontencoding,\footnote{No-one should use OT1 encoding
+ anymore.} typesetting the ligatures mentioned above in the sans
+font produces: {\fontencoding{OT1}\fontfamily{cmss}\selectfont
+ ligatures like ``, or '', or ---, or <, or >}, which is not what
+happens in the \cmd{\verbatim} environment.
\begin{syntax}
@@ -24780,79 +24799,102 @@ environment is heavily based on the \Lpack{verbatim} package~\cite{VERBATIM}
but does provide some extensions.}
you can write anything you want (except
\eenv{verbatim}), and it will be typeset exactly as written. The \Ie{verbatim*}
-environment is similar except, like with \cmd{\verb*}, spaces will be
+environment is similar except, like with \cmd{\verb*}, spaces and tabs will be
indicated with a \verb*? ? mark.
-\begin{syntax}
-\cmd{\tabson}\oarg{number} \\
-\cmd{\tabsoff} \\
-\end{syntax}
-\glossary(tabson)%
- {\cs{tabson}\oarg{number}}%
- {Set \meta{number} of spaces in a verbatim for a TAB character;
- default 4.}
-\glossary(tabsoff)%
- {\cs{tabsoff}}%
- {Ignore extra TAB spaces in a verbatim.}
-\index{verbatim!with tab spaces}
-The standard \Ie{verbatim} environment ignores any TAB characters; with
-the class's environment after calling the \cmd{\tabson} declaration
-the environment will handle TAB characters. By default 4 spaces are used
-to represent a TAB; the optional \meta{number} argument to the declaration
-will set the number of spaces for a TAB to be \meta{number}.
-Some folk like to use 8 spaces for a TAB, in which case they would need
-to declare \verb?\tabson[8]?. Unremarkably, the declaration \cmd{\tabsoff}
-switches off TABs. The class default is \cmd{\tabsoff}.
-
-\begin{syntax}
-\cmd{\wrappingon} \\
-\cmd{\wrappingoff} \\
-\lnc{\verbatimindent} \\
-\cmd{\verbatimbreakchar}\marg{char} \\
-\end{syntax}
-\glossary(wrappingon)%
- {\cs{wrappingon}}%
- {Wrap overlong verbatim lines.}
-\glossary(wrappingoff)%
- {\cs{wrappingoff}}%
- {The normal behaviour of not wrapping overlong verbatim lines.}
-\glossary(verbatimindent)%
- {\cs{verbatimindent}}%
- {Indent for wrapped overlong verbatim lines.}
-\glossary(verbatimbreakchar)%
- {\cs{verbatimbreakchar}\marg{char}}%
- {Character indicating a verbatim line is being wrapped.}
-As noted, whatever is written in a \Ie{verbatim} environment is output
-just as written, even if lines are too long\index{verbatim!wrap long lines}
-to fit on the page. The
-declaration \cmd{\wrappingon} lets the environment break lines so that they
-do not overflow. The declaration \cmd{\wrappingoff} restores the normal
-behaviour.
-
- The following is an example of how a wrapped verbatim line looks. In
-the source the contents of the \Ie{verbatim} was written as a single line.
-\wrappingon
-\begin{verbatim}
-This is an example of line wrapping in the verbatim environment. It is a single line in the source and the \wrappingon declaration has been used.
-\end{verbatim}
-\wrappingoff
- The wrapped portion of verbatim lines are indented from the left margin
-by the length \lnc{\verbatimindent}. The value can be changed by the usual
-length changing commands. The end of each line that has been wrapped is marked
-with the \meta{char} character of the \cmd{\verbatimbreakchar} macro.
-The class default is \verb?\verbatimbreakchar{\char`\%}?, so that lines are
-marked with \verb?%?.
-To put a `/' mark at the end of wrapped lines you can do
-\begin{lcode}
-\setverbatimbreak{\char'\/}
-\end{lcode}
-or similarly if you would like another character. Another possibility
-is
-\begin{lcode}
-\setverbatimchar{\char'\/\char'\*}
-\end{lcode}
-which will make `/*' the end marker.
+\begin{Changed}[January 2024]
+ The following macros are no longer used. They will either issue a
+ warning or do nothing. Users are encouraged to remove them.
+ \cmd{\tabson}\oarg{number}, \cmd{\tabsoff} (was the default),
+ \cmd{\wrappingon}, \cmd{\wrappingoff} (was the default).
+
+ These macro enabled tabs marking (by displaying tabs as sseveral
+ spaces) and automatic line wrapping (at white space) for
+ \Ie{verbatim} (it was never applied to \Ie{verbatim*}). As part of a
+ restructuring these features are no longer supported.
+\end{Changed}
+
+
+
+% \begin{syntax}
+% \cmd{\tabson}\oarg{number} \\
+% \cmd{\tabsoff} \\
+% \end{syntax}
+% \glossary(tabson)%
+% {\cs{tabson}\oarg{number}}%
+% {Set \meta{number} of spaces in a verbatim for a TAB character;
+% default 4.}
+% \glossary(tabsoff)%
+% {\cs{tabsoff}}%
+% {Ignore extra TAB spaces in a verbatim.}
+% \index{verbatim!with tab spaces}
+% The standard \Ie{verbatim} environment ignores any TAB characters; with
+% the class's environment after calling the \cmd{\tabson} declaration
+% the environment will handle TAB characters. By default 4 spaces are used
+% to represent a TAB; the optional \meta{number} argument to the declaration
+% will set the number of spaces for a TAB to be \meta{number}.
+% Some folk like to use 8 spaces for a TAB, in which case they would need
+% to declare \verb?\tabson[8]?. Unremarkably, the declaration \cmd{\tabsoff}
+% switches off TABs. The class default is \cmd{\tabsoff}.
+
+% \begin{syntax}
+% \cmd{\wrappingon} \\
+% \cmd{\wrappingoff} \\
+% \lnc{\verbatimindent} \\
+% \cmd{\verbatimbreakchar} \\
+% \end{syntax}
+% \glossary(wrappingon)%
+% {\cs{wrappingon}}%
+% {Wrap overlong verbatim lines.}
+% \glossary(wrappingoff)%
+% {\cs{wrappingoff}}%
+% {The normal behaviour of not wrapping overlong verbatim lines.}
+% \glossary(verbatimindent)%
+% {\cs{verbatimindent}}%
+% {Indent for wrapped overlong verbatim lines.}
+% \glossary(verbatimbreakchar)%
+% {\cs{verbatimbreakchar}}%
+% {Character indicating a verbatim line is being wrapped.}
+% As noted, whatever is written in a \Ie{verbatim} environment is output
+% just as written, even if lines are too long\index{verbatim!wrap long lines}
+% to fit on the page. The
+% declaration \cmd{\wrappingon} lets the environment break lines so that they
+% do not overflow. The declaration \cmd{\wrappingoff} restores the normal
+% behaviour.
+
+% The following is an example of how a wrapped verbatim line looks. In
+% the source the contents of the \Ie{verbatim} was written as a single line.
+% \wrappingon
+% \begin{verbatim}
+% This is an example of line wrapping in the verbatim environment. It is a single line in the source and the \wrappingon declaration has been used.
+% \end{verbatim}
+% \wrappingoff
+
+% The wrapped portion of verbatim lines are indented from the left margin
+% by the length \lnc{\verbatimindent}. The value can be changed by the usual
+% length changing commands. The end of each line that has been wrapped is marked
+% with the \meta{char} character of the \cmd{\verbatimbreakchar} macro.
+% The class default is \verb?\char`\%?, so that lines are
+% marked with \verb?%?.
+% To put a `/' mark at the end of wrapped lines you can do
+% \begin{lcode}
+% \renewcommand*\verbatimbreakchar{\char'\/}
+% \end{lcode}
+% If you need something more exotic, you need to wrap it in a box:
+% \begin{lcode}
+% \renewcommand*\verbatimbreakchar{\mbox{$\downarrow$}}
+% \end{lcode}
+% which will make `$\downarrow$' the end marker.\footnote{Internally the
+% \cs{discretionary} macro is used to typeset \cs{verbatimbreakchar},
+% so the break char should be what ever \cs{discretionary} can
+% handle.}
+
+% \begin{caveat}
+% \cmd{\wrappingon} combined with \Ie{verbatim*} does not work, the
+% wrapping part is ignored. Currently there are no plans to fix this.
+% \end{caveat}
+
\subsection{Boxed verbatims}
@@ -28290,8 +28332,8 @@ pdflatex memman
\svnidlong
{$Ignore: $}
-{$LastChangedDate: 2023-08-06 23:23:21 +0200 (Sun, 06 Aug 2023) $}
-{$LastChangedRevision: 768 $}
+{$LastChangedDate: 2024-01-25 16:57:21 +0100 (Thu, 25 Jan 2024) $}
+{$LastChangedRevision: 805 $}
{$LastChangedBy: daleif@math.au.dk $}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -29906,185 +29948,6 @@ in text mode you can combine spacing commands as:
which will result in an overall space of 5/18\,em
(from $(4 + 4 - 3)/18$).
-\begin{comment}
-\section{Cross references}\label{sec:xrefthis} \label{sec:xref}
-
- LaTeX supplies the \cmd{\ref} and \cmd{\pageref} commands for cross
-referencing to a label or a page which has a label on it.
-
-\begin{syntax}
-\cmd{\fref}\marg{label} \cmd{\figurerefname} \\
-\cmd{\tref}\marg{label} \cmd{\tablerefname} \\
-\cmd{\pref}\marg{label} \cmd{\pagerefname} \\
-\end{syntax}
-
- The class provides these more particular named references to a figure\index{figure!reference},
-table\index{table!reference} or page\index{page!reference}. For example the default definitions of \cmd{\fref} and
-\cmd{\pref} are
-\begin{lcode}
-\newcommand{\fref}[1]{\figurerefname~\ref{#1}}
-\newcommand{\pref}[1]{\pagerefname~\pageref{#1}}
-\end{lcode}
-and can be used as
-\begin{lcode}
-\ldots footnote parameters are shown in~\fref{fig:fn} on~\pref{fig:fn}.
-\end{lcode}
-which in this document prints as:
-\begin{syntax}
-\ldots footnote parameters are shown in~\fref{fig:fn} on~\pref{fig:fn}. \\
-\end{syntax}
-
-\begin{syntax}
-\cmd{\Pref}\marg{label} \cmd{\partrefname} \\
-\cmd{\Cref}\marg{label} \cmd{\chapterrefname} \\
-\cmd{\Sref}\marg{label} \cmd{\sectionrefname} \\
-\end{syntax}
-
- Also provided are named references to labelled
-Part (\cmd{\Pref}),
-Chapter (\cmd{\Cref}) and
-sectional (\cmd{\Sref}) divisions.
-These are all defined like
-\begin{lcode}
-\newcommand{\Sref}[1]{\sectionrefname\ref{#1}}
-\end{lcode}
-with no tie between the name and the \cmd{\ref}.
-
- In this document
-\begin{lcode}
-`In \Cref{chap:misc} there is a section
-(\Sref{sec:xrefthis}) about cross references.'
-\end{lcode}
-is typeset as:
-\begin{syntax}
-`In \Cref{chap:misc} there is a section
-(\Sref{sec:xrefthis}) about cross references.' \\
-\end{syntax}
-
- It can be useful to refer to parts of a document by name rather than
-number, as in
-\begin{lcode}
-The chapter \textit{\titleref{chap:bringhurst}} describes \ldots
-\end{lcode}
-The chapter \textit{\titleref{chap:bringhurst}} describes \ldots
-
- There are two packages, \Lpack{nameref}~\cite{NAMEREF} and
-\Lpack{titleref}~\cite{TITLEREF},
- that let you refer to things by name instead of number.
-
- Name references were added to the class as a consequence of adding
-a second optional argument to the sectioning commands. I found
-that this broke the \Lpack{nameref} package, and hence the
-\Lpack{hyperref} package as well, so they had to be fixed. The change
-also broke Donald Arseneau's \Lpack{titleref} package, and it turned out
-that \Lpack{nameref} also clobbered \Lpack{titleref}. The class also
-provides titles, like \cmd{\poemtitle}, that are not recognised by
-either of the packages. From my viewpoint the most efficient
-thing to do was to enable the class itself to provide name
-referencing.
-
-\begin{syntax}
-\cmd{\label}\marg{key} \cmd{\ref}\marg{key} \cmd{\pageref}\marg{key} \\
-\cmd{\titleref}\marg{key} \\
-\cmd{\headnamereftrue} \cmd{\headnamereffalse} \\
-\end{syntax}
-The macro \cmd{\titleref} is an addition to the usual set of cross referencing
-commands. Instead of typesetting a number it typesets the title associated
-with the labelled number. This is, of course, only useful if there is an
-associated title, such as from a \cmd{\caption} or \cmd{\section} command.
-As a bad example:
-\begin{lcode}
-Labelling for \verb?\titleref? may be applied to:
-\begin{enumerate}
-\item Chapters, sections, etc. \label{sec:xref:item1}
-...
-\item Items in numbered lists, etc. \ldots \label{sec:xref:item3}
-\end{enumerate}
-Item \ref{sec:xref:item2} in section~\ref{sec:xref} mentions captions
-while item \titleref{sec:xref:item3} in the same section
-\textit{\titleref{sec:xref}} lists other things.
-\end{lcode}
-Labelling for \verb?\titleref? may be applied to:
-\begin{enumerate}
-\item Chapters, sections, etc. \label{sec:xref:item1}
-\item Captions \label{sec:xref:item2}
-\item Legends
-\item Poem titles
-\item Items in numbered lists, etc. \label{sec:xref:item3}
-\end{enumerate}
-Item \ref{sec:xref:item2} in section~\ref{sec:xref} mentions captions
-while item \titleref{sec:xref:item3} in the same section
-\textit{\titleref{sec:xref}} lists other things.
-
-
- As the above example shows, you have to be a little careful in using
-\cmd{\titleref}.
-Generally speaking, \cmd{\titleref}\marg{key} produces the last named
-thing before the \cmd{\label} that defines the \meta{key}.
-
- Chapters, and the lower level sectional divisions, may have three
-different title texts --- the main title, the title in the ToC, and a third
-in the page header. By default (\cmd{\headnamereffalse}) the ToC title
-is produced by \cmd{\titleref}. Following the declaration
-\cmd{\headnamereftrue} the text intended for page headers will be produced.
-
-\Note{} Specifically with the \Lclass{memoir} class,
-do not put a \cmd{\label} command inside an
-argument to a \cmd{\chapter} or \cmd{\section} or \cmd{\caption}, etc.,
-command. Most likely it will either be ignored or referencing it will
-produce incorrect values. This restriction does not apply to the standard
-classes, but in any case I think it is good practice not to embed any
-\cmd{\label} commands.
-
-\begin{syntax}
-\cmd{\currenttitle} \\
-\end{syntax}
- If you just want to refer to the current title you can do so with
-\cmd{\currenttitle}. This acts as though there had been a label associated
-with the title and then \cmd{\titleref} had been used to refer to that label.
-For example:
-\begin{lcode}
-This sentence in the section titled `\currenttitle' is an example of the
-use of the command \verb?\currenttitle?.
-\end{lcode}
-This sentence in the section titled `\currenttitle' is an example of the
-use of the command \verb?\currenttitle?.
-
-
-\begin{syntax}
-\cmd{\theTitleReference}\marg{num}\marg{text} \\
-\end{syntax}
-Both \cmd{\titleref} and \cmd{\currenttitle} use the \cmd{\theTitleReference}
-to typeset the title. This is called with two arguments ---
-the number, \meta{num}, and the text, \meta{text}, of the title. The
-default definition is:
-\begin{lcode}
-\newcommand{\theTitleReference}[2]{#2}
-\end{lcode}
-so that only the \meta{text} argument is printed. You could, for example,
-change the definition to
-\begin{lcode}
-\renewcommand{\theTitleReference}[2]{#1\space \textit{#2}}
-\end{lcode}
-to print the number followed by the title in italics. If you do this, only use
-\cmd{\titleref} for numbered titles, as a printed number for an
-unnumbered title (a) makes no sense, and (b) will in any case be
-incorrect.
-
- The commands \cmd{\titleref}, \cmd{\theTitleReference} and
-\cmd{\currenttitle} are direct equivalents of those in the \Lpack{titleref}
-package~\cite{TITLEREF}.
-
-\begin{syntax}
-\cmd{\namerefon} \cmd{\namerefoff} \\
-\end{syntax}
- Implementing name referencing has had an unfortunate side effect of
-turning some arguments into moving ones; the argument to the \cmd{\legend}
-command is one example. If you don't need name referencing you can turn
-it off by the \cmd{\namerefoff} declaration; the \cmd{\namerefon}
-declaration enables name referencing.
-
-\end{comment}
\section{Adding a period}
@@ -32640,35 +32503,40 @@ than Archibald Smythe University will permit.
\svnidlong
{$Ignore: $}
-{$LastChangedDate: 2023-08-14 12:41:03 +0200 (Mon, 14 Aug 2023) $}
-{$LastChangedRevision: 777 $}
+{$LastChangedDate: 2024-01-26 14:56:06 +0100 (Fri, 26 Jan 2024) $}
+{$LastChangedRevision: 806 $}
{$LastChangedBy: daleif@math.au.dk $}
\chapter{Packages and macros}
The \Mname\ class does not provide for everything that you
-have seen in the manual. I have used some packages that you are very likely
+have seen in the manual. We have used some packages that you are very likely
to have in your \ltx\ distribution, and have supplemented these with some
-additional macros, some of which I will show you.
+additional macros, some of which we will show you.
\section{Packages}
- The packages that I have used that you are likely to have, and if
+ The packages that we have used that you are likely to have, and if
you do not have them please consider getting them,
-are:\fxnote[author=dlf,vadj=0em]{2023/08/10: rewrite}
+are:
\begin{itemize}
-\item \Lpack{etex} lets you take advantage of e\tx's extended support
- for counters and such.
-
- Note that from 2015 and onwards, the allocation of extra
- registers have now been build into the LaTeX kernel. Thus in
- most cases the \Lpack{etex} package is no longer
- necessary. There are how ever extra very special features left
- in \Lpack{etex} that \emph{some} users may need. In that case
- please remember to load \Lpack{etex} by placing
- \verb|\RequirePackage{etex}| \emph{before} \cs{documentclass}!
+% \item \Lpack{etex} lets you take advantage of e\tx's extended support
+% for counters and such.
+
+% Note that from 2015 and onwards, the allocation of extra
+% registers have now been build into the LaTeX kernel. Thus in
+% most cases the \Lpack{etex} package is no longer
+% necessary. There are how ever extra very special features left
+% in \Lpack{etex} that \emph{some} users may need. In that case
+% please remember to load \Lpack{etex} by placing
+% \verb|\RequirePackage{etex}| \emph{before} \cs{documentclass}!
\item \Lpack{url}~\cite{URL} is for typesetting URL's without worrying
about special characters or line breaking.
+
+ Nowadays \Lpack{xurl}~\cite{XURL} is probably better as it allows
+ more preak points.
+
+
% \item \Lpack{fixltx2e}~\cite{FIXLTX2E} eliminates some infelicities
% of the original LaTeX kernel. In particular it maintains the order
% of floats\index{float} on a twocolumn\index{column!double} page
@@ -40407,37 +40275,37 @@ Robert Bringhurst.
\newblock Hartley \& Marks, 2nd edition, 1999.
\newblock ISBN 0--88179--033--8.
-\bibitem[Car14a]{AFTERPAGE}
+\bibitem[Car14]{DELARRAY}
David Carlisle.
-\newblock {\em The afterpage package}, 2014.
+\newblock {\em The delarray package}, 2014.
\newblock \viaCTANurl{/macros/latex/required/tools/}.
-\bibitem[Car14b]{DCOLUMN}
+\bibitem[Car15]{ENUMERATE}
David Carlisle.
-\newblock {\em The dcolumn package}, 2014.
+\newblock {\em The enumerate package}, 2015.
\newblock \viaCTANurl{/macros/latex/required/tools/}.
-\bibitem[Car14c]{DELARRAY}
+\bibitem[Car21]{LONGTABLE}
David Carlisle.
-\newblock {\em The delarray package}, 2014.
+\newblock {\em The longtable package}, 2021.
\newblock \viaCTANurl{/macros/latex/required/tools/}.
-\bibitem[Car15]{ENUMERATE}
+\bibitem[Car23a]{AFTERPAGE}
David Carlisle.
-\newblock {\em The enumerate package}, 2015.
+\newblock {\em The afterpage package}, 2023.
\newblock \viaCTANurl{/macros/latex/required/tools/}.
-\bibitem[Car20]{TABULARX}
+\bibitem[Car23b]{DCOLUMN}
David Carlisle.
-\newblock {\em The tabularx package}, 2020.
+\newblock {\em The dcolumn package}, 2023.
\newblock \viaCTANurl{/macros/latex/required/tools/}.
-\bibitem[Car21]{LONGTABLE}
+\bibitem[Car23c]{TABULARX}
David Carlisle.
-\newblock {\em The longtable package}, 2021.
+\newblock {\em The tabularx package}, 2023.
\newblock \viaCTANurl{/macros/latex/required/tools/}.
-\bibitem[Car23]{textcase}
+\bibitem[Car23d]{textcase}
David Carlisle.
\newblock {\em The textcase package}, 2023.
\newblock The package is marked \emph{obsolete} as of the June 2022 \LaTeX\
@@ -40495,10 +40363,10 @@ Michael~J. Downes.
\bibitem[dP84]{PARVILLE84}
H.~de~Parville.
-\newblock {\em Recreations mathematique: {La Tour d'Hanoi} et la question du
- {Tonkin}}.
+\newblock {\em R{\'e}cr{\'e}ations math{\'e}matiques: {La Tour d'Hanoi} et la
+ question du {Tonkin}}.
\newblock La Nature, 1884.
-\newblock part {I}:285--286, Paris 1884\fixme{data not correct}.
+\newblock Part {I}: 285--286, Paris 1884.
\bibitem[Eij07]{TEXBYTOPIC}
Victor Eijkhout.
@@ -40551,6 +40419,13 @@ Michel Goossens, Frank Mittelbach, Sebastian Rahtz, Denis Roegel, and Herbert
\newblock Addison-Wesley, 2007.
\newblock ISBN 0--321--50892--0.
+\bibitem[GR99]{WCOMPANION}
+Michel Goossens and Sebastian {Rahtz (with Eitan Gurari, Ross Moore and Robert
+ Sutor)}.
+\newblock {\em The LaTeX Web Companion: Integrating TeX, HTML and XML}.
+\newblock Addison-Wesley, 1999.
+\newblock ISBN 0--201--43311--7.
+
\bibitem[Hoe98]{HOENIG98}
Alan Hoenig.
\newblock {\em TeX Unbound: LaTeX and TeX strategies for fonts, graphics, and
@@ -40652,12 +40527,12 @@ Ruari McLean.
\newblock Thames \& Hudson, 1980.
\newblock ISBN 0--500--68022--1.
-\bibitem[{Mic}99]{WCOMPANION}
-{Michel Goossens and Sebastian Rahtz (with Eitan Gurari, Ross Moore and Robert
- Sutor)}.
-\newblock {\em The LaTeX Web Companion: Integrating TeX, HTML and XML}.
-\newblock Addison-Wesley, 1999.
-\newblock ISBN 0--201--43311--7\fixme{author needs fixing}.
+\bibitem[MG04]{COMPANION}
+Frank Mittelbach and Michel {Goossens with Johannes Braams, David Carlisle and
+ Chris Rowley}.
+\newblock {\em The \LaTeX\ Companion}.
+\newblock Addison-Wesley, 2nd edition, 2004.
+\newblock ISBN 0--201--36299--6.
\bibitem[Mit23a]{MULTICOL}
Frank Mittelbach.
@@ -40684,13 +40559,6 @@ Michael~E. Mortenson.
\newblock {\em Geometric Modeling}.
\newblock John Wiley \& Sons, 1985.
-\bibitem[Mw04]{COMPANION}
-Frank Mittelbach and Michel~Goossens {with Johannes Braams, David Carlisle and
- Chris Rowley}.
-\newblock {\em The \LaTeX\ Companion}.
-\newblock Addison-Wesley, 2nd edition, 2004.
-\newblock ISBN 0--201--36299--6.\fixme{with authors}.
-
\bibitem[NG23]{SIDECAP}
Rolf Niespraschk and Hubert G{\"{a}\ss{}}lein.
\newblock {\em The sidecap package}, 2023.
@@ -40797,9 +40665,8 @@ Christina Thiele.
\newblock The treasure chest: Package tours from ctan.
\newblock {\em TUGboat}, 20(1):53--58, 1999.
-\bibitem[TJR17]{CALC}
-Kresten~Krab Thorup, Frank Jensen, and Chris {Rowley\fxnote{should be (and
- Chris Rowley)}}.
+\bibitem[TJ17]{CALC}
+Kresten~Krab Thorup and Frank {Jensen (and Chris Rowley)}.
\newblock {\em The calc package --- Infix notation arithmetic in LaTeX}, 2017.
\newblock \viaCTANurl{/macros/latex/required/tools/}.
diff --git a/macros/latex/contrib/memoir/memman.pdf b/macros/latex/contrib/memoir/memman.pdf
index ce132d5848..f6cda777e1 100644
--- a/macros/latex/contrib/memoir/memman.pdf
+++ b/macros/latex/contrib/memoir/memman.pdf
Binary files differ
diff --git a/macros/latex/contrib/memoir/memoir.dtx b/macros/latex/contrib/memoir/memoir.dtx
index 674082db74..61a8b9d90e 100644
--- a/macros/latex/contrib/memoir/memoir.dtx
+++ b/macros/latex/contrib/memoir/memoir.dtx
@@ -20,7 +20,7 @@
% This work consists of the files listed in the README file.
%
% \fi
-% \CheckSum{28664}
+% \CheckSum{28075}
%
% \changes{v0.1}{2001/05/20}{First public alpha release}
% \changes{v0.2}{2001/06/03}{First beta release}
@@ -203,6 +203,8 @@
% \def\fileversion{v3.7r} \def\filedate{2022/07/29}
% \def\fileversion{v3.7.19} \def\filedate{2022/11/17}
% \def\fileversion{v3.8} \def\filedate{2023/08/08}
+% \def\fileversion{v3.8.1} \def\filedate{2023/08/21}
+% \def\fileversion{v3.8.2} \def\filedate{2024/01/26}
% \title{The LaTeX \Lpack{memoir} class for configurable book
% typesetting: Source code\thanks{This
% file (\texttt{\dtxfile}) has version number \fileversion, last revised
@@ -435,8 +437,8 @@
% Announce the name, option files and version for LaTeX2e files:
% \begin{macrocode}
%<class>\ProvidesClass{memoir}%
-%<class> [2023/08/21 v3.8.1 configurable book, report, article document class]
-%<class>\newcommand\memversion{v3.8.1, 2023/08/21}
+%<class> [2024/01/26 v3.8.2 configurable book, report, article document class]
+%<class>\newcommand\memversion{v3.8.2, 2024/01/26}
% \end{macrocode}
%
% \changes{v3.7m}{2020/08/05}{Added \cs{IfFormatAtLeastTF}}
@@ -10854,59 +10856,131 @@
% \changes{v1.4}{2003/11/22}{Added extra optional arg to \cs{@startsection}
% (from patch v1.4)}
% \item make sure it is not effected by a non-zero \cs{parskip}
-% \changes{v3.6j}{2011/03/02}{added the above feature}
+% \changes{v3.6j}{2011/03/02}{added the above feature}
+% \item store the name of the type in \cs{m@msecn@me}
% \end{itemize}
-% The original is in \file{ltsect.dtx}. \\
+% The original is in \file{latex.ltx}. \\
% \cs{@startsection}\marg{name}\marg{level}\marg{indent} \\
% \hspace*{1.5in} \marg{beforeskip}\marg{afterskip}\marg{style}
+%
+% In order to make experiments with the tagging code, we only make the
+% redefinition, if \textsf{dev-mode} is not active. Otherwise we
+% patch. It is intentional that the patches are ``talkative''.
+% \changes{v3.8.2}{2023/08/24}{Forgot to add this patching branch in 3.8}
+% \begin{macrocode}
+\ifmem@devmode
+
+% \end{macrocode}
+% The first patch add the block hook, the raggedbottom secton code,
+% and the storing of the name of the section type.
% \begin{macrocode}
-\renewcommand{\@startsection}[6]{%
+ \patchcmd\@startsection{%
+ \if@noskipsec \leavevmode \fi%
+ }{%
+ \@nameuse{#1block}%
+ \ifraggedbottomsection\if@nobreak\else
+ \vskip\z@\@plus\bottomsectionskip
+ \penalty\bottomsectionpenalty
+ \vskip\z@\@plus -\bottomsectionskip
+ \fi\fi
+ \def\m@msecn@me{#1}%
+ \if@noskipsec \leavevmode \fi%
+ }%
+ {\typeout{\string\@startsection\space patch 1 success}}
+ {\typeout{\string\@startsection\space patch 1 failed}}
+
+% \end{macrocode}
+% The second patch adds a small adjustment that help counter the
+% effect of a non-zero \cs{parskip}
+% \begin{macrocode}
+ \patchcmd\@startsection{%
+ \addpenalty\@secpenalty\addvspace\@tempskipa%
+ }{%
+ \addpenalty\@secpenalty\addvspace\@tempskipa
+ \addvspace{-\parskip}% <--- added 2011/03/02
+ }%
+ {\typeout{\string\@startsection\space patch 2 success}}
+ {\typeout{\string\@startsection\space patch 2 failed}}
+
+% \end{macrocode}
+% The third patch completely replaces
+% \begin{verbatim}
+% \@ifstar
+% {\@ssect{#3}{#4}{#5}{#6}}%
+% {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}
+% \end{verbatim}
+% as we need to handle two optional args not just the normal
+% 1. Perhaps there are better ways.
+% \begin{macrocode}
+ \patchcmd\@startsection{%
+ \@ifstar%
+ {\@ssect{#3}{#4}{#5}{#6}}%
+ {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%
+ }{%
+ \@ifstar%
+ {\@ssect{#3}{#4}{#5}{#6}}%
+ {\@trplargoom{\M@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%
+ }%
+ {\typeout{\string\@startsection\space patch 3 success}}
+ {\typeout{\string\@startsection\space patch 3 failed}}
+
+\else % standard branch for dev-mode false
+% \end{macrocode}
+% Then the normal redefinition
+% \begin{macrocode}
+ \renewcommand{\@startsection}[6]{%
% \end{macrocode}
% \changes{v3.6h}{2011/02/07}{Added float block hook}
% \begin{macrocode}
- \@nameuse{#1block}%
+ \@nameuse{#1block}%
% \end{macrocode}
% Do raggedbottom stuff.
% \changes{v3.6k}{2012/07/22}{Made the \cs{raggedbottomsection}
% penalty configurable}
% \begin{macrocode}
- \ifraggedbottomsection\if@nobreak\else
- \vskip\z@\@plus\bottomsectionskip
- \penalty\bottomsectionpenalty
- \vskip\z@\@plus -\bottomsectionskip
- \fi\fi
+ \ifraggedbottomsection\if@nobreak\else
+ \vskip\z@\@plus\bottomsectionskip
+ \penalty\bottomsectionpenalty
+ \vskip\z@\@plus -\bottomsectionskip
+ \fi\fi
% \end{macrocode}
% Save the section name.
% \begin{macrocode}
- \def\m@msecn@me{#1}%
+ \def\m@msecn@me{#1}%
% \end{macrocode}
% The original code.
% \begin{macrocode}
- \if@noskipsec \leavevmode \fi
- \par
- \@tempskipa #4\relax
- \@afterindenttrue
- \ifdim \@tempskipa <\z@
- \@tempskipa -\@tempskipa \@afterindentfalse
- \fi
- \if@nobreak
- \everypar{}%
- \else
+ \if@noskipsec \leavevmode \fi
+ \par
+ \@tempskipa #4\relax
+ \@afterindenttrue
+ \ifdim \@tempskipa <\z@
+ \@tempskipa -\@tempskipa \@afterindentfalse
+ \fi
+ \if@nobreak
+ \everypar{}%
+ \else
% \end{macrocode}
% Slight change such that the effect of \cs{parskip} is cancelled
% \changes{v3.6j}{2011/03/02}{Adding a negative \cs{parskip} seem to
% be able to remove the effect of a non-zero \cs{parskip}}
% \begin{macrocode}
- \addpenalty\@secpenalty\addvspace\@tempskipa
- \addvspace{-\parskip}% <--- added 2011/03/02
- \fi
+ \addpenalty\@secpenalty\addvspace\@tempskipa
+ \addvspace{-\parskip}% <--- added 2011/03/02
+ \fi
% \end{macrocode}
% For the extra optional argument, change the original \verb?\@dblarg{\@sect{...?
% below to \verb?\@trplargoom{\M@sect{...?.
% \begin{macrocode}
- \@ifstar
- {\@ssect{#3}{#4}{#5}{#6}}%
- {\@trplargoom{\M@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
+ \@ifstar
+ {\@ssect{#3}{#4}{#5}{#6}}%
+ {\@trplargoom{\M@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
+
+% \end{macrocode}
+% end dev-mode-else branch for \cs{@startsection}:
+% \begin{macrocode}
+
+\fi % en dev-mode else branch
% \end{macrocode}
% \end{macro}
@@ -12682,7 +12756,31 @@
% \end{macrocode}
% \end{macro}
%
-%
+% \begin{macro}{\raggedwrap}
+%
+% \changes{v3.8.2}{2024/01/25}{Code moved here from the verbatim
+% section. The code where it was uses has been removed, but the
+% macro might still be interesting.}
+%
+% \cs{raggedwrap} is a variation on \cs{raggedright} (\cs{leftskip}
+% is set to \cs{@totalleftmargin} instead of 0pt), and seems to have
+% fixed the problem with the original code which used
+% \cs{raggedright}. \changes{v1.61803}{2008/01/30}{Added
+% \cs{raggedwrap} (mempatch v4.4)}
+% \changes{v1.61803398}{2009/07/18}{Added bidi support to
+% \cs{raggedwrap}}
+% \begin{macrocode}
+\newcommand*{\raggedwrap}{%
+ \@rightskip\@flushglue
+%%% \rightskip\@rightskip
+ \memRTLrightskip\@rightskip
+%%% \leftskip\@totalleftmargin
+ \memRTLleftskip\@totalleftmargin
+ \parindent\ragrparindent}
+
+% \end{macrocode}
+% \end{macro}
+%
% \subsubsection{Hanging}
%
% \begin{macro}{\hangfrom}
@@ -18102,20 +18200,36 @@
% \end{macro}
%
% \begin{macro}{\endsidecaption}
-% \cs{endsidecaption} does the work for \verb?\end{sidecaption}?.
+% \begin{macro}{\endsidecaption@refstepcounter}
+% \cs{endsidecaption} does the work for
+% \verb?\end{sidecaption}?.
+
+% First we define a helper macro that others can hook into. Here is
+% the default definition. The two arguments are either two copies of
+% \cs{@captype} or for the cont version, \cs{@captype} and
+% \texttt{memhycontfloat}. Then this macro is redefined whenever
+% \Lpack{hyperref} is loaded (via \Lpack{memhfixc}). The addition
+% eliminates the need for a full macro redef in \Lpack{memhfixc}.
+% \changes{v3.8.2}{2023/09/10}{Added macro at the suggestion of Axel Sommerfelt}
+% \begin{macrocode}
+\newcommand*\sidecaption@refstepcounter[2]{\refstepcounter{#1}}
+% \end{macrocode}
%
% Finish the float minipage, then increment the caption counter and
% call \cs{label} via \cs{m@mscaplabel}.
% \begin{macrocode}
\def\endsidecaption{%
\m@mscapend@fbox
- \refstepcounter\@captype
+% \end{macrocode}
+% % \changes{v3.8.2}{2023/09/10}{Added macro call at the suggestion of Axel Sommerfelt}
+% \begin{macrocode}
+ \sidecaption@refstepcounter\@captype\@captype
\m@mscaplabel
% \end{macrocode}
% \changes{v3.6k}{2012/08/19}{We need to move \cs{m@mscapcheckside}
% here or the \cs{sidecapstyle} inside the box, will never work correctly.}
% \begin{macrocode}
- \m@mscapcheckside %<--- added 2012/08/19
+ \m@mscapcheckside%
% \end{macrocode}
% Set the caption inside a minipage, saving it in box \cs{m@mscap@capbox}.
% \begin{macrocode}
@@ -18131,6 +18245,7 @@
\m@mscapopboxes}
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\m@mscapopboxes}
% Having determined how high the caption box must be raised with
@@ -18348,7 +18463,12 @@
% \begin{macrocode}
\def\endsidecontcaption{%
\m@mscapend@fbox
- \addtocounter{\@captype}{\m@ne}\refstepcounter\@captype
+ \addtocounter{\@captype}{\m@ne}
+% \end{macrocode}
+% \changes{3.8.2}{2023/09/10}{factor refstep counter as in \cs{endsidecaption}}
+% \begin{macrocode}
+ \sidecaption@refstepcounter\@captype{memhycontfloat}
+ %\refstepcounter\@captype
\m@mscaplabel
% \end{macrocode}
% \changes{v3.7b}{2013/05/30}{Forgot the side check}
@@ -24152,20 +24272,24 @@
% \begin{macrocode}
\newcommand{\m@make@footnotetext}[1]{%
\@namelongdef{@footnotetext#1}##1{%
- \insert\@nameuse{footins#1}{%
- \def\baselinestretch{\m@m@footnote@spacing}%
- \reset@font\@nameuse{foottextfont#1}%
- \@preamfntext
- \hsize\columnwidth
- \def\@currentcounter{footnote}%
- \protected@edef\@currentlabel{%
- \csname p@footnote#1\endcsname\@nameuse{@thefnmark#1}}%
- \color@begingroup
- \@nameuse{@makefntext#1}{%
- \rule\z@\footnotesep\ignorespaces\@nameuse{foottextfont#1 ##1}%
- \@finalstrut\strutbox}%
+ \insert\@nameuse{footins#1}{%
+ \def\baselinestretch{\m@m@footnote@spacing}%
+ \reset@font\@nameuse{foottextfont#1}%
+ \@preamfntext
+ \hsize\columnwidth
+ \def\@currentcounter{footnote}%
+ \protected@edef\@currentlabel{%
+ \csname p@footnote#1\endcsname\@nameuse{@thefnmark#1}}%
+ \color@begingroup
+ \@nameuse{@makefntext#1}{%
+% \end{macrocode}
+% \changes{v3.8.2}{2024/01/03}{Bug: \#\#1 needs to be outside of \cs{@nameuse}, reported in \url{https://tex.stackexchange.com/questions/706033/footnotes-defined-with-newfootnoteseries-dont-work/}}
+% \begin{macrocode}
+ \rule\z@\footnotesep\ignorespaces\@nameuse{foottextfont#1}##1%
+ \@finalstrut\strutbox}%
\color@endgroup}%
- \m@mmf@prepare}}
+ \m@mmf@prepare}%
+}
% \end{macrocode}
% \end{macro}
@@ -27563,522 +27687,80 @@
% \end{macrocode}
%
-% \section{Verbatims, boxes, and files}
%
-% All the code in this section was added for version 1.2 of the class.
-% \changes{v1.2}{2002/07/27}{Section `Verbatims, boxes and files' added}
+% \section{Verbatims, boxes, and files}
%
-% \subsection{Modified version of the verbatim package}
%
-% Much of this is from the \Lpack{verbatim} package code~\cite{VERBATIM}.
-% Unless indicated otherwise, the code and commentary is from that
+% Until January 2024 the class contained an embedded and modified
+% version of the \Lpack{verbatim} package where PW had added some
+% extra features to the verbatim system. As time have progressed the
+% LaTeX team has taken all the required tool packages under their wing
+% and continuously update them. Thus is it unfeasible to embed a
+% package like \Lpack{verbatim} anymore. The embeded copy have
+% therefore been replaced by simply loading the \Lpack{verbatim}
% package.
%
+% Eventhough we could patch in the changed PW made to \Lpack{verbatim}
+% we've decided against it. The two features he added was marking tabs
+% using a number of spaces (turned off by default) and enabling line
+% breaks at white space (turned off by default). It simply gets to
+% messy trying to patch in both features, given that the number of
+% users using it is probably very low.
%
-% \subsubsection{Preliminaries}
-%
-% \begin{macro}{\every@verbatim}
-% \begin{macro}{\afterevery@verbatim}
-% The hook (i.e., token register) \cs{every@verbatim}
-% is initialized to \meta{empty}.
-%
-% PW added the \cs{afterevery@verbatim} hook.
-% \begin{macrocode}
-\newtoks\every@verbatim
- \every@verbatim={}
-\newtoks\afterevery@verbatim
- \afterevery@verbatim={}
-
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\@makeother}
-% \cs{@makeother} takes as argument a character and changes
-% its category code to $12$ (other).
-% \begin{macrocode}
-\def\@makeother#1{\catcode`#112\relax}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@vobeyspaces}
-% The macro \cs{@vobeyspaces} causes spaces in the input
-% to be printed as spaces in the output.
-% \begin{macrocode}
-\begingroup
- \catcode`\ =\active%
- \def\x{\def\@vobeyspaces{\catcode`\ \active\let \@xobeysp}}
- \expandafter\endgroup\x
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@xobeysp}
-% The macro \cs{@xobeysp} produces exactly one space in
-% the output, protected against breaking just before it.
-% (\cs{@M} is an abbreviation for the number $10000$.)
-% \begin{macrocode}
-\def\@xobeysp{\leavevmode\penalty\@M\ }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\verbatim@line}
-% We use a newly defined token register called \cs{verbatim@line}
-% that will be used as the character buffer.
-% \begin{macrocode}
-\newtoks\verbatim@line
-% \end{macrocode}
-% \end{macro}
-%
-% PW. I have extended the original \Lpack{verbatim} package code to handle
-% TABs within verbatims. Normally TeX replaces a TAB by either a single space or
-% ignores it altogether. For this purpose I have bits of code from the \Lpack{moreverb}
-% package~\cite{MOREVERB} for handling TABs.
-%
-% \textit{Code and commentary from moreverb.}
-%
-% We define a few auxiliary macros and counters for expanding tabs.
-% \begin{macrocode}
-\newcount\tab@position
-% \end{macrocode}
-%
-% \begin{macro}{\@xobeytab}
-% \cs{@xobeytab} puts enough spaces in to get to the next nominal
-% tab stop
-% \begin{macrocode}
-\def\@xobeytab{%
- \loop
- \toks@\expandafter{\the\toks@\@xobeysp}%
- \advance\tab@position-1
- \ifnum\tab@position>0 \repeat
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@vobeytabs}
-% \cs{@vobeytabs} initialises use of \cs{@xobeytab}. Needs to be
-% executed within a group, as mustn't be allowed to leak out into the
-% wide world.
-%
-% \begin{macrocode}
-\begingroup
- \catcode`\^^I=\active
- \gdef\@vobeytabs{\catcode`\^^I\active\let^^I\@xobeytab}%
-\endgroup
-% \end{macrocode}
-% \end{macro}
+% Note that our modified copy of \Lpack{verbatim} had all references
+% to \cs{leftskip} and \cs{rightskip} replaced by \cs{memRTLleftskip}
+% and \cs{memRTLrightskip}. For now we have no intention of patching
+% these into the \Lpack{verbatim} code, but it should be straight
+% forward if needed.
%
-% \begin{macro}{\verbatim@tabexpand}
-% \cs{verbatim@tabexpand}\marg{body of line}\cs{@nil} processes every
-% character of a line by tail recursion, counting the characters and
-% juggling things when a tab is encountered.
+% \subsection{Additions to the verbatim package}
+%
+% \changes{v3.8.2}{2024/01/24}{Replaced embedded altered copy of
+% \Lpack{verbatim} with loading the package}
+% Load the package instead of embedding it.
% \begin{macrocode}
-\def\verbatim@tabexpand#1{%
- \ifx#1\@nil
- \the\toks@
- \expandafter\par
- \else
- \ifx#1\@xobeytab
- \@xobeytab
- \else
+\RequirePackage{verbatim}
% \end{macrocode}
%
-% We can safely put \cs{@xobeysp} into the token register, since it
-% does precisely what we need
+% A future update (\verb|github #1245|) to \Lpack{verbatim} will enable
+% \cs{verbatiminput*} to mark tabs as if it was spaces. If that
+% version has not been released yet, we add the patch
% \begin{macrocode}
- \toks@\expandafter{\the\toks@#1}%
- \advance\tab@position\m@ne
- \fi
- \ifnum\tab@position=0 \tab@position\tab@size \fi
- \expandafter\verbatim@tabexpand
- \fi
+\@ifpackagelater{verbatim}{2024/01/21}{}{
+ \def\verbatiminput{\begingroup
+ \@ifstar{\verbatim@input{\@setupverbvisiblespace\@vobeyspaces}}%
+ {\verbatim@input{\frenchspacing\@vobeyspaces}}}
}
% \end{macrocode}
-% \end{macro}
-%
-% \textit{End of code and commentary from moreverb.}
-%
-% PW. Some macros for turning tabbing on and off.
-%
-% \begin{macro}{\tabson}
-% \begin{macro}{\tabsoff}
-% \begin{macro}{\@maybeobeytabs}
-% \cs{tabson} turns tabbing on, and \cs{tabsoff} turns it off. Default
-% is no tabbing.
-% \begin{macrocode}
-\newif\ift@bs
-\newcommand{\tabson}[1][4]{%
- \ifnum\@ne > #1\relax
- \tabsoff
- \else
- \t@bstrue
- \def\tab@size{#1\relax}%
- \def\@maybeobeytabs{\@vobeytabs}%
- \fi
-}
-\newcommand{\tabsoff}{%
- \t@bsfalse
- \def\tab@size{\z@}%
- \def\@maybeobeytabs{}%
-}
-\tabsoff
-
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\tabverbatim@processline}
-% Process a line with TABs (extracted from \Lpack{moreverb}).
-% \begin{macrocode}
-\def\tabverbatim@processline{\tab@position\tab@size
- \toks@{}%
- \expandafter\verbatim@tabexpand\the\verbatim@line\@nil}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\notabverbatim@processline}
-% Processes a line ignoring TABs (this is the original \Lpack{verbatim}
-% package definition of \cs{verbatim@processline}).
-% \begin{macrocode}
-\def\notabverbatim@processline{\the\verbatim@line\par}
-
-% \end{macrocode}
-% \end{macro}
-%
-% \textit{We are now back to the \Lpack{verbatim} code.}
-%
-% The following four macros are defined globally in a way suitable for
-% the \texttt{verbatim} and \texttt{verbatim*} environments.
-% \begin{macro}{\verbatim@startline}
-% \begin{macro}{\verbatim@addtoline}
-% \begin{macro}{\verbatim@processline}
-% \cs{verbatim@startline} initializes processing of a line
-% by emptying the character buffer (\cs{verbatim@line}).
-% \begin{macrocode}
-\def\verbatim@startline{\verbatim@line{}}
-% \end{macrocode}
-% \cs{verbatim@addtoline} adds the tokens in its argument
-% to our buffer register \cs{verbatim@line} without expanding
-% them.
-% \begin{macrocode}
-\def\verbatim@addtoline#1{%
- \verbatim@line\expandafter{\the\verbatim@line#1}}
-% \end{macrocode}
-% Processing a line inside a \texttt{verbatim} or \texttt{verbatim*}
-% environment means printing it.
-% Ending the line means that we have to begin a new paragraph.
-% We use \cs{par} for this purpose. Note that \cs{par}
-% is redefined in \cs{@verbatim} to force \TeX{} into horizontal
-% mode and to insert an empty box so that empty lines in the input
-% do appear in the output.
-% (PW changed next line from \\
-% \verb?\def\verbatim@processline{\the\verbatim@line\par}?
-% \begin{macrocode}
-\def\verbatim@processline{\notabverbatim@processline}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\verbatim@finish}
-% As a default, \cs{verbatim@finish} processes the remaining
-% characters.
-% When this macro is called we are facing the following problem:
-% when the \verb?\end{verbatim}?
-% command is encountered \cs{verbatim@processline} is called
-% to process the characters preceding the command on the same
-% line. If there are none, an empty line would be output if we
-% did not check for this case.
-%
-% If the line is empty \verb?\the\verbatim@line? expands to
-% nothing. To test this we use a trick similar to that on p.\ 376
-% of the \TeX{}book, but with \verb?$?\ldots\verb?|$? instead of
-% the \verb?!? tokens. These \verb?$? tokens can never have the same
-% category code as a \verb?$? token that might possibly appear in the
-% token register \cs{verbatim@line}, as such a token will always have
-% been read with category code $12$ (other).
-% Note that \cs{ifcat} expands the following tokens so that
-% \verb?\the\verbatim@line? is replaced by the accumulated
-% characters
-% \begin{macrocode}
-\def\verbatim@finish{\ifcat$\the\verbatim@line$\else
- \verbatim@processline\fi}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsubsection{The \texttt{verbatim} and \texttt{verbatim*} environments}
-%
-% \begin{macro}{\verbatim@font}
-% We start by defining the macro \cs{verbatim@font} that is
-% to select the font and to set font-dependent parameters.
-% Then we go through \cs{verbatim@nolig@list} to avoid
-% certain ligatures.
-% \cs{verbatim@nolig@list} is a macro defined in the \LaTeXe{} kernel
-% to expand to
-% \begin{verbatim}
-% \do\`\do\<\do\>\do\,\do\'\do\-
-% \end{verbatim}
-% All the characters in this list can be part of a ligature in some
-% font or other.
-%
-% PW. This is the original version which I'm going to replace.
-% \begin{verbatim}
-% \def\verbatim@font{\normalfont\ttfamily
-% \hyphenchar\font\m@ne
-% \let\do\do@noligs
-% \verbatim@nolig@list}
-% \end{verbatim}
-% Actually the kernel defines the macro \verb+\@noligs+ which just
-% runs the last two lines of the \verb+\verbatim@font+ above. As other
-% package may add stuff to \verb+\@noligs+, we will use that instead.
-% \end{macro}
+% it of course requires an updated kernel.
%
% \begin{macro}{\setverbatimfont}
% \begin{macro}{\m@mverbfont}
-% \begin{macro}{\verbatim@font}
-% User level handle for changing the font used for verbatim text.
-% \changes{v1.61803398}{2009/09/10}{Changed the last two lines of
-% \cs{verbatim@font} into using \cs{@noligs} instead. This fixes
-% problem with upquote.}
+% We do provide an interface to set the font used in
+% verbatims. Internally in \Lpack{verbatim} this is done via \cs{verbatim@font}.
% \begin{macrocode}
\newcommand{\setverbatimfont}[1]{\def\m@mverbfont{#1}}
\setverbatimfont{\normalfont\ttfamily}
-
-\def\verbatim@font{\m@mverbfont
- \hyphenchar\font\m@ne
- \@noligs}
-
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\@verbatim}
-% The macro \cs{@verbatim} sets up things properly.
-% First of all, the tokens of the \cs{every@verbatim} hook
-% are inserted.
-% Then a \texttt{trivlist} environment is started and its first
-% \cs{item} command inserted.
-% Each line of the \texttt{verbatim} or \texttt{verbatim*}
-% environment will be treated as a separate paragraph.
-% \changes{v1.61803398}{2009/07/18}{Added bidi support to \cs{@verbatim}}
-% \begin{macrocode}
-\def\@verbatim{\the\every@verbatim
- \trivlist \item \relax
-% \end{macrocode}
-% The following extra vertical space is for compatibility with the
-% \LaTeX kernel: otherwise, using the \Lpack{verbatim} package changes
-% the vertical spacing of a \texttt{verbatim} environment nested within a
-% \texttt{quote} environment.
-% \begin{macrocode}
- \if@minipage\else\vskip\parskip\fi
-% \end{macrocode}
-% The paragraph parameters are set appropriately:
-% the penalty at the beginning of the environment,
-% left and right margins, paragraph indentation, the glue to
-% fill the last line, and the vertical space between paragraphs.
-% The latter space has to be zero since we do not want to add
-% extra space between lines.
-% \begin{macrocode}
- \@beginparpenalty \predisplaypenalty
-%%% \leftskip\@totalleftmargin\rightskip\z@
- \memRTLleftskip\@totalleftmargin\memRTLrightskip\z@
- \parindent\z@\parfillskip\@flushglue\parskip\z@
-% \end{macrocode}
-% There's one point to make here:
-% the \texttt{list} environment uses \TeX's \cs{parshape}
-% primitive to get a special indentation for the first line
-% of the list.
-% If the list begins with a \texttt{verbatim} environment
-% this \cs{parshape} is still in effect.
-% Therefore we have to reset this internal parameter explicitly.
-% We could do this by assigning $0$ to \cs{parshape}.
-% However, there is a simpler way to achieve this:
-% we simply tell \TeX{} to start a new paragraph.
-% As is explained on p.~103 of the \TeX{}book, this resets
-% \cs{parshape} to zero.
-% \begin{macrocode}
- \@@par
-% \end{macrocode}
-% We now ensure that \cs{par} has the correct definition,
-% namely to force \TeX{} into horizontal mode
-% and to include an empty box.
-% This is to ensure that empty lines do appear in the output.
-% Afterwards, we insert the \cs{interlinepenalty} since \TeX{}
-% does not add a penalty between paragraphs (here: lines)
-% by its own initiative. Otherwise a \texttt{verbatim} environment
-% could be broken across pages even if a \cs{samepage}
-% declaration were present.
-%
-% However, in a top-aligned minipage, this will result in an extra
-% empty line added at the top. Therefore, a slightly more
-% complicated construct is necessary.
-% One of the important things here is the inclusion of
-% \cs{leavevmode} as the first macro in the first line, for example,
-% a blank verbatim line is the first thing in a list item.
-% \begin{macrocode}
- \def\par{%
- \if@tempswa
- \leavevmode\null\@@par\penalty\interlinepenalty
- \else
- \@tempswatrue
- \ifhmode\@@par\penalty\interlinepenalty\fi
- \fi}%
-% \end{macrocode}
-% But to avoid an error message when the environment
-% doesn't contain any text, we redefine \cs{@noitemerr}
-% which will in this case be called by \cs{endtrivlist}.
-% \begin{macrocode}
- \def\@noitemerr{\@warning{No verbatim text}}%
-% \end{macrocode}
-% Now we call \cs{obeylines} to make the end of line character
-% active,
-% \begin{macrocode}
- \obeylines
-% \end{macrocode}
-% change the category code of all special characters,
-% to $12$ (other).
-% \begin{macrocode}
- \let\do\@makeother \dospecials
-% \end{macrocode}
-% and switch to the font to be used.
-% \begin{macrocode}
- \verbatim@font
-% \end{macrocode}
-% To avoid a breakpoint after the labels box, we remove the penalty
-% put there by the list macros: another use of \cs{unpenalty}!
-% \begin{macrocode}
- \everypar \expandafter{\the\everypar \unpenalty}%
-% \end{macrocode}
-% PW added next code at end of \cs{@verbatim}.
-% \begin{macrocode}
- \wrapright\the\afterevery@verbatim}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\verbatim}
-% \begin{macro}{\verbatim*}
-% Now we define the toplevel macros.
-% \cs{verbatim} is slightly changed:
-% after setting up things properly it calls
-% \cs{verbatim@start}.
-% This is done inside a group, so that \cs{verbatim} can be used
-% directly, without \cs{begin}.
-%
-% PW. The following is the original code, but I want a version of
-% \texttt{verbatim} that recognises TABs.
-% \begin{verbatim}
-% \begin{macrocode}
-% \def\verbatim{%
-% \begingroup\@verbatim \frenchspacing\@vobeyspaces
-% \verbatim@start}
-% \end{macrocode}
-% \cs{verbatim*} is defined accordingly.
-% \begin{macrocode}
-% \@namedef{verbatim*}{\begingroup\@verbatim\verbatim@start}
-% \def\endverbatim{\endtrivlist\endgroup}
-% \expandafter\let\csname endverbatim*\endcsname=\endverbatim
-% \end{macrocode}
-% \end{verbatim}
-%
-% PW. My code for these is a modified version of the original \Lpack{verbatim}
-% code.
-% \begin{macrocode}
-\def\verbatim{\begingroup
- \ift@bs
- \def\verbatim@processline{\tabverbatim@processline}%
- \fi
- \@verbatim \frenchspacing\@vobeyspaces\@maybeobeytabs\verbatim@start}
-\@namedef{verbatim*}{\begingroup
- \ift@bs
- \def\verbatim@processline{\tabverbatim@processline}%
- \fi
- \@verbatim\@maybeobeytabs\verbatim@start}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\endverbatim}
-% \begin{macro}{\endverbatim*}
-% To end the \texttt{verbatim} and \texttt{verbatim*}
-% environments it is only necessary to finish the
-% \texttt{trivlist} environment started in \cs{@verbatim} and
-% close the corresponding group, and handle\footnote{Noted by
-% Zarko Cucej (\url{zarko.cucej@uni-mb.si}).} following (non-) paragraph,
-% by using \cs{@doendpe}.
-% \changes{v1.4}{2003/11/22}{Added \cs{@doendpe} to \cs{endverbatim}
-% (from patch v1.8)}
-% \changes{v2.0a}{2004/03/01}{Refixed \cs{endverbatim}}
-% \begin{macrocode}
-\def\endverbatim{\endtrivlist\endgroup\@doendpe}
-\@namelet{endverbatim*}\endverbatim
+\patchcmd\verbatim@font{\normalfont\ttfamily}%
+ {\m@mverbfont}%
+ {}%
+ {\typeout{Paching \string\verbatim@font\space failed}}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
-% For abnormal \cs{parskip}s the NTG class included the following, but I'm
-% not sure if it is relevant here, but if it is just how it should be included.
-% \begin{verbatim}
-% From NTG, where it is a \cs{def}
-% \providecommand*{\verbatim}{%
-% \topsep=-0.5\parskip
-% \@verbatim
-% \frenchspacing\@vobeyspaces \@xverbatim}
-% \end{verbatim}
-%
-%
-% \subsubsection{The \texttt{comment} environment}
-%
-% The \cs{comment} macro is similar to \cs{verbatim*}.
-% However, we do not need to switch fonts or set special
-% formatting parameters such as \cs{parindent} or \cs{parskip}.
-% We need only set the category code of all special characters
-% to $12$ (other) and that of \verb?^^M? (the end of line character)
-% to $13$ (active).
-% The latter is needed for macro parameter delimiter matching in
-% the internal macros defined below.
-% In contrast to the default definitions used by the
-% \cs{verbatim} and \cs{verbatim*} macros,
-% we define \cs{verbatim@addtoline} to throw away its argument
-% and \cs{verbatim@processline}, \cs{verbatim@startline},
-% and \cs{verbatim@finish} to act as no-ops.
-% Then we call \cs{verbatim@}.
-% But the first thing we do is to call \cs{@bsphack} so that
-% this environment has no influence whatsoever upon the spacing.
-%
-% PW: This is the original code for the \texttt{comment} environment,
-% which I'm going to change.
-% \begin{verbatim}
-% \def\comment{\@bsphack
-% \let\do\@makeother\dospecials\catcode`\^^M\active
-% \let\verbatim@startline\relax
-% \let\verbatim@addtoline\@gobble
-% \let\verbatim@processline\relax
-% \let\verbatim@finish\relax
-% \verbatim@}
-% \end{verbatim}
-% \cs{endcomment} is very simple: it only calls
-% \cs{@esphack} to take care of the spacing.
-% The \cs{end} macro closes the group and therefore takes care
-% of restoring everything we changed.
-% \begin{verbatim}
-% \let\endcomment=\@esphack
-% \end{verbatim}
-%
-% PW: The remainder of this section is my code.
-%
-% \begin{macro}{\setupcomment}
-% \cs{setupcomment} does all the \cs{let}s in the original \cs{comment} code.
+% % \subsubsection{The \texttt{comment} environment}
+%
+% The \Lpack{verbatim} package provides the \Lenv{comment} environment
+% that ignores its contents. This is a very useful feature, and we
+% would like users to be able todefine their own \Lenv{comment} like
+% envs. The following code is PWs original code, only difference is
+% that we do not define \Lenv{comment} using the code. We leave the
+% \Lpack{verbatim} alone.
+% % \begin{macro}{\setupcomment}
+% \cs{setupcomment} does all the \cs{let}s in the original \cs{comment} code. For reference see the \cite{VERBATIM} sources.
% \begin{macrocode}
\newcommand{\setupcomment}{%
\let\do\@makeother\dospecials\catcode`\^^M\active
@@ -28122,725 +27804,1471 @@
% \end{macrocode}
% \end{macro}
%
-% We had better supply the \texttt{comment} environment, as promised.
-% \begin{macrocode}
-\newcomment{comment}
-
-% \end{macrocode}
-%
-% PW: That is the end of my changes and extensions to the original
-% \texttt{comment} environment code.
-%
-%
-% \subsubsection{The main loop}
-%
-% Here comes the tricky part:
-% During the definition of the macros we need to use the special
-% characters \verb?\?, \verb?{?, and \verb?}? not only with their
-% normal category codes,
-% but also with category code $12$ (other).
-% We achieve this by the following trick:
-% first we tell \TeX{} that \verb?\?, \verb?{?, and \verb?}?
-% are the lowercase versions of \verb?!?, \verb?[?, and \verb?]?.
-% Then we replace every occurrence of \verb?\?, \verb?{?, and \verb?}?
-% that should be read with category code $12$ by \verb?!?, \verb?[?,
-% and \verb?]?, respectively,
-% and give the whole list of tokens to \cs{lowercase},
-% knowing that category codes are not altered by this primitive!
-%
-% But first we have ensure that
-% \verb?!?, \verb?[?, and \verb?]? themselves have
-% the correct category code!
-% To allow special settings of these codes we hide their setting in
-% the macro \cs{vrb@catcodes}. If it is already defined our new
-% definition is skipped.
-% \begin{macrocode}
-\@ifundefined{vrb@catcodes}%
- {\def\vrb@catcodes{%
- \catcode`\!12\catcode`\[12\catcode`\]12}}{}
-% \end{macrocode}
-% This trick allows us to use this code for applications where other
-% category codes are in effect.
-%
-% We start a group to keep the category code changes local.
-% \begin{macrocode}
-\begingroup
- \vrb@catcodes
- \lccode`\!=`\\ \lccode`\[=`\{ \lccode`\]=`\}
-% \end{macrocode}
-% We also need the end-of-line character \verb?^^M?,
-% as an active character.
-% If we were to simply write \verb?\catcode`\^^M=\active?
-% then we would get an unwanted active end of line character
-% at the end of every line of the following macro definitions.
-% Therefore we use the same trick as above:
-% we write a tilde \verb?~? instead of \verb?^^M? and
-% pretend that the
-% latter is the lowercase variant of the former.
-% Thus we have to ensure now that the tilde character has
-% category code $13$ (active).
-% \begin{macrocode}
- \catcode`\~=\active \lccode`\~=`\^^M
-% \end{macrocode}
-% The use of the \cs{lowercase} primitive leads to one problem:
-% the uppercase character `\texttt{C}' needs to be used in the
-% code below and its case must be preserved.
-% So we add the command:
-% \begin{macrocode}
- \lccode`\C=`\C
-% \end{macrocode}
-% Now we start the token list passed to \cs{lowercase}.
-% We use the following little trick (proposed by Bernd Raichle):
-% The very first token in the token list we give to \cs{lowercase} is
-% the \cs{endgroup} primitive. This means that it is processed by
-% \TeX{} immediately after \cs{lowercase} has finished its operation,
-% thus ending the group started by \cs{begingroup} above. This avoids
-% the global definition of all macros.
-% \begin{macrocode}
- \lowercase{\endgroup
-% \end{macrocode}
-% \begin{macro}{\verbatim@start}
-% The purpose of \cs{verbatim@start} is to check whether there
-% are any characters on the same line as the \verb?\begin{verbatim}?
-% and to pretend that they were on a line by themselves.
-% On the other hand, if there are no characters remaining
-% on the current line we shall just find an end of line character.
-% \cs{verbatim@start} performs its task by first grabbing the
-% following character (its argument).
-% This argument is then compared to an active \verb?^^M?,
-% the end of line character.
-% \begin{macrocode}
- \def\verbatim@start#1{%
- \verbatim@startline
- \if\noexpand#1\noexpand~%
-% \end{macrocode}
-% If this is true we transfer control to \cs{verbatim@}
-% to process the next line. We use
-% \cs{next} as the macro which will continue the work.
-% \begin{macrocode}
- \let\next\verbatim@
-% \end{macrocode}
-% Otherwise, we define \cs{next} to expand to a call
-% to \cs{verbatim@} followed by the character just
-% read so that it is reinserted into the text.
-% This means that those characters remaining on this line
-% are handled as if they formed a line by themselves.
-% \begin{macrocode}
- \else \def\next{\verbatim@#1}\fi
-% \end{macrocode}
-% Finally we call \cs{next}.
-% \begin{macrocode}
- \next}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\verbatim@}
-% The three macros \cs{verbatim@}, \cs{verbatim@@},
-% and \cs{verbatim@@@} form the ``main loop'' of the
-% \texttt{verbatim} environment.
-% The purpose of \cs{verbatim@} is to read exactly one line
-% of input.
-% \cs{verbatim@@} and \cs{verbatim@@@} work together to
-% find out whether the four characters
-% \cs{end} (all with category code $12$ (other)) occur in that
-% line.
-% If so, \cs{verbatim@@@} will call
-% \cs{verbatim@test} to check whether this \cs{end} is
-% part of \verb?\end{verbatim}? and will terminate the environment
-% if this is the case.
-% Otherwise we continue as if nothing had happened.
-% So let's have a look at the definition of \cs{verbatim@}:
-% \begin{macrocode}
- \def\verbatim@#1~{\verbatim@@#1!end\@nil}%
-% \end{macrocode}
-% Note that the \verb?!? character will have been replaced by a
-% \verb?\? with category code $12$ (other) by the \cs{lowercase}
-% primitive governing this code before the definition of this
-% macro actually takes place.
-% That means that
-% it takes the line, puts \cs{end} (four character tokens)
-% and \cs{@nil} (one control sequence token) as a
-% delimiter behind it, and
-% then calls \cs{verbatim@@}.
-% \end{macro}
-%
-% \begin{macro}{\verbatim@@}
-% \cs{verbatim@@} takes everything up to the next occurrence of
-% the four characters \cs{end} as its argument.
-% \begin{macrocode}
- \def\verbatim@@#1!end{%
-% \end{macrocode}
-% That means: if they do not occur in the original line, then
-% argument \verb?#1? is the
-% whole input line, and \cs{@nil} is the next token
-% to be processed.
-% However, if the four characters \cs{end} are part of the
-% original line, then
-% \verb?#1? consists of the characters in front of \cs{end},
-% and the next token is the following character (always remember
-% that the line was lengthened by five tokens).
-% Whatever \verb?#1? may be, it is verbatim text,
-% so \verb?#1? is added to the line currently built.
-% \begin{macrocode}
- \verbatim@addtoline{#1}%
-% \end{macrocode}
-% The next token in the input stream
-% is of special interest to us.
-% Therefore \cs{futurelet} defines \cs{next} to be equal
-% to it before calling \cs{verbatim@@@}.
-% \begin{macrocode}
- \futurelet\next\verbatim@@@}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\verbatim@@@}
-% \cs{verbatim@@@} will now read the rest of the tokens on
-% the current line,
-% up to the final \cs{@nil} token.
-% \begin{macrocode}
- \def\verbatim@@@#1\@nil{%
-% \end{macrocode}
-% If the first of the above two cases occurred, i.e.\ no
-% \cs{end} characters were on that line, \verb?#1? is empty
-% and \cs{next} is equal to \cs{@nil}.
-% This is easily checked.
-% \begin{macrocode}
- \ifx\next\@nil
-% \end{macrocode}
-% If so, this was a simple line.
-% We finish it by processing the line we accumulated so far.
-% Then we prepare to read the next line.
-% \begin{macrocode}
- \verbatim@processline
- \verbatim@startline
- \let\next\verbatim@
-% \end{macrocode}
-% Otherwise we have to check what follows these \cs{end}
-% tokens.
-% \begin{macrocode}
- \else
-% \end{macrocode}
-% Before we continue, it's a good idea to stop for a moment
-% and remember where we are:
-% We have just read the four character tokens \cs{end}
-% and must now check whether the name of the environment (surrounded
-% by braces) follows.
-% To this end we define a macro called \cs{@tempa}
-% that reads exactly one character and decides what to do next.
-% This macro should do the following: skip spaces until
-% it encounters either a left brace or the end of the line.
-% But it is important to remember which characters are skipped.
-% The \cs{end}\meta{optional spaces}\verb?{? characters
-% may be part of the verbatim text, i.e.\ these characters
-% must be printed.
-%
-% Assume for example that the current line contains
-% \begin{verbatim*}
-% \end {AVeryLongEnvironmentName}
-%\end{verbatim*}
-% As we shall soon see, the scanning mechanism implemented here
-% will not find out that this is text to be printed until
-% it has read the right brace.
-% Therefore we need a way to accumulate the characters read
-% so that we can reinsert them if necessary.
-% The token register \cs{@temptokena} is used for this purpose.
-%
-% Before we do this we have to get rid of the superfluous
-% \cs{end} tokens at the end of the line.
-% To this end we define a temporary macro whose argument
-% is delimited by \verb?\end\@nil? (four character tokens
-% and one control sequence token) to be used below
-% on the rest of the line, after appending a \cs{@nil} token to it.
-% (Note that this token can never appear in \verb?#1?.)
-% We use the following definition of
-% \cs{@tempa} to get the rest of the line (after the first
-% \cs{end}).
-% \begin{macrocode}
- \def\@tempa##1!end\@nil{##1}%
-% \end{macrocode}
-% We mentioned already that we use token register
-% \cs{@temptokena}
-% to remember the characters we skip, in case we need them again.
-% We initialize this with the \cs{end} we have thrown away
-% in the call to \cs{@tempa}.
-% \begin{macrocode}
- \@temptokena{!end}%
-% \end{macrocode}
-% We shall now call \cs{verbatim@test}
-% to process the characters
-% remaining on the current line.
-% But wait a moment: we cannot simply call this macro
-% since we have already read the whole line.
-% Therefore we have to first expand the macro \cs{@tempa} to insert
-% them again after the \cs{verbatim@test} token.
-% A \verb?^^M? character is appended to denote the end of the line.
-% (Remember that this character comes disguised as a tilde.)
-% \begin{macrocode}
- \def\next{\expandafter\verbatim@test\@tempa#1\@nil~}%
-% \end{macrocode}
-% That's almost all, but we still have to
-% now call \cs{next} to do the work.
-% \begin{macrocode}
- \fi \next}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\verbatim@test}
-% We define \cs{verbatim@test} to investigate every token
-% in turn.
-% \begin{macrocode}
- \def\verbatim@test#1{%
-% \end{macrocode}
-% First of all we set \cs{next} equal to \cs{verbatim@test}
-% in case this macro must call itself recursively in order to
-% skip spaces.
-% \begin{macrocode}
- \let\next\verbatim@test
-% \end{macrocode}
-% We have to distinguish four cases:
-% \begin{enumerate}
-% \item The next token is a \verb?^^M?, i.e.\ we reached
-% the end of the line. That means that nothing
-% special was found.
-% Note that we use \cs{if} for the following
-% comparisons so that the category code of the
-% characters is irrelevant.
-% \begin{macrocode}
- \if\noexpand#1\noexpand~%
-% \end{macrocode}
-% We add the characters accumulated in token register
-% \cs{@temptokena} to the current line. Since
-% \cs{verbatim@addtoline} does not expand its argument,
-% we have to do the expansion at this point. Then we
-% \cs{let} \cs{next} equal to \cs{verbatim@}
-% to prepare to read the next line.
-% \begin{macrocode}
- \expandafter\verbatim@addtoline
- \expandafter{\the\@temptokena}%
- \verbatim@processline
- \verbatim@startline
- \let\next\verbatim@
-% \end{macrocode}
-% \item A space character follows.
-% This is allowed, so we add it to \cs{@temptokena}
-% and continue.
-% \begin{macrocode}
- \else \if\noexpand#1
- \@temptokena\expandafter{\the\@temptokena#1}%
-% \end{macrocode}
-% \item An open brace follows.
-% This is the most interesting case.
-% We must now collect characters until we read the closing
-% brace and check whether they form the environment name.
-% This will be done by \cs{verbatim@testend}, so here
-% we let \cs{next} equal this macro.
-% Again we will process the rest of the line, character
-% by character.
-% The characters forming the name of the environment will
-% be accumulated in \cs{@tempc}.
-% We initialize this macro to expand to nothing.
-% \begin{macrocode}
- \else \if\noexpand#1\noexpand[%
- \let\@tempc\@empty
- \let\next\verbatim@testend
-% \end{macrocode}
-% Note that the \verb?[? character will be a \verb?{? when
-% this macro is defined.
-% \item Any other character means that the \cs{end} was part
-% of the verbatim text.
-% Add the characters to the current line and prepare to call
-% \cs{verbatim@} to process the rest of the line.
-% \begin{macrocode}
- \else
- \expandafter\verbatim@addtoline
- \expandafter{\the\@temptokena}%
- \def\next{\verbatim@#1}%
- \fi\fi\fi
-% \end{macrocode}
-% \end{enumerate}
-% The last thing this macro does is to call \cs{next}
-% to continue processing.
-% \begin{macrocode}
- \next}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\verbatim@testend}
-% \cs{verbatim@testend} is called when
-% \cs{end}\meta{optional spaces}\verb?{? was seen.
-% Its task is to scan everything up to the next \verb?}?
-% and to call \cs{verbatim@@testend}.
-% If no \verb?}? is found it must reinsert the characters it read
-% and return to \cs{verbatim@}.
-% The following definition is similar to that of
-% \cs{verbatim@test}:
-% it takes the next character and decides what to do.
-% \begin{macrocode}
- \def\verbatim@testend#1{%
-% \end{macrocode}
-% Again, we have four cases:
-% \begin{enumerate}
-% \item \verb?^^M?: As no \verb?}? is found in the current line,
-% add the characters to the buffer. To avoid a
-% complicated construction for expanding
-% \cs{@temptokena}
-% and \cs{@tempc} we do it in two steps. Then we
-% continue with \cs{verbatim@} to process the
-% next line.
-% \begin{macrocode}
- \if\noexpand#1\noexpand~%
- \expandafter\verbatim@addtoline
- \expandafter{\the\@temptokena[}%
- \expandafter\verbatim@addtoline
- \expandafter{\@tempc}%
- \verbatim@processline
- \verbatim@startline
- \let\next\verbatim@
-% \end{macrocode}
-% \item \verb?}?: Call \cs{verbatim@@testend} to check
-% if this is the right environment name.
-% \begin{macrocode}
- \else\if\noexpand#1\noexpand]%
- \let\next\verbatim@@testend
-% \end{macrocode}
-% \item \verb?\?: This character must not occur in the name of
-% an environment. Thus we stop collecting characters.
-% In principle, the same argument would apply to other
-% characters as well, e.g., \verb?{?.
-% However, \verb?\? is a special case, since it may be
-% the first character of \cs{end}. This means that
-% we have to look again for
-% \cs{end}\marg{environment name}
-% Note that we prefixed the \verb?!? by a \cs{noexpand}
-% primitive, to protect ourselves against it being an
-% active character.
-% \begin{macrocode}
- \else\if\noexpand#1\noexpand!%
- \expandafter\verbatim@addtoline
- \expandafter{\the\@temptokena[}%
- \expandafter\verbatim@addtoline
- \expandafter{\@tempc}%
- \def\next{\verbatim@!}%
-% \end{macrocode}
-% \item Any other character: collect it and continue.
-% We cannot use \cs{edef} to define \cs{@tempc}
-% since its replacement text might contain active
-% character tokens.
-% \begin{macrocode}
- \else \expandafter\def\expandafter\@tempc\expandafter
- {\@tempc#1}\fi\fi\fi
-% \end{macrocode}
-% \end{enumerate}
-% As before, the macro ends by calling itself, to
-% process the next character if appropriate.
-% \begin{macrocode}
- \next}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\verbatim@@testend}
-% Unlike the previous macros \cs{verbatim@@testend} is simple:
-% it has only to check if the \cs{end}\marg{...}
-% matches the corresponding \cs{begin}\marg{...}
-% \begin{macrocode}
- \def\verbatim@@testend{%
-% \end{macrocode}
-% We use \cs{next} again to define the things that are
-% to be done.
-% Remember that the name of the current environment is
-% held in \cs{@currenvir}, the characters accumulated
-% by \cs{verbatim@testend} are in \cs{@tempc}.
-% So we simply compare these and prepare to execute
-% \cs{end}\marg{current environment}
-% macro if they match.
-% Before we do this we call \cs{verbatim@finish} to process
-% the last line.
-% We define \cs{next} via \cs{edef} so that
-% \cs{@currenvir} is replaced by its expansion.
-% Therefore we need \cs{noexpand} to inhibit the expansion
-% of \cs{end} at this point.
-% \begin{macrocode}
- \ifx\@tempc\@currenvir
- \verbatim@finish
- \edef\next{\noexpand\end{\@currenvir}%
-% \end{macrocode}
-% Without this trick the \cs{end} command would not be able
-% to correctly check whether its argument matches the name of
-% the current environment and you'd get an
-% interesting \LaTeX{} error message such as:
-% \begin{verbatim}
-%! \begin{verbatim*} ended by \end{verbatim*}.
-%\end{verbatim}
-% But what do we do with the rest of the characters, those
-% that remain on that line?
-% We call \cs{verbatim@rescan} to take care of that.
-% Its first argument is the name of the environment just
-% ended, in case we need it again.
-% \cs{verbatim@rescan} takes the list of characters to be
-% reprocessed as its second argument.
-% (This token list was inserted after the current macro
-% by \cs{verbatim@@@}.)
-% Since we are still in an \cs{edef} we protect it
-% by means of\cs{noexpand}.
-% \begin{macrocode}
- \noexpand\verbatim@rescan{\@currenvir}}%
-% \end{macrocode}
-% If the names do not match, we reinsert everything read up
-% to now and prepare to call \cs{verbatim@} to process
-% the rest of the line.
-% \begin{macrocode}
- \else
- \expandafter\verbatim@addtoline
- \expandafter{\the\@temptokena[}%
- \expandafter\verbatim@addtoline
- \expandafter{\@tempc]}%
- \let\next\verbatim@
- \fi
-% \end{macrocode}
-% Finally we call \cs{next}.
-% \begin{macrocode}
- \next}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\verbatim@rescan}
-% In principle \cs{verbatim@rescan} could be used to
-% analyse the characters remaining after the \verb?\end{...}?
-% command and pretend that these were read
-% ``properly'', assuming ``standard'' category codes are in
-% force.\footnote{Remember that they were all read with
-% category codes $11$ (letter) and $12$ (other) so
-% that control sequences are not recognized as such.}
-% But this is not always possible (when there are unmatched
-% curly braces in the rest of the line).
-% Besides, we think that this is not worth the effort:
-% After a \texttt{verbatim} or \texttt{verbatim*} environment
-% a new line in the output is begun anyway,
-% and an \verb?\end{comment}? can easily be put on a line by itself.
-% So there is no reason why there should be any text here.
-% For the benefit of the user who did put something there
-% (a comment, perhaps)
-% we simply issue a warning and drop them.
-% The method of testing is explained in Appendix~D, p.\ 376 of
-% the \TeX{}book. We use \verb?^^M? instead of the \verb?!?
-% character used there
-% since this is a character that cannot appear in \verb?#1?.
-% The two \cs{noexpand} primitives are necessary to avoid
-% expansion of active characters and macros.
-%
-% One extra subtlety should be noted here: remember that
-% the token list we are currently building will first be
-% processed by the \cs{lowercase} primitive before \TeX{}
-% carries out the definitions.
-% This means that the `\texttt{C}' character in the
-% argument to the \cs{@warning} macro must be protected against
-% being changed to `\texttt{c}'. That's the reason why we added the
-% \verb?\lccode`\C=`\C? assignment above.
-% We can now finish the argument to \cs{lowercase} as well as the
-% group in which the category codes were changed.
-% \begin{macrocode}
- \def\verbatim@rescan#1#2~{\if\noexpand~\noexpand#2~\else
- \@warning{Characters dropped after `\string\end{#1}'}\fi}}
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{The \cs{verbatiminput} command}
-%
-% \begin{macro}{\verbatim@in@stream}
-% We begin by allocating an input stream (out of the 16 available
-% input streams).
-% \begin{macrocode}
-\newread\verbatim@in@stream
-% \end{macrocode}
-% \end{macro}
+%
+%
+% \subsubsection{Disabled interface macros}
%
-% \begin{macro}{\verbatim@readfile}
-% The macro \cs{verbatim@readfile} encloses the main loop by calls to
-% the macros \cs{verbatim@startline} and \cs{verbatim@finish},
-% respectively. This makes sure
-% that the user can initialize and finish the command when the file
-% is empty or doesn't exist. The \texttt{verbatim} environment has a
-% similar behaviour when called with an empty text.
-% \begin{macrocode}
-\def\verbatim@readfile#1{%
- \verbatim@startline
-% \end{macrocode}
-% When the file is not found we issue a warning.
-% \begin{macrocode}
- \openin\verbatim@in@stream #1\relax
- \ifeof\verbatim@in@stream
- \typeout{No file #1.}%
- \else
-% \end{macrocode}
-% At this point we pass the name of the file to \cs{@addtofilelist}
-% so that its appears appears in the output of a \cs{listfiles}
-% command.
-% In addition, we use \cs{ProvidesFile} to make a log entry in the
-% transcript file and to distinguish files read in via
-% \cs{verbatiminput} from others.
-% \begin{macrocode}
- \@addtofilelist{#1}%
- \ProvidesFile{#1}[(verbatim)]%
-% \end{macrocode}
-% While reading from the file it is useful to switch off the
-% recognition of the end-of-line character. This saves us stripping
-% off spaces from the contents of the line.
+% These are macros that via the un-embedding are no longer
+% used. Relevant macros are defined to to issue a warning, others just
+% does not do anything.
+%
+% \changes{v3.8.2}{2024/01/24}{Added defaults for disabled macros}
+% Macros for enabling marking tabs in verbatim, have been
+% discontinued.
% \begin{macrocode}
- \expandafter\endlinechar\expandafter\m@ne
- \expandafter\verbatim@read@file
- \expandafter\endlinechar\the\endlinechar\relax
- \closein\verbatim@in@stream
- \fi
- \verbatim@finish
+\newcommand*\tabsoff{} % defined to do nothing
+\newcommand*\tabson{
+ \@memwarn{As of January 2024, \string\tabson\space has been discontinued.}
}
+
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\verbatim@read@file}
-% All the work is done in \cs{verbatim@read@file}. It reads the input
-% file line by line and recursively calls itself until the end of
-% the file.
-% \begin{macrocode}
-\def\verbatim@read@file{%
- \read\verbatim@in@stream to\next
- \ifeof\verbatim@in@stream
- \else
-% \end{macrocode}
-% For each line we call \cs{verbatim@addtoline} with the contents of
-% the line. \hskip0pt plus 3cm\penalty0\hskip0pt plus -3cm
-% \cs{verbatim@processline} is called next.
-% \begin{macrocode}
- \expandafter\verbatim@addtoline\expandafter{\next}%
- \verbatim@processline
-% \end{macrocode}
-% After processing the line we call \cs{verbatim@startline} to
-% initialize all before we read the next line.
-% \begin{macrocode}
- \verbatim@startline
-% \end{macrocode}
-% Without \cs{expandafter} each call of \cs{verbatim@read@file} uses
-% space in \TeX's input stack.\footnote{A standard \TeX\ would
-% report an overflow error if you try to read a file with more than
-% ca.\ 200~lines. The same error occurs if the first line of code
-% in \S 390 of \textsl{``TeX: The Program''\/} is missing.}
+% Code for automatic line breaking in verbatim has been discontinued.
% \begin{macrocode}
- \expandafter\verbatim@read@file
- \fi
+\newlength\verbatimindent
+\newcommand*\verbatimbreakchar{} % silently does nothing as it
+ % needs \wrappingon to be enabled
+\newcommand*\setverbatimbreak{} % never used
+\newcommand*\wrappingon{
+ \@memwarn{As of January 2024, \string\wrappingon\space has been discontinued.}
}
+\newcommand*\wrappingoff{} % defined to do nothing
+\def\wrapright{} % internal macro no longer used
% \end{macrocode}
-% \end{macro}
-%
%
-% \begin{macro}{\verbatiminput}
-% \cs{verbatiminput} first starts a group to keep font and category
-% changes local.
-% Then it calls the macro \cs{verbatim@input} with additional
-% arguments, depending on whether an asterisk follows.
-%
-% PW. I added the TAB checking code.
-% \begin{macrocode}
-\def\verbatiminput{\begingroup
- \ift@bs
- \def\verbatim@processline{\tabverbatim@processline}%
- \fi
- \@ifstar{\verbatim@input{\@maybeobeytabs}}%
- {\verbatim@input{\frenchspacing\@vobeyspaces\@maybeobeytabs}}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\verbatim@input}
-% \cs{verbatim@input} first checks whether the file exists, using
-% the standard macro cs{IfFileExists} which leaves the name of the
-% file found in \cs{@filef@und}.
-% Then everything is set up as in the \cs{verbatim} macro.
-% \begin{macrocode}
-\def\verbatim@input#1#2{%
- \IfFileExists {#2}{\@verbatim #1\relax
-% \end{macrocode}
-% Then it reads in the file, finishes off the \texttt{trivlist}
-% environment started by \cs{@verbatim} and closes the group.
-% This restores everything to its normal settings.
-% \begin{macrocode}
- \verbatim@readfile{\@filef@und}\endtrivlist\endgroup\@doendpe}%
-% \end{macrocode}
-% If the file is not found a more or less helpful message is
-% printed. The final \cs{endgroup} is needed to close the group
-% started in \cs{verbatiminput} above.
-% \begin{macrocode}
- {\typeout {No file #2.}\endgroup}}
-% \end{macrocode}
-% \end{macro}
+%
+% \subsubsection{About the \texttt{verbatim} adjustments that have been removed}
%
-% \textit{That completes my borrowings from \Lpack{verbatim}.}
+% The adjustments PW made that we removed (in January 2024) can
+% actually be patched back in using the following code and
+% patches. Left here for reference. Will probably be removed at some
+% point.
%
-% The next bunch of code implements wrapping verbatim lines so they, hopefully,
-% stay within the typeblock.
+% First the code needed by the patches
+% \begin{verbatim}
+% % extra hook to be added at the end of verbatims
+% \newtoks\afterevery@verbatim
+% \afterevery@verbatim={}
+% % code for marking tabs using a number of spaces
+% \newcount\tab@position
+% \def\mem@xobeytab{%
+% \typeout{\the\tab@position}
+% \loop
+% \toks@\expandafter{\the\toks@\@xobeysp}%
+% \advance\tab@position-1
+% \ifnum\tab@position>-1 \repeat% was 0, but that never gave 4 spaces
+% }
+% \def\verbatim@tabexpand#1{%
+% \ifx#1\@nil
+% \the\toks@
+% \expandafter\par
+% \else
+% \ifx#1\@xobeytab
+% \@xobeytab
+% \else
+% \toks@\expandafter{\the\toks@#1}%
+% \advance\tab@position\m@ne
+% \fi
+% \ifnum\tab@position=0 \tab@position\tab@size \fi
+% \expandafter\verbatim@tabexpand
+% \fi
+% }
+% \newif\ift@bs
+% \def\@maybeobeytabs{}%
+% % The code to enable marking tabs
+% \newcommand{\tabson}[1][4]{%
+% % firstly, has to be at least 1, so if less than one, we disable visible tabs
+% \ifnum\@ne > #1\relax
+% \typeout{#1 gives tabs off}
+% \tabsoff
+% \else
+% \t@bstrue
+% \let\@xobeytab\mem@xobeytab
+% \def\tab@size{#1\relax}%
+% \def\@maybeobeytabs{\@vobeytabs}%
+% \fi
+% }
+% \newcommand{\tabsoff}{%
+% \t@bsfalse
+% \def\tab@size{\z@}%
+% \def\@maybeobeytabs{}%
+% }
+% % default is off
+% \tabsoff
+% % \verbatim@processline is redefined to this in certain places if tabs are on
+% \def\tabverbatim@processline{\tab@position\tab@size%
+% \toks@{}%
+% \expandafter\verbatim@tabexpand\the\verbatim@line\@nil}
+% % Code for the wrapping system, \cs{raggedwrap} was moved
+% % elsewhere in the code so is still there.
+% \newcommand*{\wrappingon}{%
+% \def\@xobeysp{~\discretionary{\verbatimbreakchar}%
+% {\kern\verbatimindent}{}}%
+% \def\wrapright{\raggedwrap}}
+% \newcommand*{\wrappingoff}{%
+% \def\@xobeysp{\leavevmode\penalty\@M\ }%
+% \def\wrapright{}}
+% \wrappingoff
+% \end{verbatim}
%
-% \begin{macro}{\verbatimindent}
-% \begin{macro}{\verbatimbreakchar}
-% \begin{macro}{\setverbatimbreak}
-% The length \cs{verbatimindent} is the distance continuation lines are indented
-% from the left margin. \cs{verbatimbreakchar} is the character to indicate
-% a wrapped line.
-% \begin{macrocode}
-\newlength{\verbatimindent}
- \setlength{\verbatimindent}{3em}
-\newcommand*{\verbatimbreakchar}{\char`\%}
-\newcommand*{\setverbatimbreak}{%
- \vspace*{-\baselineskip}%
- \def\@xobeysp{~\discretionary{\verbatimbreakchar}%
- {\kern\verbatimindent}{}}%
-}
-
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
+% Next the actual patching
+% \begin{verbatim}
+% % % patch \@verbatim, two changes
+% % firstly change leftskip into the memoir aliases
+% \patchcmd\@verbatim{%
+% \leftskip\@totalleftmargin\rightskip\z@%
+% }{%
+% \memRTLleftskip\@totalleftmargin\memRTLrightskip\z@%
+% }{}{\typeout{first patch for \string\@verbatim\space failed}}
+% % secondly add the wrapping code at the very end, we could probably
+% % use the macro hook here
+% \patchcmd\@verbatim{%
+% \everypar \expandafter{\the\everypar \unpenalty}%
+% }{%
+% \everypar \expandafter{\the\everypar \unpenalty}%
+% \wrapright\the\afterevery@verbatim%
+% }{}{\typeout{second patch for \string\@verbatim\space failed}}
+%
+% % add tabs support for \verbatim
+% \patchcmd\verbatim{\begingroup\@verbatim}{%
+% \begingroup%
+% \ift@bs%
+% \def\verbatim@processline{\tabverbatim@processline}%
+% \fi%
+% \@verbatim%
+% }{}{\typeout{Patch 1 for \string\verbatim\space failed}}
+% % add tab support
+% \patchcmd\verbatim{\@vobeyspaces}{%
+% \@vobeyspaces\@maybeobeytabs%
+% }{}{\typeout{Patch 2 for \string\verbatim\space failed}}
+%
+% \expandafter\patchcmd\expandafter{\csname verbatim*\endcsname}%
+% {\begingroup\@verbatim}{%
+% \begingroup%
+% \ift@bs%
+% \def\verbatim@processline{\tabverbatim@processline}%
+% \def\@setupverbvisibletab{}% remove redef of \@xobeytab
+% \fi%
+% \@verbatim%
+% }{}{\typeout{Patch 1 for \string\verbatim*\space failed}}
+% \expandafter\patchcmd\expandafter{\csname verbatim*\endcsname}%
+% {\@vobeyspaces}{%
+% \@vobeyspaces\@maybeobeytabs%
+% }{}{\typeout{Patch 2 for \string\verbatim*\space failed}}
+%
+% patches for \verbatiminput, there are 3
+% \patchcmd\verbatiminput{\begingroup\@ifstar}{%
+% \begingroup%
+% \ift@bs%
+% \def\verbatim@processline{\tabverbatim@processline}%
+% \fi%
+% \@ifstar%
+% }{}{\typeout{Patch 1 for \string\verbatiminput\space failed}}
+%
+% \patchcmd\verbatiminput{\@ifstar{\verbatim@input\relax}}{%
+% \@ifstar{\verbatim@input{\@maybeobeytabs}}%
+% }{}{\typeout{Patch 2 for \string\verbatiminput\space failed}}
+%
+% \patchcmd\verbatiminput{\frenchspacing\@vobeyspaces}{%
+% \frenchspacing\@vobeyspaces\@maybeobeytabs%
+% }{}{\typeout{Patch 3 for \string\verbatiminput\space failed}}
+%
+% \end{verbatim}
+%
%
-% \begin{macro}{\raggedwrap}
-% \begin{macro}{\wrappingon}
-% \begin{macro}{\wrapright}
-% \begin{macro}{\wrappingoff}
-% \cs{wrappingon} and \cs{wrappingoff} enable/prohibit wrapping. The
-% default is \cs{wrappingoff}.
-%
-% The macro
-% \cs{wrapright} is used to set paragraph skips; without raggedright the
-% lines
-% may break at the first space \emph{outside} the text area. However,
-% Paul (\url{paulaugust2003@yahoo.com}) found that wrapped verbatims
-% in a list (e.g., \texttt{itemize}) were not indented although regular
-% verbatims were indented. \cs{raggedwrap} is a variation on \cs{raggedright}
-% (\cs{leftskip} is set to \cs{@totalleftmargin} instead of 0pt), and seems
-% to have fixed the problem with the original code which used
-% \cs{raggedright}.
-% \changes{v1.61803}{2008/01/30}{Added \cs{raggedwrap} (mempatch v4.4)}
-% \changes{v1.61803398}{2009/07/18}{Added bidi support to \cs{raggedwrap}}
-% \begin{macrocode}
-\newcommand*{\raggedwrap}{%
- \@rightskip\@flushglue
-%%% \rightskip\@rightskip
- \memRTLrightskip\@rightskip
-%%% \leftskip\@totalleftmargin
- \memRTLleftskip\@totalleftmargin
- \parindent\ragrparindent}
-\newcommand*{\wrappingon}{%
- \def\@xobeysp{~\discretionary{\verbatimbreakchar}%
- {\kern\verbatimindent}{}}%
- \def\wrapright{\raggedwrap}}
-\newcommand*{\wrappingoff}{%
- \def\@xobeysp{\leavevmode\penalty\@M\ }%
- \def\wrapright{}}
-\wrappingoff
-
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
%
%
+% ^^A % All the code in this section was added for version 1.2 of the class.
+% ^^A % \changes{v1.2}{2002/07/27}{Section `Verbatims, boxes and files' added}
+% ^^A %
+% ^^A % \subsection{Modified version of the verbatim package}
+% ^^A %
+% ^^A % \noindent{\color{red}\rule\textwidth{5mm}}
+% ^^A %
+% ^^A % Much of this is from the \Lpack{verbatim} package code~\cite{VERBATIM}.
+% ^^A % Unless indicated otherwise, the code and commentary is from that
+% ^^A % package.
+% ^^A %
+% ^^A %
+% ^^A % \subsubsection{Preliminaries}
+% ^^A %
+% ^^A % \begin{macro}{\every@verbatim}
+% ^^A % \begin{macro}{\afterevery@verbatim}
+% ^^A % The hook (i.e., token register) \cs{every@verbatim}
+% ^^A % is initialized to \meta{empty}.
+% ^^A %
+% ^^A % PW added the \cs{afterevery@verbatim} hook.
+% ^^A % \begin{macrocode}
+% ^^A \newtoks\every@verbatim
+% ^^A \every@verbatim={}
+% ^^A \newtoks\afterevery@verbatim
+% ^^A \afterevery@verbatim={}
+% ^^A
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A %
+% ^^A % \begin{macro}{\@makeother}
+% ^^A % \cs{@makeother} takes as argument a character and changes
+% ^^A % its category code to $12$ (other).
+% ^^A % \begin{macrocode}
+% ^^A \def\@makeother#1{\catcode`#112\relax}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A %
+% ^^A % \begin{macro}{\@vobeyspaces}
+% ^^A % The macro \cs{@vobeyspaces} causes spaces in the input
+% ^^A % to be printed as spaces in the output.
+% ^^A %
+% ^^A % In the Nov-2023 kernel update, some changes were made to how
+% ^^A % \verb|\verb| handles tabs. We need to adjust accordingly. Note
+% ^^A % that it will be better to just load the \Lpack{verbatim} package
+% ^^A % and make adjustments to it. The fix comes from \url{https://github.com/latex3/latex2e/issues/1160#issuecomment-1793564381}.
+% ^^A % \changes{v3.8.2}{2023/11/07}{Added fix for kernel update}
+% ^^A % \begin{macrocode}
+% ^^A \begingroup
+% ^^A \catcode`\ =\active%
+% ^^A \IfFormatAtLeastTF{2023-11-01}%
+% ^^A % active spaces at line beginning are absorbed as macro arguments
+% ^^A {\def\x{\def\@vobeyspaces{\catcode`\ \active\let \@xobeysp\@vobeytabs}}}%
+% ^^A {\def\x{\def\@vobeyspaces{\catcode`\ \active\let \@xobeysp}}}%
+% ^^A % was: \def\x{\def\@vobeyspaces{\catcode`\ \active\let \@xobeysp}}
+% ^^A \expandafter\endgroup\x
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A %
+% ^^A % \begin{macro}{\@xobeysp}
+% ^^A % The macro \cs{@xobeysp} produces exactly one space in
+% ^^A % the output, protected against breaking just before it.
+% ^^A % (\cs{@M} is an abbreviation for the number $10000$.)
+% ^^A % \begin{macrocode}
+% ^^A \def\@xobeysp{\leavevmode\penalty\@M\ }
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A %
+% ^^A % \begin{macro}{\verbatim@line}
+% ^^A % We use a newly defined token register called \cs{verbatim@line}
+% ^^A % that will be used as the character buffer.
+% ^^A % \begin{macrocode}
+% ^^A \newtoks\verbatim@line
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % PW. I have extended the original \Lpack{verbatim} package code to handle
+% ^^A % TABs within verbatims. Normally TeX replaces a TAB by either a single space or
+% ^^A % ignores it altogether. For this purpose I have bits of code from the \Lpack{moreverb}
+% ^^A % package~\cite{MOREVERB} for handling TABs.
+% ^^A %
+% ^^A % \textit{Code and commentary from moreverb.}
+% ^^A %
+% ^^A % We define a few auxiliary macros and counters for expanding tabs.
+% ^^A % \begin{macrocode}
+% ^^A \newcount\tab@position
+% ^^A % \end{macrocode}
+% ^^A %
+% ^^A % \begin{macro}{\@xobeytab}
+% ^^A % \cs{@xobeytab} puts enough spaces in to get to the next nominal
+% ^^A % tab stop
+% ^^A % \begin{macrocode}
+% ^^A \def\@xobeytab{%
+% ^^A \loop
+% ^^A \toks@\expandafter{\the\toks@\@xobeysp}%
+% ^^A \advance\tab@position-1
+% ^^A \ifnum\tab@position>0 \repeat
+% ^^A }
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\@vobeytabs}
+% ^^A % \cs{@vobeytabs} initialises use of \cs{@xobeytab}. Needs to be
+% ^^A % executed within a group, as mustn't be allowed to leak out into the
+% ^^A % wide world.
+% ^^A %
+% ^^A % \begin{macrocode}
+% ^^A \begingroup
+% ^^A \catcode`\^^I=\active
+% ^^A \gdef\@vobeytabs{\catcode`\^^I\active\let^^I\@xobeytab}%
+% ^^A \endgroup
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\verbatim@tabexpand}
+% ^^A % \cs{verbatim@tabexpand}\marg{body of line}\cs{@nil} processes every
+% ^^A % character of a line by tail recursion, counting the characters and
+% ^^A % juggling things when a tab is encountered.
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim@tabexpand#1{%
+% ^^A \ifx#1\@nil
+% ^^A \the\toks@
+% ^^A \expandafter\par
+% ^^A \else
+% ^^A \ifx#1\@xobeytab
+% ^^A \@xobeytab
+% ^^A \else
+% ^^A % \end{macrocode}
+% ^^A %
+% ^^A % We can safely put \cs{@xobeysp} into the token register, since it
+% ^^A % does precisely what we need
+% ^^A % \begin{macrocode}
+% ^^A \toks@\expandafter{\the\toks@#1}%
+% ^^A \advance\tab@position\m@ne
+% ^^A \fi
+% ^^A \ifnum\tab@position=0 \tab@position\tab@size \fi
+% ^^A \expandafter\verbatim@tabexpand
+% ^^A \fi
+% ^^A }
+% ^^A
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \textit{End of code and commentary from moreverb.}
+% ^^A %
+% ^^A % PW. Some macros for turning tabbing on and off.
+% ^^A %
+% ^^A % \begin{macro}{\tabson}
+% ^^A % \begin{macro}{\tabsoff}
+% ^^A % \begin{macro}{\@maybeobeytabs}
+% ^^A % \cs{tabson} turns tabbing on, and \cs{tabsoff} turns it off. Default
+% ^^A % is no tabbing.
+% ^^A % \begin{macrocode}
+% ^^A \newif\ift@bs
+% ^^A \newcommand{\tabson}[1][4]{%
+% ^^A \ifnum\@ne > #1\relax
+% ^^A \tabsoff
+% ^^A \else
+% ^^A \t@bstrue
+% ^^A \def\tab@size{#1\relax}%
+% ^^A \def\@maybeobeytabs{\@vobeytabs}%
+% ^^A \fi
+% ^^A }
+% ^^A \newcommand{\tabsoff}{%
+% ^^A \t@bsfalse
+% ^^A \def\tab@size{\z@}%
+% ^^A \def\@maybeobeytabs{}%
+% ^^A }
+% ^^A \tabsoff
+% ^^A
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A % \end{macro}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\tabverbatim@processline}
+% ^^A % Process a line with TABs (extracted from \Lpack{moreverb}).
+% ^^A % \begin{macrocode}
+% ^^A \def\tabverbatim@processline{\tab@position\tab@size
+% ^^A \toks@{}%
+% ^^A \expandafter\verbatim@tabexpand\the\verbatim@line\@nil}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\notabverbatim@processline}
+% ^^A % Processes a line ignoring TABs (this is the original \Lpack{verbatim}
+% ^^A % package definition of \cs{verbatim@processline}).
+% ^^A % \begin{macrocode}
+% ^^A \def\notabverbatim@processline{\the\verbatim@line\par}
+% ^^A
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \textit{We are now back to the \Lpack{verbatim} code.}
+% ^^A %
+% ^^A % The following four macros are defined globally in a way suitable for
+% ^^A % the \texttt{verbatim} and \texttt{verbatim*} environments.
+% ^^A % \begin{macro}{\verbatim@startline}
+% ^^A % \begin{macro}{\verbatim@addtoline}
+% ^^A % \begin{macro}{\verbatim@processline}
+% ^^A % \cs{verbatim@startline} initializes processing of a line
+% ^^A % by emptying the character buffer (\cs{verbatim@line}).
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim@startline{\verbatim@line{}}
+% ^^A % \end{macrocode}
+% ^^A % \cs{verbatim@addtoline} adds the tokens in its argument
+% ^^A % to our buffer register \cs{verbatim@line} without expanding
+% ^^A % them.
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim@addtoline#1{%
+% ^^A \verbatim@line\expandafter{\the\verbatim@line#1}}
+% ^^A % \end{macrocode}
+% ^^A % Processing a line inside a \texttt{verbatim} or \texttt{verbatim*}
+% ^^A % environment means printing it.
+% ^^A % Ending the line means that we have to begin a new paragraph.
+% ^^A % We use \cs{par} for this purpose. Note that \cs{par}
+% ^^A % is redefined in \cs{@verbatim} to force \TeX{} into horizontal
+% ^^A % mode and to insert an empty box so that empty lines in the input
+% ^^A % do appear in the output.
+% ^^A % (PW changed next line from \\
+% ^^A % \verb?\def\verbatim@processline{\the\verbatim@line\par}?
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim@processline{\notabverbatim@processline}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A % \end{macro}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\verbatim@finish}
+% ^^A % As a default, \cs{verbatim@finish} processes the remaining
+% ^^A % characters.
+% ^^A % When this macro is called we are facing the following problem:
+% ^^A % when the \verb?\end{verbatim}?
+% ^^A % command is encountered \cs{verbatim@processline} is called
+% ^^A % to process the characters preceding the command on the same
+% ^^A % line. If there are none, an empty line would be output if we
+% ^^A % did not check for this case.
+% ^^A %
+% ^^A % If the line is empty \verb?\the\verbatim@line? expands to
+% ^^A % nothing. To test this we use a trick similar to that on p.\ 376
+% ^^A % of the \TeX{}book, but with \verb?$?\ldots\verb?|$? instead of
+% ^^A % the \verb?!? tokens. These \verb?$? tokens can never have the same
+% ^^A % category code as a \verb?$? token that might possibly appear in the
+% ^^A % token register \cs{verbatim@line}, as such a token will always have
+% ^^A % been read with category code $12$ (other).
+% ^^A % Note that \cs{ifcat} expands the following tokens so that
+% ^^A % \verb?\the\verbatim@line? is replaced by the accumulated
+% ^^A % characters
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim@finish{\ifcat$\the\verbatim@line$\else
+% ^^A \verbatim@processline\fi}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A %
+% ^^A % \subsubsection{The \texttt{verbatim} and \texttt{verbatim*} environments}
+% ^^A %
+% ^^A % \begin{macro}{\verbatim@font}
+% ^^A % We start by defining the macro \cs{verbatim@font} that is
+% ^^A % to select the font and to set font-dependent parameters.
+% ^^A % Then we go through \cs{verbatim@nolig@list} to avoid
+% ^^A % certain ligatures.
+% ^^A % \cs{verbatim@nolig@list} is a macro defined in the \LaTeXe{} kernel
+% ^^A % to expand to
+% ^^A % \begin{verbatim}
+% ^^A % \do\`\do\<\do\>\do\,\do\'\do\-
+% ^^A % \end{verbatim}
+% ^^A % All the characters in this list can be part of a ligature in some
+% ^^A % font or other.
+% ^^A %
+% ^^A % PW. This is the original version which I'm going to replace.
+% ^^A % \begin{verbatim}
+% ^^A % \def\verbatim@font{\normalfont\ttfamily
+% ^^A % \hyphenchar\font\m@ne
+% ^^A % \let\do\do@noligs
+% ^^A % \verbatim@nolig@list}
+% ^^A % \end{verbatim}
+% ^^A % Actually the kernel defines the macro \verb+\@noligs+ which just
+% ^^A % runs the last two lines of the \verb+\verbatim@font+ above. As other
+% ^^A % package may add stuff to \verb+\@noligs+, we will use that instead.
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\setverbatimfont}
+% ^^A % \begin{macro}{\m@mverbfont}
+% ^^A % \begin{macro}{\verbatim@font}
+% ^^A % User level handle for changing the font used for verbatim text.
+% ^^A % \changes{v1.61803398}{2009/09/10}{Changed the last two lines of
+% ^^A % \cs{verbatim@font} into using \cs{@noligs} instead. This fixes
+% ^^A % problem with upquote.}
+% ^^A % \begin{macrocode}
+% ^^A \newcommand{\setverbatimfont}[1]{\def\m@mverbfont{#1}}
+% ^^A \setverbatimfont{\normalfont\ttfamily}
+% ^^A
+% ^^A \def\verbatim@font{\m@mverbfont
+% ^^A \hyphenchar\font\m@ne
+% ^^A \@noligs}
+% ^^A
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A % \end{macro}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A %
+% ^^A % \begin{macro}{\@verbatim}
+% ^^A % The macro \cs{@verbatim} sets up things properly.
+% ^^A % First of all, the tokens of the \cs{every@verbatim} hook
+% ^^A % are inserted.
+% ^^A % Then a \texttt{trivlist} environment is started and its first
+% ^^A % \cs{item} command inserted.
+% ^^A % Each line of the \texttt{verbatim} or \texttt{verbatim*}
+% ^^A % environment will be treated as a separate paragraph.
+% ^^A % \changes{v1.61803398}{2009/07/18}{Added bidi support to \cs{@verbatim}}
+% ^^A % \begin{macrocode}
+% ^^A \def\@verbatim{\the\every@verbatim
+% ^^A \trivlist \item \relax
+% ^^A % \end{macrocode}
+% ^^A % The following extra vertical space is for compatibility with the
+% ^^A % \LaTeX kernel: otherwise, using the \Lpack{verbatim} package changes
+% ^^A % the vertical spacing of a \texttt{verbatim} environment nested within a
+% ^^A % \texttt{quote} environment.
+% ^^A % \begin{macrocode}
+% ^^A \if@minipage\else\vskip\parskip\fi
+% ^^A % \end{macrocode}
+% ^^A % The paragraph parameters are set appropriately:
+% ^^A % the penalty at the beginning of the environment,
+% ^^A % left and right margins, paragraph indentation, the glue to
+% ^^A % fill the last line, and the vertical space between paragraphs.
+% ^^A % The latter space has to be zero since we do not want to add
+% ^^A % extra space between lines.
+% ^^A % \begin{macrocode}
+% ^^A \@beginparpenalty \predisplaypenalty
+% ^^A %%% \leftskip\@totalleftmargin\rightskip\z@
+% ^^A \memRTLleftskip\@totalleftmargin\memRTLrightskip\z@
+% ^^A \parindent\z@\parfillskip\@flushglue\parskip\z@
+% ^^A % \end{macrocode}
+% ^^A % There's one point to make here:
+% ^^A % the \texttt{list} environment uses \TeX's \cs{parshape}
+% ^^A % primitive to get a special indentation for the first line
+% ^^A % of the list.
+% ^^A % If the list begins with a \texttt{verbatim} environment
+% ^^A % this \cs{parshape} is still in effect.
+% ^^A % Therefore we have to reset this internal parameter explicitly.
+% ^^A % We could do this by assigning $0$ to \cs{parshape}.
+% ^^A % However, there is a simpler way to achieve this:
+% ^^A % we simply tell \TeX{} to start a new paragraph.
+% ^^A % As is explained on p.~103 of the \TeX{}book, this resets
+% ^^A % \cs{parshape} to zero.
+% ^^A % \begin{macrocode}
+% ^^A \@@par
+% ^^A % \end{macrocode}
+% ^^A % We now ensure that \cs{par} has the correct definition,
+% ^^A % namely to force \TeX{} into horizontal mode
+% ^^A % and to include an empty box.
+% ^^A % This is to ensure that empty lines do appear in the output.
+% ^^A % Afterwards, we insert the \cs{interlinepenalty} since \TeX{}
+% ^^A % does not add a penalty between paragraphs (here: lines)
+% ^^A % by its own initiative. Otherwise a \texttt{verbatim} environment
+% ^^A % could be broken across pages even if a \cs{samepage}
+% ^^A % declaration were present.
+% ^^A %
+% ^^A % However, in a top-aligned minipage, this will result in an extra
+% ^^A % empty line added at the top. Therefore, a slightly more
+% ^^A % complicated construct is necessary.
+% ^^A % One of the important things here is the inclusion of
+% ^^A % \cs{leavevmode} as the first macro in the first line, for example,
+% ^^A % a blank verbatim line is the first thing in a list item.
+% ^^A % \begin{macrocode}
+% ^^A \def\par{%
+% ^^A \if@tempswa
+% ^^A \leavevmode\null\@@par\penalty\interlinepenalty
+% ^^A \else
+% ^^A \@tempswatrue
+% ^^A \ifhmode\@@par\penalty\interlinepenalty\fi
+% ^^A \fi}%
+% ^^A % \end{macrocode}
+% ^^A % But to avoid an error message when the environment
+% ^^A % doesn't contain any text, we redefine \cs{@noitemerr}
+% ^^A % which will in this case be called by \cs{endtrivlist}.
+% ^^A % \begin{macrocode}
+% ^^A \def\@noitemerr{\@warning{No verbatim text}}%
+% ^^A % \end{macrocode}
+% ^^A % Now we call \cs{obeylines} to make the end of line character
+% ^^A % active,
+% ^^A % \begin{macrocode}
+% ^^A \obeylines
+% ^^A % \end{macrocode}
+% ^^A % change the category code of all special characters,
+% ^^A % to $12$ (other).
+% ^^A % \begin{macrocode}
+% ^^A \let\do\@makeother \dospecials
+% ^^A % \end{macrocode}
+% ^^A % and switch to the font to be used.
+% ^^A % \begin{macrocode}
+% ^^A \verbatim@font
+% ^^A % \end{macrocode}
+% ^^A % To avoid a breakpoint after the labels box, we remove the penalty
+% ^^A % put there by the list macros: another use of \cs{unpenalty}!
+% ^^A % \begin{macrocode}
+% ^^A \everypar \expandafter{\the\everypar \unpenalty}%
+% ^^A % \end{macrocode}
+% ^^A % PW added next code at end of \cs{@verbatim}.
+% ^^A % \begin{macrocode}
+% ^^A \wrapright\the\afterevery@verbatim}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A %
+% ^^A % \begin{macro}{\verbatim}
+% ^^A % \begin{macro}{\verbatim*}
+% ^^A % Now we define the toplevel macros.
+% ^^A % \cs{verbatim} is slightly changed:
+% ^^A % after setting up things properly it calls
+% ^^A % \cs{verbatim@start}.
+% ^^A % This is done inside a group, so that \cs{verbatim} can be used
+% ^^A % directly, without \cs{begin}.
+% ^^A %
+% ^^A % PW. The following is the original code, but I want a version of
+% ^^A % \texttt{verbatim} that recognises TABs.
+% ^^A % \begin{verbatim}
+% ^^A % \begin{macrocode}
+% ^^A % \def\verbatim{%
+% ^^A % \begingroup\@verbatim \frenchspacing\@vobeyspaces
+% ^^A % \verbatim@start}
+% ^^A % \end{macrocode}
+% ^^A % \cs{verbatim*} is defined accordingly.
+% ^^A % \begin{macrocode}
+% ^^A % \@namedef{verbatim*}{\begingroup\@verbatim\verbatim@start}
+% ^^A % \def\endverbatim{\endtrivlist\endgroup}
+% ^^A % \expandafter\let\csname endverbatim*\endcsname=\endverbatim
+% ^^A % \end{macrocode}
+% ^^A % \end{verbatim}
+% ^^A %
+% ^^A % PW. My code for these is a modified version of the original \Lpack{verbatim}
+% ^^A % code.
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim{\begingroup
+% ^^A \ift@bs
+% ^^A \def\verbatim@processline{\tabverbatim@processline}%
+% ^^A \fi
+% ^^A \@verbatim \frenchspacing\@vobeyspaces\@maybeobeytabs\verbatim@start}
+% ^^A \@namedef{verbatim*}{\begingroup
+% ^^A \ift@bs
+% ^^A \def\verbatim@processline{\tabverbatim@processline}%
+% ^^A \fi
+% ^^A \@verbatim\@maybeobeytabs\verbatim@start}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A %
+% ^^A % \begin{macro}{\endverbatim}
+% ^^A % \begin{macro}{\endverbatim*}
+% ^^A % To end the \texttt{verbatim} and \texttt{verbatim*}
+% ^^A % environments it is only necessary to finish the
+% ^^A % \texttt{trivlist} environment started in \cs{@verbatim} and
+% ^^A % close the corresponding group, and handle\footnote{Noted by
+% ^^A % Zarko Cucej (\url{zarko.cucej@uni-mb.si}).} following (non-) paragraph,
+% ^^A % by using \cs{@doendpe}.
+% ^^A % \changes{v1.4}{2003/11/22}{Added \cs{@doendpe} to \cs{endverbatim}
+% ^^A % (from patch v1.8)}
+% ^^A % \changes{v2.0a}{2004/03/01}{Refixed \cs{endverbatim}}
+% ^^A % \begin{macrocode}
+% ^^A \def\endverbatim{\endtrivlist\endgroup\@doendpe}
+% ^^A \@namelet{endverbatim*}\endverbatim
+% ^^A
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % For abnormal \cs{parskip}s the NTG class included the following, but I'm
+% ^^A % not sure if it is relevant here, but if it is just how it should be included.
+% ^^A % \begin{verbatim}
+% ^^A % From NTG, where it is a \cs{def}
+% ^^A % \providecommand*{\verbatim}{%
+% ^^A % \topsep=-0.5\parskip
+% ^^A % \@verbatim
+% ^^A % \frenchspacing\@vobeyspaces \@xverbatim}
+% ^^A % \end{verbatim}
+% ^^A %
+% ^^A %
+% ^^A % \subsubsection{The \texttt{comment} environment}
+% ^^A %
+% ^^A % The \cs{comment} macro is similar to \cs{verbatim*}.
+% ^^A % However, we do not need to switch fonts or set special
+% ^^A % formatting parameters such as \cs{parindent} or \cs{parskip}.
+% ^^A % We need only set the category code of all special characters
+% ^^A % to $12$ (other) and that of \verb?^^M? (the end of line character)
+% ^^A % to $13$ (active).
+% ^^A % The latter is needed for macro parameter delimiter matching in
+% ^^A % the internal macros defined below.
+% ^^A % In contrast to the default definitions used by the
+% ^^A % \cs{verbatim} and \cs{verbatim*} macros,
+% ^^A % we define \cs{verbatim@addtoline} to throw away its argument
+% ^^A % and \cs{verbatim@processline}, \cs{verbatim@startline},
+% ^^A % and \cs{verbatim@finish} to act as no-ops.
+% ^^A % Then we call \cs{verbatim@}.
+% ^^A % But the first thing we do is to call \cs{@bsphack} so that
+% ^^A % this environment has no influence whatsoever upon the spacing.
+% ^^A %
+% ^^A % PW: This is the original code for the \texttt{comment} environment,
+% ^^A % which I'm going to change.
+% ^^A % \begin{verbatim}
+% ^^A % \def\comment{\@bsphack
+% ^^A % \let\do\@makeother\dospecials\catcode`\^^M\active
+% ^^A % \let\verbatim@startline\relax
+% ^^A % \let\verbatim@addtoline\@gobble
+% ^^A % \let\verbatim@processline\relax
+% ^^A % \let\verbatim@finish\relax
+% ^^A % \verbatim@}
+% ^^A % \end{verbatim}
+% ^^A % \cs{endcomment} is very simple: it only calls
+% ^^A % \cs{@esphack} to take care of the spacing.
+% ^^A % The \cs{end} macro closes the group and therefore takes care
+% ^^A % of restoring everything we changed.
+% ^^A % \begin{verbatim}
+% ^^A % \let\endcomment=\@esphack
+% ^^A % \end{verbatim}
+% ^^A %
+% ^^A % PW: The remainder of this section is my code.
+% ^^A %
+% ^^A % \begin{macro}{\setupcomment}
+% ^^A % \cs{setupcomment} does all the \cs{let}s in the original \cs{comment} code.
+% ^^A % \begin{macrocode}
+% ^^A \newcommand{\setupcomment}{%
+% ^^A \let\do\@makeother\dospecials\catcode`\^^M\active
+% ^^A \let\verbatim@startline\relax
+% ^^A \let\verbatim@addtoline\@gobble
+% ^^A \let\verbatim@processline\relax
+% ^^A \let\verbatim@finish\relax}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % The macros below do no checking to see if something has (not) been defined
+% ^^A % previously. It's `user beware' time.
+% ^^A %
+% ^^A % \begin{macro}{\newcomment}
+% ^^A % \cs{newcomment}\marg{name} creates a new comment environment called
+% ^^A % \meta{name}. This is a generalisation of the original comment code.
+% ^^A % \begin{macrocode}
+% ^^A \newcommand{\newcomment}[1]{%
+% ^^A \expandafter\def\csname #1\endcsname{\@bsphack\setupcomment\verbatim@}%
+% ^^A \expandafter\let\csname end#1\endcsname=\@esphack}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\commentsoff}
+% ^^A % \cs{commentsoff}\marg{name} switches off the \meta{name} comment
+% ^^A % environment by defining the relevent macros to do nothing.
+% ^^A % \begin{macrocode}
+% ^^A \newcommand{\commentsoff}[1]{%
+% ^^A \expandafter\def\csname #1\endcsname{}%
+% ^^A \expandafter\def\csname end#1\endcsname{}}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\commentson}
+% ^^A % \cs{commentson}\marg{name} switches on the \meta{name} comment
+% ^^A % environment. It has to do the same things as \cs{newcomment} does,
+% ^^A % so let \cs{newcomment} do the work.
+% ^^A % \begin{macrocode}
+% ^^A \newcommand{\commentson}[1]{\newcomment{#1}}
+% ^^A
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % We had better supply the \texttt{comment} environment, as promised.
+% ^^A % \begin{macrocode}
+% ^^A \newcomment{comment}
+% ^^A
+% ^^A % \end{macrocode}
+% ^^A %
+% ^^A % PW: That is the end of my changes and extensions to the original
+% ^^A % \texttt{comment} environment code.
+% ^^A %
+% ^^A %
+% ^^A % \subsubsection{The main loop}
+% ^^A %
+% ^^A % Here comes the tricky part:
+% ^^A % During the definition of the macros we need to use the special
+% ^^A % characters \verb?\?, \verb?{?, and \verb?}? not only with their
+% ^^A % normal category codes,
+% ^^A % but also with category code $12$ (other).
+% ^^A % We achieve this by the following trick:
+% ^^A % first we tell \TeX{} that \verb?\?, \verb?{?, and \verb?}?
+% ^^A % are the lowercase versions of \verb?!?, \verb?[?, and \verb?]?.
+% ^^A % Then we replace every occurrence of \verb?\?, \verb?{?, and \verb?}?
+% ^^A % that should be read with category code $12$ by \verb?!?, \verb?[?,
+% ^^A % and \verb?]?, respectively,
+% ^^A % and give the whole list of tokens to \cs{lowercase},
+% ^^A % knowing that category codes are not altered by this primitive!
+% ^^A %
+% ^^A % But first we have ensure that
+% ^^A % \verb?!?, \verb?[?, and \verb?]? themselves have
+% ^^A % the correct category code!
+% ^^A % To allow special settings of these codes we hide their setting in
+% ^^A % the macro \cs{vrb@catcodes}. If it is already defined our new
+% ^^A % definition is skipped.
+% ^^A % \begin{macrocode}
+% ^^A \@ifundefined{vrb@catcodes}%
+% ^^A {\def\vrb@catcodes{%
+% ^^A \catcode`\!12\catcode`\[12\catcode`\]12}}{}
+% ^^A % \end{macrocode}
+% ^^A % This trick allows us to use this code for applications where other
+% ^^A % category codes are in effect.
+% ^^A %
+% ^^A % We start a group to keep the category code changes local.
+% ^^A % \begin{macrocode}
+% ^^A \begingroup
+% ^^A \vrb@catcodes
+% ^^A \lccode`\!=`\\ \lccode`\[=`\{ \lccode`\]=`\}
+% ^^A % \end{macrocode}
+% ^^A % We also need the end-of-line character \verb?^^M?,
+% ^^A % as an active character.
+% ^^A % If we were to simply write \verb?\catcode`\^^M=\active?
+% ^^A % then we would get an unwanted active end of line character
+% ^^A % at the end of every line of the following macro definitions.
+% ^^A % Therefore we use the same trick as above:
+% ^^A % we write a tilde \verb?~? instead of \verb?^^M? and
+% ^^A % pretend that the
+% ^^A % latter is the lowercase variant of the former.
+% ^^A % Thus we have to ensure now that the tilde character has
+% ^^A % category code $13$ (active).
+% ^^A % \begin{macrocode}
+% ^^A \catcode`\~=\active \lccode`\~=`\^^M
+% ^^A % \end{macrocode}
+% ^^A % The use of the \cs{lowercase} primitive leads to one problem:
+% ^^A % the uppercase character `\texttt{C}' needs to be used in the
+% ^^A % code below and its case must be preserved.
+% ^^A % So we add the command:
+% ^^A % \begin{macrocode}
+% ^^A \lccode`\C=`\C
+% ^^A % \end{macrocode}
+% ^^A % Now we start the token list passed to \cs{lowercase}.
+% ^^A % We use the following little trick (proposed by Bernd Raichle):
+% ^^A % The very first token in the token list we give to \cs{lowercase} is
+% ^^A % the \cs{endgroup} primitive. This means that it is processed by
+% ^^A % \TeX{} immediately after \cs{lowercase} has finished its operation,
+% ^^A % thus ending the group started by \cs{begingroup} above. This avoids
+% ^^A % the global definition of all macros.
+% ^^A % \begin{macrocode}
+% ^^A \lowercase{\endgroup
+% ^^A % \end{macrocode}
+% ^^A % \begin{macro}{\verbatim@start}
+% ^^A % The purpose of \cs{verbatim@start} is to check whether there
+% ^^A % are any characters on the same line as the \verb?\begin{verbatim}?
+% ^^A % and to pretend that they were on a line by themselves.
+% ^^A % On the other hand, if there are no characters remaining
+% ^^A % on the current line we shall just find an end of line character.
+% ^^A % \cs{verbatim@start} performs its task by first grabbing the
+% ^^A % following character (its argument).
+% ^^A % This argument is then compared to an active \verb?^^M?,
+% ^^A % the end of line character.
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim@start#1{%
+% ^^A \verbatim@startline
+% ^^A \if\noexpand#1\noexpand~%
+% ^^A % \end{macrocode}
+% ^^A % If this is true we transfer control to \cs{verbatim@}
+% ^^A % to process the next line. We use
+% ^^A % \cs{next} as the macro which will continue the work.
+% ^^A % \begin{macrocode}
+% ^^A \let\next\verbatim@
+% ^^A % \end{macrocode}
+% ^^A % Otherwise, we define \cs{next} to expand to a call
+% ^^A % to \cs{verbatim@} followed by the character just
+% ^^A % read so that it is reinserted into the text.
+% ^^A % This means that those characters remaining on this line
+% ^^A % are handled as if they formed a line by themselves.
+% ^^A % \begin{macrocode}
+% ^^A \else \def\next{\verbatim@#1}\fi
+% ^^A % \end{macrocode}
+% ^^A % Finally we call \cs{next}.
+% ^^A % \begin{macrocode}
+% ^^A \next}%
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\verbatim@}
+% ^^A % The three macros \cs{verbatim@}, \cs{verbatim@@},
+% ^^A % and \cs{verbatim@@@} form the ``main loop'' of the
+% ^^A % \texttt{verbatim} environment.
+% ^^A % The purpose of \cs{verbatim@} is to read exactly one line
+% ^^A % of input.
+% ^^A % \cs{verbatim@@} and \cs{verbatim@@@} work together to
+% ^^A % find out whether the four characters
+% ^^A % \cs{end} (all with category code $12$ (other)) occur in that
+% ^^A % line.
+% ^^A % If so, \cs{verbatim@@@} will call
+% ^^A % \cs{verbatim@test} to check whether this \cs{end} is
+% ^^A % part of \verb?\end{verbatim}? and will terminate the environment
+% ^^A % if this is the case.
+% ^^A % Otherwise we continue as if nothing had happened.
+% ^^A % So let's have a look at the definition of \cs{verbatim@}:
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim@#1~{\verbatim@@#1!end\@nil}%
+% ^^A % \end{macrocode}
+% ^^A % Note that the \verb?!? character will have been replaced by a
+% ^^A % \verb?\? with category code $12$ (other) by the \cs{lowercase}
+% ^^A % primitive governing this code before the definition of this
+% ^^A % macro actually takes place.
+% ^^A % That means that
+% ^^A % it takes the line, puts \cs{end} (four character tokens)
+% ^^A % and \cs{@nil} (one control sequence token) as a
+% ^^A % delimiter behind it, and
+% ^^A % then calls \cs{verbatim@@}.
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\verbatim@@}
+% ^^A % \cs{verbatim@@} takes everything up to the next occurrence of
+% ^^A % the four characters \cs{end} as its argument.
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim@@#1!end{%
+% ^^A % \end{macrocode}
+% ^^A % That means: if they do not occur in the original line, then
+% ^^A % argument \verb?#1? is the
+% ^^A % whole input line, and \cs{@nil} is the next token
+% ^^A % to be processed.
+% ^^A % However, if the four characters \cs{end} are part of the
+% ^^A % original line, then
+% ^^A % \verb?#1? consists of the characters in front of \cs{end},
+% ^^A % and the next token is the following character (always remember
+% ^^A % that the line was lengthened by five tokens).
+% ^^A % Whatever \verb?#1? may be, it is verbatim text,
+% ^^A % so \verb?#1? is added to the line currently built.
+% ^^A % \begin{macrocode}
+% ^^A \verbatim@addtoline{#1}%
+% ^^A % \end{macrocode}
+% ^^A % The next token in the input stream
+% ^^A % is of special interest to us.
+% ^^A % Therefore \cs{futurelet} defines \cs{next} to be equal
+% ^^A % to it before calling \cs{verbatim@@@}.
+% ^^A % \begin{macrocode}
+% ^^A \futurelet\next\verbatim@@@}%
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\verbatim@@@}
+% ^^A % \cs{verbatim@@@} will now read the rest of the tokens on
+% ^^A % the current line,
+% ^^A % up to the final \cs{@nil} token.
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim@@@#1\@nil{%
+% ^^A % \end{macrocode}
+% ^^A % If the first of the above two cases occurred, i.e.\ no
+% ^^A % \cs{end} characters were on that line, \verb?#1? is empty
+% ^^A % and \cs{next} is equal to \cs{@nil}.
+% ^^A % This is easily checked.
+% ^^A % \begin{macrocode}
+% ^^A \ifx\next\@nil
+% ^^A % \end{macrocode}
+% ^^A % If so, this was a simple line.
+% ^^A % We finish it by processing the line we accumulated so far.
+% ^^A % Then we prepare to read the next line.
+% ^^A % \begin{macrocode}
+% ^^A \verbatim@processline
+% ^^A \verbatim@startline
+% ^^A \let\next\verbatim@
+% ^^A % \end{macrocode}
+% ^^A % Otherwise we have to check what follows these \cs{end}
+% ^^A % tokens.
+% ^^A % \begin{macrocode}
+% ^^A \else
+% ^^A % \end{macrocode}
+% ^^A % Before we continue, it's a good idea to stop for a moment
+% ^^A % and remember where we are:
+% ^^A % We have just read the four character tokens \cs{end}
+% ^^A % and must now check whether the name of the environment (surrounded
+% ^^A % by braces) follows.
+% ^^A % To this end we define a macro called \cs{@tempa}
+% ^^A % that reads exactly one character and decides what to do next.
+% ^^A % This macro should do the following: skip spaces until
+% ^^A % it encounters either a left brace or the end of the line.
+% ^^A % But it is important to remember which characters are skipped.
+% ^^A % The \cs{end}\meta{optional spaces}\verb?{? characters
+% ^^A % may be part of the verbatim text, i.e.\ these characters
+% ^^A % must be printed.
+% ^^A %
+% ^^A % Assume for example that the current line contains
+% ^^A % \begin{verbatim*}
+% ^^A % \end {AVeryLongEnvironmentName}
+% ^^A %\end{verbatim*}
+% ^^A % As we shall soon see, the scanning mechanism implemented here
+% ^^A % will not find out that this is text to be printed until
+% ^^A % it has read the right brace.
+% ^^A % Therefore we need a way to accumulate the characters read
+% ^^A % so that we can reinsert them if necessary.
+% ^^A % The token register \cs{@temptokena} is used for this purpose.
+% ^^A %
+% ^^A % Before we do this we have to get rid of the superfluous
+% ^^A % \cs{end} tokens at the end of the line.
+% ^^A % To this end we define a temporary macro whose argument
+% ^^A % is delimited by \verb?\end\@nil? (four character tokens
+% ^^A % and one control sequence token) to be used below
+% ^^A % on the rest of the line, after appending a \cs{@nil} token to it.
+% ^^A % (Note that this token can never appear in \verb?#1?.)
+% ^^A % We use the following definition of
+% ^^A % \cs{@tempa} to get the rest of the line (after the first
+% ^^A % \cs{end}).
+% ^^A % \begin{macrocode}
+% ^^A \def\@tempa##1!end\@nil{##1}%
+% ^^A % \end{macrocode}
+% ^^A % We mentioned already that we use token register
+% ^^A % \cs{@temptokena}
+% ^^A % to remember the characters we skip, in case we need them again.
+% ^^A % We initialize this with the \cs{end} we have thrown away
+% ^^A % in the call to \cs{@tempa}.
+% ^^A % \begin{macrocode}
+% ^^A \@temptokena{!end}%
+% ^^A % \end{macrocode}
+% ^^A % We shall now call \cs{verbatim@test}
+% ^^A % to process the characters
+% ^^A % remaining on the current line.
+% ^^A % But wait a moment: we cannot simply call this macro
+% ^^A % since we have already read the whole line.
+% ^^A % Therefore we have to first expand the macro \cs{@tempa} to insert
+% ^^A % them again after the \cs{verbatim@test} token.
+% ^^A % A \verb?^^M? character is appended to denote the end of the line.
+% ^^A % (Remember that this character comes disguised as a tilde.)
+% ^^A % \begin{macrocode}
+% ^^A \def\next{\expandafter\verbatim@test\@tempa#1\@nil~}%
+% ^^A % \end{macrocode}
+% ^^A % That's almost all, but we still have to
+% ^^A % now call \cs{next} to do the work.
+% ^^A % \begin{macrocode}
+% ^^A \fi \next}%
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A %
+% ^^A % \begin{macro}{\verbatim@test}
+% ^^A % We define \cs{verbatim@test} to investigate every token
+% ^^A % in turn.
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim@test#1{%
+% ^^A % \end{macrocode}
+% ^^A % First of all we set \cs{next} equal to \cs{verbatim@test}
+% ^^A % in case this macro must call itself recursively in order to
+% ^^A % skip spaces.
+% ^^A % \begin{macrocode}
+% ^^A \let\next\verbatim@test
+% ^^A % \end{macrocode}
+% ^^A % We have to distinguish four cases:
+% ^^A % \begin{enumerate}
+% ^^A % \item The next token is a \verb?^^M?, i.e.\ we reached
+% ^^A % the end of the line. That means that nothing
+% ^^A % special was found.
+% ^^A % Note that we use \cs{if} for the following
+% ^^A % comparisons so that the category code of the
+% ^^A % characters is irrelevant.
+% ^^A % \begin{macrocode}
+% ^^A \if\noexpand#1\noexpand~%
+% ^^A % \end{macrocode}
+% ^^A % We add the characters accumulated in token register
+% ^^A % \cs{@temptokena} to the current line. Since
+% ^^A % \cs{verbatim@addtoline} does not expand its argument,
+% ^^A % we have to do the expansion at this point. Then we
+% ^^A % \cs{let} \cs{next} equal to \cs{verbatim@}
+% ^^A % to prepare to read the next line.
+% ^^A % \begin{macrocode}
+% ^^A \expandafter\verbatim@addtoline
+% ^^A \expandafter{\the\@temptokena}%
+% ^^A \verbatim@processline
+% ^^A \verbatim@startline
+% ^^A \let\next\verbatim@
+% ^^A % \end{macrocode}
+% ^^A % \item A space character follows.
+% ^^A % This is allowed, so we add it to \cs{@temptokena}
+% ^^A % and continue.
+% ^^A % \begin{macrocode}
+% ^^A \else \if\noexpand#1
+% ^^A \@temptokena\expandafter{\the\@temptokena#1}%
+% ^^A % \end{macrocode}
+% ^^A % \item An open brace follows.
+% ^^A % This is the most interesting case.
+% ^^A % We must now collect characters until we read the closing
+% ^^A % brace and check whether they form the environment name.
+% ^^A % This will be done by \cs{verbatim@testend}, so here
+% ^^A % we let \cs{next} equal this macro.
+% ^^A % Again we will process the rest of the line, character
+% ^^A % by character.
+% ^^A % The characters forming the name of the environment will
+% ^^A % be accumulated in \cs{@tempc}.
+% ^^A % We initialize this macro to expand to nothing.
+% ^^A % \begin{macrocode}
+% ^^A \else \if\noexpand#1\noexpand[%
+% ^^A \let\@tempc\@empty
+% ^^A \let\next\verbatim@testend
+% ^^A % \end{macrocode}
+% ^^A % Note that the \verb?[? character will be a \verb?{? when
+% ^^A % this macro is defined.
+% ^^A % \item Any other character means that the \cs{end} was part
+% ^^A % of the verbatim text.
+% ^^A % Add the characters to the current line and prepare to call
+% ^^A % \cs{verbatim@} to process the rest of the line.
+% ^^A % \begin{macrocode}
+% ^^A \else
+% ^^A \expandafter\verbatim@addtoline
+% ^^A \expandafter{\the\@temptokena}%
+% ^^A \def\next{\verbatim@#1}%
+% ^^A \fi\fi\fi
+% ^^A % \end{macrocode}
+% ^^A % \end{enumerate}
+% ^^A % The last thing this macro does is to call \cs{next}
+% ^^A % to continue processing.
+% ^^A % \begin{macrocode}
+% ^^A \next}%
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\verbatim@testend}
+% ^^A % \cs{verbatim@testend} is called when
+% ^^A % \cs{end}\meta{optional spaces}\verb?{? was seen.
+% ^^A % Its task is to scan everything up to the next \verb?}?
+% ^^A % and to call \cs{verbatim@@testend}.
+% ^^A % If no \verb?}? is found it must reinsert the characters it read
+% ^^A % and return to \cs{verbatim@}.
+% ^^A % The following definition is similar to that of
+% ^^A % \cs{verbatim@test}:
+% ^^A % it takes the next character and decides what to do.
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim@testend#1{%
+% ^^A % \end{macrocode}
+% ^^A % Again, we have four cases:
+% ^^A % \begin{enumerate}
+% ^^A % \item \verb?^^M?: As no \verb?}? is found in the current line,
+% ^^A % add the characters to the buffer. To avoid a
+% ^^A % complicated construction for expanding
+% ^^A % \cs{@temptokena}
+% ^^A % and \cs{@tempc} we do it in two steps. Then we
+% ^^A % continue with \cs{verbatim@} to process the
+% ^^A % next line.
+% ^^A % \begin{macrocode}
+% ^^A \if\noexpand#1\noexpand~%
+% ^^A \expandafter\verbatim@addtoline
+% ^^A \expandafter{\the\@temptokena[}%
+% ^^A \expandafter\verbatim@addtoline
+% ^^A \expandafter{\@tempc}%
+% ^^A \verbatim@processline
+% ^^A \verbatim@startline
+% ^^A \let\next\verbatim@
+% ^^A % \end{macrocode}
+% ^^A % \item \verb?}?: Call \cs{verbatim@@testend} to check
+% ^^A % if this is the right environment name.
+% ^^A % \begin{macrocode}
+% ^^A \else\if\noexpand#1\noexpand]%
+% ^^A \let\next\verbatim@@testend
+% ^^A % \end{macrocode}
+% ^^A % \item \verb?\?: This character must not occur in the name of
+% ^^A % an environment. Thus we stop collecting characters.
+% ^^A % In principle, the same argument would apply to other
+% ^^A % characters as well, e.g., \verb?{?.
+% ^^A % However, \verb?\? is a special case, since it may be
+% ^^A % the first character of \cs{end}. This means that
+% ^^A % we have to look again for
+% ^^A % \cs{end}\marg{environment name}
+% ^^A % Note that we prefixed the \verb?!? by a \cs{noexpand}
+% ^^A % primitive, to protect ourselves against it being an
+% ^^A % active character.
+% ^^A % \begin{macrocode}
+% ^^A \else\if\noexpand#1\noexpand!%
+% ^^A \expandafter\verbatim@addtoline
+% ^^A \expandafter{\the\@temptokena[}%
+% ^^A \expandafter\verbatim@addtoline
+% ^^A \expandafter{\@tempc}%
+% ^^A \def\next{\verbatim@!}%
+% ^^A % \end{macrocode}
+% ^^A % \item Any other character: collect it and continue.
+% ^^A % We cannot use \cs{edef} to define \cs{@tempc}
+% ^^A % since its replacement text might contain active
+% ^^A % character tokens.
+% ^^A % \begin{macrocode}
+% ^^A \else \expandafter\def\expandafter\@tempc\expandafter
+% ^^A {\@tempc#1}\fi\fi\fi
+% ^^A % \end{macrocode}
+% ^^A % \end{enumerate}
+% ^^A % As before, the macro ends by calling itself, to
+% ^^A % process the next character if appropriate.
+% ^^A % \begin{macrocode}
+% ^^A \next}%
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\verbatim@@testend}
+% ^^A % Unlike the previous macros \cs{verbatim@@testend} is simple:
+% ^^A % it has only to check if the \cs{end}\marg{...}
+% ^^A % matches the corresponding \cs{begin}\marg{...}
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim@@testend{%
+% ^^A % \end{macrocode}
+% ^^A % We use \cs{next} again to define the things that are
+% ^^A % to be done.
+% ^^A % Remember that the name of the current environment is
+% ^^A % held in \cs{@currenvir}, the characters accumulated
+% ^^A % by \cs{verbatim@testend} are in \cs{@tempc}.
+% ^^A % So we simply compare these and prepare to execute
+% ^^A % \cs{end}\marg{current environment}
+% ^^A % macro if they match.
+% ^^A % Before we do this we call \cs{verbatim@finish} to process
+% ^^A % the last line.
+% ^^A % We define \cs{next} via \cs{edef} so that
+% ^^A % \cs{@currenvir} is replaced by its expansion.
+% ^^A % Therefore we need \cs{noexpand} to inhibit the expansion
+% ^^A % of \cs{end} at this point.
+% ^^A % \begin{macrocode}
+% ^^A \ifx\@tempc\@currenvir
+% ^^A \verbatim@finish
+% ^^A \edef\next{\noexpand\end{\@currenvir}%
+% ^^A % \end{macrocode}
+% ^^A % Without this trick the \cs{end} command would not be able
+% ^^A % to correctly check whether its argument matches the name of
+% ^^A % the current environment and you'd get an
+% ^^A % interesting \LaTeX{} error message such as:
+% ^^A % \begin{verbatim}
+% ^^A %! \begin{verbatim*} ended by \end{verbatim*}.
+% ^^A %\end{verbatim}
+% ^^A % But what do we do with the rest of the characters, those
+% ^^A % that remain on that line?
+% ^^A % We call \cs{verbatim@rescan} to take care of that.
+% ^^A % Its first argument is the name of the environment just
+% ^^A % ended, in case we need it again.
+% ^^A % \cs{verbatim@rescan} takes the list of characters to be
+% ^^A % reprocessed as its second argument.
+% ^^A % (This token list was inserted after the current macro
+% ^^A % by \cs{verbatim@@@}.)
+% ^^A % Since we are still in an \cs{edef} we protect it
+% ^^A % by means of\cs{noexpand}.
+% ^^A % \begin{macrocode}
+% ^^A \noexpand\verbatim@rescan{\@currenvir}}%
+% ^^A % \end{macrocode}
+% ^^A % If the names do not match, we reinsert everything read up
+% ^^A % to now and prepare to call \cs{verbatim@} to process
+% ^^A % the rest of the line.
+% ^^A % \begin{macrocode}
+% ^^A \else
+% ^^A \expandafter\verbatim@addtoline
+% ^^A \expandafter{\the\@temptokena[}%
+% ^^A \expandafter\verbatim@addtoline
+% ^^A \expandafter{\@tempc]}%
+% ^^A \let\next\verbatim@
+% ^^A \fi
+% ^^A % \end{macrocode}
+% ^^A % Finally we call \cs{next}.
+% ^^A % \begin{macrocode}
+% ^^A \next}%
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\verbatim@rescan}
+% ^^A % In principle \cs{verbatim@rescan} could be used to
+% ^^A % analyse the characters remaining after the \verb?\end{...}?
+% ^^A % command and pretend that these were read
+% ^^A % ``properly'', assuming ``standard'' category codes are in
+% ^^A % force.\footnote{Remember that they were all read with
+% ^^A % category codes $11$ (letter) and $12$ (other) so
+% ^^A % that control sequences are not recognized as such.}
+% ^^A % But this is not always possible (when there are unmatched
+% ^^A % curly braces in the rest of the line).
+% ^^A % Besides, we think that this is not worth the effort:
+% ^^A % After a \texttt{verbatim} or \texttt{verbatim*} environment
+% ^^A % a new line in the output is begun anyway,
+% ^^A % and an \verb?\end{comment}? can easily be put on a line by itself.
+% ^^A % So there is no reason why there should be any text here.
+% ^^A % For the benefit of the user who did put something there
+% ^^A % (a comment, perhaps)
+% ^^A % we simply issue a warning and drop them.
+% ^^A % The method of testing is explained in Appendix~D, p.\ 376 of
+% ^^A % the \TeX{}book. We use \verb?^^M? instead of the \verb?!?
+% ^^A % character used there
+% ^^A % since this is a character that cannot appear in \verb?#1?.
+% ^^A % The two \cs{noexpand} primitives are necessary to avoid
+% ^^A % expansion of active characters and macros.
+% ^^A %
+% ^^A % One extra subtlety should be noted here: remember that
+% ^^A % the token list we are currently building will first be
+% ^^A % processed by the \cs{lowercase} primitive before \TeX{}
+% ^^A % carries out the definitions.
+% ^^A % This means that the `\texttt{C}' character in the
+% ^^A % argument to the \cs{@warning} macro must be protected against
+% ^^A % being changed to `\texttt{c}'. That's the reason why we added the
+% ^^A % \verb?\lccode`\C=`\C? assignment above.
+% ^^A % We can now finish the argument to \cs{lowercase} as well as the
+% ^^A % group in which the category codes were changed.
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim@rescan#1#2~{\if\noexpand~\noexpand#2~\else
+% ^^A \@warning{Characters dropped after `\string\end{#1}'}\fi}}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \subsubsection{The \cs{verbatiminput} command}
+% ^^A %
+% ^^A % \begin{macro}{\verbatim@in@stream}
+% ^^A % We begin by allocating an input stream (out of the 16 available
+% ^^A % input streams).
+% ^^A % \begin{macrocode}
+% ^^A \newread\verbatim@in@stream
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\verbatim@readfile}
+% ^^A % The macro \cs{verbatim@readfile} encloses the main loop by calls to
+% ^^A % the macros \cs{verbatim@startline} and \cs{verbatim@finish},
+% ^^A % respectively. This makes sure
+% ^^A % that the user can initialize and finish the command when the file
+% ^^A % is empty or doesn't exist. The \texttt{verbatim} environment has a
+% ^^A % similar behaviour when called with an empty text.
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim@readfile#1{%
+% ^^A \verbatim@startline
+% ^^A % \end{macrocode}
+% ^^A % When the file is not found we issue a warning.
+% ^^A % \begin{macrocode}
+% ^^A \openin\verbatim@in@stream #1\relax
+% ^^A \ifeof\verbatim@in@stream
+% ^^A \typeout{No file #1.}%
+% ^^A \else
+% ^^A % \end{macrocode}
+% ^^A % At this point we pass the name of the file to \cs{@addtofilelist}
+% ^^A % so that its appears appears in the output of a \cs{listfiles}
+% ^^A % command.
+% ^^A % In addition, we use \cs{ProvidesFile} to make a log entry in the
+% ^^A % transcript file and to distinguish files read in via
+% ^^A % \cs{verbatiminput} from others.
+% ^^A % \begin{macrocode}
+% ^^A \@addtofilelist{#1}%
+% ^^A \ProvidesFile{#1}[(verbatim)]%
+% ^^A % \end{macrocode}
+% ^^A % While reading from the file it is useful to switch off the
+% ^^A % recognition of the end-of-line character. This saves us stripping
+% ^^A % off spaces from the contents of the line.
+% ^^A % \begin{macrocode}
+% ^^A \expandafter\endlinechar\expandafter\m@ne
+% ^^A \expandafter\verbatim@read@file
+% ^^A \expandafter\endlinechar\the\endlinechar\relax
+% ^^A \closein\verbatim@in@stream
+% ^^A \fi
+% ^^A \verbatim@finish
+% ^^A }
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\verbatim@read@file}
+% ^^A % All the work is done in \cs{verbatim@read@file}. It reads the input
+% ^^A % file line by line and recursively calls itself until the end of
+% ^^A % the file.
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim@read@file{%
+% ^^A \read\verbatim@in@stream to\next
+% ^^A \ifeof\verbatim@in@stream
+% ^^A \else
+% ^^A % \end{macrocode}
+% ^^A % For each line we call \cs{verbatim@addtoline} with the contents of
+% ^^A % the line. \hskip0pt plus 3cm\penalty0\hskip0pt plus -3cm
+% ^^A % \cs{verbatim@processline} is called next.
+% ^^A % \begin{macrocode}
+% ^^A \expandafter\verbatim@addtoline\expandafter{\next}%
+% ^^A \verbatim@processline
+% ^^A % \end{macrocode}
+% ^^A % After processing the line we call \cs{verbatim@startline} to
+% ^^A % initialize all before we read the next line.
+% ^^A % \begin{macrocode}
+% ^^A \verbatim@startline
+% ^^A % \end{macrocode}
+% ^^A % Without \cs{expandafter} each call of \cs{verbatim@read@file} uses
+% ^^A % space in \TeX's input stack.\footnote{A standard \TeX\ would
+% ^^A % report an overflow error if you try to read a file with more than
+% ^^A % ca.\ 200~lines. The same error occurs if the first line of code
+% ^^A % in \S 390 of \textsl{``TeX: The Program''\/} is missing.}
+% ^^A % \begin{macrocode}
+% ^^A \expandafter\verbatim@read@file
+% ^^A \fi
+% ^^A }
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A %
+% ^^A % \begin{macro}{\verbatiminput}
+% ^^A % \cs{verbatiminput} first starts a group to keep font and category
+% ^^A % changes local.
+% ^^A % Then it calls the macro \cs{verbatim@input} with additional
+% ^^A % arguments, depending on whether an asterisk follows.
+% ^^A %
+% ^^A % PW. I added the TAB checking code.
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatiminput{\begingroup
+% ^^A \ift@bs
+% ^^A \def\verbatim@processline{\tabverbatim@processline}%
+% ^^A \fi
+% ^^A \@ifstar{\verbatim@input{\@maybeobeytabs}}%
+% ^^A {\verbatim@input{\frenchspacing\@vobeyspaces\@maybeobeytabs}}}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\verbatim@input}
+% ^^A % \cs{verbatim@input} first checks whether the file exists, using
+% ^^A % the standard macro cs{IfFileExists} which leaves the name of the
+% ^^A % file found in \cs{@filef@und}.
+% ^^A % Then everything is set up as in the \cs{verbatim} macro.
+% ^^A % \begin{macrocode}
+% ^^A \def\verbatim@input#1#2{%
+% ^^A \IfFileExists {#2}{\@verbatim #1\relax
+% ^^A % \end{macrocode}
+% ^^A % Then it reads in the file, finishes off the \texttt{trivlist}
+% ^^A % environment started by \cs{@verbatim} and closes the group.
+% ^^A % This restores everything to its normal settings.
+% ^^A % \begin{macrocode}
+% ^^A \verbatim@readfile{\@filef@und}\endtrivlist\endgroup\@doendpe}%
+% ^^A % \end{macrocode}
+% ^^A % If the file is not found a more or less helpful message is
+% ^^A % printed. The final \cs{endgroup} is needed to close the group
+% ^^A % started in \cs{verbatiminput} above.
+% ^^A % \begin{macrocode}
+% ^^A {\typeout {No file #2.}\endgroup}}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \textit{That completes my borrowings from \Lpack{verbatim}.}
+% ^^A %
+% ^^A
+% ^^A % ^^A end embedded verbatim
+% ^^A
+% ^^A % The next bunch of code implements wrapping verbatim lines so they, hopefully,
+% ^^A % stay within the typeblock.
+% ^^A %
+% ^^A % \begin{macro}{\verbatimindent}
+% ^^A % \begin{macro}{\verbatimbreakchar}
+% ^^A % \begin{macro}{\setverbatimbreak}
+% ^^A % The length \cs{verbatimindent} is the distance continuation lines are indented
+% ^^A % from the left margin. \cs{verbatimbreakchar} is the character to indicate
+% ^^A % a wrapped line.
+% ^^A % \begin{macrocode}
+% ^^A \newlength{\verbatimindent}
+% ^^A \setlength{\verbatimindent}{3em}
+% ^^A \newcommand*{\verbatimbreakchar}{\char`\%}
+% ^^A \newcommand*{\setverbatimbreak}{%
+% ^^A \vspace*{-\baselineskip}%
+% ^^A \def\@xobeysp{~\discretionary{\verbatimbreakchar}%
+% ^^A {\kern\verbatimindent}{}}%
+% ^^A }
+% ^^A
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A % \end{macro}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % ^^A \begin{macro}{\wrappingon}
+% ^^A % \begin{macro}{\wrapright}
+% ^^A % \begin{macro}{\wrappingoff}
+% ^^A % \cs{wrappingon} and \cs{wrappingoff} enable/prohibit wrapping. The
+% ^^A % default is \cs{wrappingoff}.
+% ^^A %
+% ^^A % The macro
+% ^^A % \cs{wrapright} is used to set paragraph skips; without raggedright the
+% ^^A % lines
+% ^^A % may break at the first space \emph{outside} the text area. However,
+% ^^A % Paul (\url{paulaugust2003@yahoo.com}) found that wrapped verbatims
+% ^^A % in a list (e.g., \texttt{itemize}) were not indented although regular
+% ^^A % verbatims were indented. \cs{raggedwrap} is a variation on \cs{raggedright}
+% ^^A % (\cs{leftskip} is set to \cs{@totalleftmargin} instead of 0pt), and seems
+% ^^A % to have fixed the problem with the original code which used
+% ^^A % \cs{raggedright}.
+% ^^A % \changes{v1.61803}{2008/01/30}{Added \cs{raggedwrap} (mempatch v4.4)}
+% ^^A % \changes{v1.61803398}{2009/07/18}{Added bidi support to \cs{raggedwrap}}
+% ^^A % \begin{macrocode}
+% ^^A % \newcommand*{\raggedwrap}{%
+% ^^A % \@rightskip\@flushglue
+% ^^A % %%% \rightskip\@rightskip
+% ^^A % \memRTLrightskip\@rightskip
+% ^^A % %%% \leftskip\@totalleftmargin
+% ^^A % \memRTLleftskip\@totalleftmargin
+% ^^A % \parindent\ragrparindent}
+% ^^A \newcommand*{\wrappingon}{%
+% ^^A \def\@xobeysp{~\discretionary{\verbatimbreakchar}%
+% ^^A {\kern\verbatimindent}{}}%
+% ^^A \def\wrapright{\raggedwrap}}
+% ^^A \newcommand*{\wrappingoff}{%
+% ^^A \def\@xobeysp{\leavevmode\penalty\@M\ }%
+% ^^A \def\wrapright{}}
+% ^^A \wrappingoff
+% ^^A
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A % \end{macro}
+% ^^A % \end{macro}
+% ^^A % ^^A \end{macro}
+% ^^A %
+% ^^A % \noindent{\color{red}\rule\textwidth{5mm}}
+%
% \subsection{Writing and boxing verbatim}
%
% This bunch of code is from the \Lpack{moreverb} package.
@@ -28926,152 +29354,180 @@
\fbox{\box0}% <<<=== change here for centering,...
\endgroup}
% \end{macrocode}
+
% \end{environment}
%
%
%
% \subsection{The shortvrb package}
%
-% The following is the \Lpack{shortvrb} package code (from \texttt{doc.dtx}
-% by Frank Mittelbach). It has been so useful to me that I wanted
-% to include it in the class.
-%
-% CODE AND COMMENTARY IS BY FRANK MITTELBACH
+%
+% \changes{v3.8.2}{2024/01/10}{Replaced embedded copy if
+% \Lpack{shortvrb} with loading the package. The embedded code is just
+% outcommented for now.}
%
-% \begin{macro}{\MakeShortVerb}
-% \begin{macrocode}
-\def\MakeShortVerb#1{%
- \expandafter\ifx\csname cc\string#1\endcsname\relax
-% \end{macrocode}
-% \begin{macrocode}
- \@shortvrbinfo{Made }{#1}%
- \add@special{#1}%
-% \end{macrocode}
-% Then the character's current catcode is stored in \verb?\cc\?\meta{c}.
-% \begin{macrocode}
- \expandafter
- \xdef\csname cc\string#1\endcsname{\the\catcode`#1}%
-% \end{macrocode}
-% The character is spliced into the definition using the same trick as
-% used in \cs{verb} (for instance), having activated \verb?~? in a group.
-% \begin{macrocode}
- \begingroup
- \catcode`\~\active \lccode`\~`#1%
- \lowercase{%
-% \end{macrocode}
-% The character's old meaning is recorded in \verb?\ac\?\meta{c} prior to
-% assigning it a new one.
-% \begin{macrocode}
- \global\expandafter\let
- \csname ac\string#1\endcsname~%
- \gdef~{\verb~}}%
- \endgroup
-% \end{macrocode}
-% Finally the character is made active.
-% \begin{macrocode}
- \global\catcode`#1\active
-% \end{macrocode}
-% If we suspect that \meta{c} is already a short reference, we tell
-% the user. Now he or she is responsible if anything goes wrong\,\dots
-% \begin{macrocode}
- \else
-% \end{macrocode}
-% \begin{macrocode}
- \@shortvrbinfo\@empty{#1 already}%
- \fi}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\DeleteShortVerb}
-% Here's the means of undoing a \cs{MakeShortVerb}, for instance in a
-% region where you need to use the character outside a verbatim
-% environment. It arranges for \cs{dospecials} and \cs{@sanitize} to be
-% altered appropriately, restores the saved catcode and, if necessary,
-% the character's meaning (as stored by
-% \cs{MakeShortVerb}). If the catcode wasn't stored in
-% \verb?\cc\?\meta{c} (by \cs{MakeShortVerb}) the command is silently
-% ignored.
-% \begin{macrocode}
-\def\DeleteShortVerb#1{%
- \expandafter\ifx\csname cc\string#1\endcsname\relax
- \else
-% \end{macrocode}
-% \begin{macrocode}
- \@shortvrbinfo{Deleted }{#1 as}%
- \rem@special{#1}%
- \global\catcode`#1\csname cc\string#1\endcsname
-% \end{macrocode}
-% We must not forget to reset \verb?\cc\?\meta{c}, otherwise the check in
-% \cs{MakeShortVerb} for a repeated definition will not work.
-% \begin{macrocode}
- \global \expandafter\let \csname cc\string#1\endcsname \relax
- \ifnum\catcode`#1=\active
- \begingroup
- \catcode`\~\active \lccode`\~`#1%
- \lowercase{%
- \global\expandafter\let\expandafter~%
- \csname ac\string#1\endcsname}%
- \endgroup \fi \fi}
-% \end{macrocode}
-% \end{macro}
+% In earlier versions of the class we had an embedded copy of the code
+% from the \Lpack{shortvrb} package, as the functionality is very
+% useful.
%
-% \begin{macro}{\@shortvrbinfo}
-% Helper function for info messages.
-% \begin{macrocode}
-\def\@shortvrbinfo#1#2{%
- \ClassInfo{memoir}{%
- #1\expandafter\@gobble\string#2 a short reference
- for \string\verb}}
-% \end{macrocode}
-% \end{macro}
+% As of 2024 we load the package instead. This also gives us access to
+% the starred version of \verb!\MakeShortVerb!. For details see
+% \cite{SHORTVRB}.
%
-% \begin{macro}{\add@special}
-% This helper macro adds its argument to the
-% \cs{dospecials} macro which is conventionally used by verbatim macros
-% to alter the catcodes of the currently active characters. We need
-% to add \verb?\do\?\meta{c} to the expansion of \cs{dospecials} after
-% removing the character if it was already there to avoid multiple
-% copies building up should \cs{MakeShortVerb} not be balanced by
-% \cs{DeleteShortVerb} (in case anything that uses \cs{dospecials} cares
-% about repetitions).
-% \begin{macrocode}
-\def\add@special#1{%
- \rem@special{#1}%
- \expandafter\gdef\expandafter\dospecials\expandafter
- {\dospecials \do #1}%
-% \end{macrocode}
-% Similarly we have to add \verb?\@makeother\?\meta{c} to \cs{@sanitize}
-% (which is used in things like \cs{index} to re-catcode all special
-% characters except braces).
-% \begin{macrocode}
- \expandafter\gdef\expandafter\@sanitize\expandafter
- {\@sanitize \@makeother #1}}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\rem@special}
-% The inverse of cs{add@special} is slightly trickier. \cs{do} is
-% re-defined to expand to nothing if its argument is the character of
-% interest, otherwise to expand simply to the argument. We can then
-% re-define \cs{dospecials} to be the expansion of itself. The space
-% after \verb?=`##1? prevents an expansion to \cs{relax}!
-% \begin{macrocode}
-\def\rem@special#1{%
- \def\do##1{%
- \ifnum`#1=`##1 \else \noexpand\do\noexpand##1\fi}%
- \xdef\dospecials{\dospecials}%
-% \end{macrocode}
-% Fixing \cs{@sanitize} is the same except that we need to re-define
-% \cs{@makeother} which obviously needs to be done in a group.
+% It adds the following macros
+% \begin{verbatim}
+% \MakeShortVerb
+% \MakeShortVerb*
+% \DeleteShortVerb
+% \end{verbatim}
% \begin{macrocode}
- \begingroup
- \def\@makeother##1{%
- \ifnum`#1=`##1 \else \noexpand\@makeother\noexpand##1\fi}%
- \xdef\@sanitize{\@sanitize}%
- \endgroup}
+ % load shortvrb instead of embedding it
+\RequirePackage{shortvrb}
+
% \end{macrocode}
-% \end{macro}
-%
-% END OF MITTELBACH CODE AND COMMENTARY.
-%
+%
+% ^^A % The following is the \Lpack{shortvrb} package code (from \texttt{doc.dtx}
+% ^^A % by Frank Mittelbach). It has been so useful to me that I wanted
+% ^^A % to include it in the class.
+% ^^A %
+% ^^A % CODE AND COMMENTARY IS BY FRANK MITTELBACH
+% ^^A % start shortvrb code
+% ^^A %
+% ^^A % \begin{macro}{\MakeShortVerb}
+% ^^A % \begin{macrocode}
+% ^^A \def\MakeShortVerb#1{%
+% ^^A \expandafter\ifx\csname cc\string#1\endcsname\relax
+% ^^A % \end{macrocode}
+% ^^A % \begin{macrocode}
+% ^^A \@shortvrbinfo{Made }{#1}%
+% ^^A \add@special{#1}%
+% ^^A % \end{macrocode}
+% ^^A % Then the character's current catcode is stored in \verb?\cc\?\meta{c}.
+% ^^A % \begin{macrocode}
+% ^^A \expandafter
+% ^^A \xdef\csname cc\string#1\endcsname{\the\catcode`#1}%
+% ^^A % \end{macrocode}
+% ^^A % The character is spliced into the definition using the same trick as
+% ^^A % used in \cs{verb} (for instance), having activated \verb?~? in a group.
+% ^^A % \begin{macrocode}
+% ^^A \begingroup
+% ^^A \catcode`\~\active \lccode`\~`#1%
+% ^^A \lowercase{%
+% ^^A % \end{macrocode}
+% ^^A % The character's old meaning is recorded in \verb?\ac\?\meta{c} prior to
+% ^^A % assigning it a new one.
+% ^^A % \begin{macrocode}
+% ^^A \global\expandafter\let
+% ^^A \csname ac\string#1\endcsname~%
+% ^^A \gdef~{\verb~}}%
+% ^^A \endgroup
+% ^^A % \end{macrocode}
+% ^^A % Finally the character is made active.
+% ^^A % \begin{macrocode}
+% ^^A \global\catcode`#1\active
+% ^^A % \end{macrocode}
+% ^^A % If we suspect that \meta{c} is already a short reference, we tell
+% ^^A % the user. Now he or she is responsible if anything goes wrong\,\dots
+% ^^A % \begin{macrocode}
+% ^^A \else
+% ^^A % \end{macrocode}
+% ^^A % \begin{macrocode}
+% ^^A \@shortvrbinfo\@empty{#1 already}%
+% ^^A \fi}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A % \begin{macro}{\DeleteShortVerb}
+% ^^A % Here's the means of undoing a \cs{MakeShortVerb}, for instance in a
+% ^^A % region where you need to use the character outside a verbatim
+% ^^A % environment. It arranges for \cs{dospecials} and \cs{@sanitize} to be
+% ^^A % altered appropriately, restores the saved catcode and, if necessary,
+% ^^A % the character's meaning (as stored by
+% ^^A % \cs{MakeShortVerb}). If the catcode wasn't stored in
+% ^^A % \verb?\cc\?\meta{c} (by \cs{MakeShortVerb}) the command is silently
+% ^^A % ignored.
+% ^^A % \begin{macrocode}
+% ^^A \def\DeleteShortVerb#1{%
+% ^^A \expandafter\ifx\csname cc\string#1\endcsname\relax
+% ^^A \else
+% ^^A % \end{macrocode}
+% ^^A % \begin{macrocode}
+% ^^A \@shortvrbinfo{Deleted }{#1 as}%
+% ^^A \rem@special{#1}%
+% ^^A \global\catcode`#1\csname cc\string#1\endcsname
+% ^^A % \end{macrocode}
+% ^^A % We must not forget to reset \verb?\cc\?\meta{c}, otherwise the check in
+% ^^A % \cs{MakeShortVerb} for a repeated definition will not work.
+% ^^A % \begin{macrocode}
+% ^^A \global \expandafter\let \csname cc\string#1\endcsname \relax
+% ^^A \ifnum\catcode`#1=\active
+% ^^A \begingroup
+% ^^A \catcode`\~\active \lccode`\~`#1%
+% ^^A \lowercase{%
+% ^^A \global\expandafter\let\expandafter~%
+% ^^A \csname ac\string#1\endcsname}%
+% ^^A \endgroup \fi \fi}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\@shortvrbinfo}
+% ^^A % Helper function for info messages.
+% ^^A % \begin{macrocode}
+% ^^A \def\@shortvrbinfo#1#2{%
+% ^^A \ClassInfo{memoir}{%
+% ^^A #1\expandafter\@gobble\string#2 a short reference
+% ^^A for \string\verb}}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % \begin{macro}{\add@special}
+% ^^A % This helper macro adds its argument to the
+% ^^A % \cs{dospecials} macro which is conventionally used by verbatim macros
+% ^^A % to alter the catcodes of the currently active characters. We need
+% ^^A % to add \verb?\do\?\meta{c} to the expansion of \cs{dospecials} after
+% ^^A % removing the character if it was already there to avoid multiple
+% ^^A % copies building up should \cs{MakeShortVerb} not be balanced by
+% ^^A % \cs{DeleteShortVerb} (in case anything that uses \cs{dospecials} cares
+% ^^A % about repetitions).
+% ^^A % \begin{macrocode}
+% ^^A \def\add@special#1{%
+% ^^A \rem@special{#1}%
+% ^^A \expandafter\gdef\expandafter\dospecials\expandafter
+% ^^A {\dospecials \do #1}%
+% ^^A % \end{macrocode}
+% ^^A % Similarly we have to add \verb?\@makeother\?\meta{c} to \cs{@sanitize}
+% ^^A % (which is used in things like \cs{index} to re-catcode all special
+% ^^A % characters except braces).
+% ^^A % \begin{macrocode}
+% ^^A \expandafter\gdef\expandafter\@sanitize\expandafter
+% ^^A {\@sanitize \@makeother #1}}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A % \begin{macro}{\rem@special}
+% ^^A % The inverse of cs{add@special} is slightly trickier. \cs{do} is
+% ^^A % re-defined to expand to nothing if its argument is the character of
+% ^^A % interest, otherwise to expand simply to the argument. We can then
+% ^^A % re-define \cs{dospecials} to be the expansion of itself. The space
+% ^^A % after \verb?=`##1? prevents an expansion to \cs{relax}!
+% ^^A % \begin{macrocode}
+% ^^A \def\rem@special#1{%
+% ^^A \def\do##1{%
+% ^^A \ifnum`#1=`##1 \else \noexpand\do\noexpand##1\fi}%
+% ^^A \xdef\dospecials{\dospecials}%
+% ^^A % \end{macrocode}
+% ^^A % Fixing \cs{@sanitize} is the same except that we need to re-define
+% ^^A % \cs{@makeother} which obviously needs to be done in a group.
+% ^^A % \begin{macrocode}
+% ^^A \begingroup
+% ^^A \def\@makeother##1{%
+% ^^A \ifnum`#1=`##1 \else \noexpand\@makeother\noexpand##1\fi}%
+% ^^A \xdef\@sanitize{\@sanitize}%
+% ^^A \endgroup}
+% ^^A % \end{macrocode}
+% ^^A % \end{macro}
+% ^^A %
+% ^^A % end shortvrb code
+% ^^A % END OF MITTELBACH CODE AND COMMENTARY.
+%
% \subsection{General verbatim boxing and line numbering}
%
% A while ago I wrote a package that I never released. Here it is
@@ -29284,6 +29740,7 @@
\fi
% \end{macrocode}
% \begin{macro}{\verbatim@processline}
+% \changes{v3.8.2}{2024/01/25}{Removed tab support}
% \begin{macrocode}
\def\verbatim@processline{\leavevmode
\b@vdocount%
@@ -29291,11 +29748,11 @@
\linewidth-.8\p@ \@@line
{\b@vdooutside\strut\kern\bvboxsep%
\b@vdoinside%
- \ift@bs
- \tabverbatim@processline
- \else
+ %\ift@bs
+ % \tabverbatim@processline
+ %\else
\the\verbatim@line
- \fi
+ %\fi
\hss}%
\kern\bvboxsep}\bvrightsidehook\par}}
@@ -29306,14 +29763,16 @@
%
% \begin{macro}{\setupbox@verb}
% Use a macro for the second main part of DA's code, and integrate it
-% with the other verbatim codes (e.g., include \cs{@maybeobeytags}).
+% with the other verbatim codes.
+%
+% \changes{v3.8.2}{2024/01/25}{Removed \cs{@maybeobeytags}}
% \begin{macrocode}
\newcommand{\setupbox@verb}{%
\leftskip\z@skip \rightskip\z@skip
\interlinepenalty\boxverbflag
\parfillskip\z@ plus\p@ minus\p@
\lineskip-\bvboxsep \baselineskip\z@skip
- \frenchspacing\@vobeyspaces\@maybeobeytabs
+ \frenchspacing\@vobeyspaces%\@maybeobeytabs
\boxverb@toprule}
% \end{macrocode}
@@ -30384,13 +30843,15 @@
% \cs{stre@mverb@input}\marg{setup}\marg{stream} and
% \cs{verbatim@readstre@m}\marg{stream}. Finally, \cs{verbatim@read@file}
% is a \Lpack{verbatim} package macro.
+% \changes{v3.8.2}{2024/01/26}{Removed tabs support and added the tab
+% marking support to the starred version like we did for \cs{verbatiminput}}
% \begin{macrocode}
\def\readverbatim{\begingroup
- \ift@bs
- \def\verbatim@processline{\tabverbatim@processline}%
- \fi
- \@ifstar{\stre@mverb@input{\@maybeobeytabs}}%
- {\stre@mverb@input{\frenchspacing\@vobeyspaces\@maybeobeytabs}}}
+ %\ift@bs
+ % \def\verbatim@processline{\tabverbatim@processline}%
+ %\fi
+ \@ifstar{\stre@mverb@input{\@setupverbvisiblespace\@vobeyspaces}}%{\@maybeobeytabs}}%
+ {\stre@mverb@input{\frenchspacing\@vobeyspaces}}}%\@maybeobeytabs}}}
% \end{macrocode}
% \end{macro}
@@ -33559,7 +34020,7 @@ keyword "\\glossaryentry"
% \newblock \emph{The ltfilehook package}
% \newblock July 2020.
%
-% \bibitem[Mit2023]{LTHOOKS}
+% \bibitem[Mit2023a]{LTHOOKS}
% Frank Mittelbach
% \newblock \emph{\LaTeX's hook management}
% \newblock June 2023.
@@ -33568,7 +34029,12 @@ keyword "\\glossaryentry"
% Frank Mittelbach
% \newblock \emph{The ltshipout package}
% \newblock July 2020.
-%
+%
+% \bibitem[Mit2023b]{SHORTVRB}
+% Frank Mittelbach
+% \newblock \emph{The doc and shortvrb Packages}
+% \newblock November 2023.
+%
% \bibitem[Oos96]{FANCYHDR}
% Piet van Oostrum.
% \newblock \emph{Page layout in LaTeX}.
diff --git a/macros/latex/contrib/memoir/mempatch.dtx b/macros/latex/contrib/memoir/mempatch.dtx
index f47f1f0195..618528c097 100644
--- a/macros/latex/contrib/memoir/mempatch.dtx
+++ b/macros/latex/contrib/memoir/mempatch.dtx
@@ -20,7 +20,7 @@
%
%
% \fi
-% \CheckSum{562}
+% \CheckSum{549}
%
% \def\dtxfile{\texttt{mempatch.dtx}}
% \def\fileversion{v1.0} \def\filedate{2003/10/04}
@@ -312,6 +312,8 @@
%% With the new hooking system from 2020+ memhfixc is automatically
%% added after loading hyperref with the memoir class
%%
+%% Version 1.22 2023/09/10
+%% Version 1.21 2023/07/28
%% Version 1.21 2023/07/28
%% Version 1.20 2022/11/17
%% Version 1.19 2021/06/16
@@ -339,7 +341,7 @@
%
%
% \begin{macrocode}
-\ProvidesPackage{memhfixc}[2023/07/28 v1.21 hyperref package fixes for memoir class]
+\ProvidesPackage{memhfixc}[2023/09/10 v1.22 hyperref package fixes for memoir class]
% \end{macrocode}
%
% \begin{macro}{\M@hfixcfinish}
@@ -647,56 +649,75 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\endsidecaption}
-% Tweak the \texttt{sidecaption} environment. I don't know why it
-% works but it took a lot of time trying all sorts of combinations
-% of commands to get it to do so (if it really does).
-% \begin{macrocode}
-\def\endsidecaption{%
- \m@mscapend@fbox
- \H@refstepcounter{\@captype}%
- \hyper@makecurrent{\@captype}%
- \m@mscaplabel
-% \end{macrocode}
-% \changes{v1.17}{2013/05/30}{Forgot to add \cs{m@mscapcheckside}}
-% \begin{macrocode}
- \m@mscapcheckside %<--- added 2013/05/30
- \begin{lrbox}{\m@mscap@capbox}%
- \begin{minipage}[c]{\sidecapwidth}%
- \sidecapstyle
- \@caption\@captype[\m@mscap@fortoc]{\m@mscap@forcap}%
- \end{minipage}%
- \end{lrbox}%
- \m@mscapopboxes}
+% \begin{macro}{\sidecaption@refstepcounter}
+% Under \Lpack{hyperref} we redefine what
+% \cs{sidecaption@refstepcounter} does. Here we use that it is
+% called with two args.
+% \changes{v1.22}{2023/09/10}{Redef of new macro from memoir 3.8.2,
+% that makes sidecaption handling easier.}
+% \begin{macrocode}
+\renewcommand*\sidecaption@refstepcounter[2]{%
+ \H@refstepcounter{#1}%
+ \hyper@makecurrent{#2}%
+}
% \end{macrocode}
% \end{macro}
%
+% \changes{v1.22}{2023/09/10}{Because of the redef in memoir 3.8.2 we
+% no longer need this}
+% ^^A \begin{macro}{\endsidecaption}
+% ^^A % Tweak the \texttt{sidecaption} environment. I don't know why it
+% ^^A works but it took a lot of time trying all sorts of combinations
+% ^^A of commands to get it to do so (if it really does).
+% ^^A \begin{macrocode}
+ % \def\endsidecaption{%
+ % \m@mscapend@fbox
+ % \H@refstepcounter{\@captype}%
+ % \hyper@makecurrent{\@captype}%
+ % \m@mscaplabel
+% ^^A \end{macrocode}
+% ^^A\changes{v1.17}{2013/05/30}{Forgot to add \cs{m@mscapcheckside}}
+% ^^A \begin{macrocode}
+ % \m@mscapcheckside %<--- added 2013/05/30
+ % \begin{lrbox}{\m@mscap@capbox}%
+ % \begin{minipage}[c]{\sidecapwidth}%
+ % \sidecapstyle
+ % \@caption\@captype[\m@mscap@fortoc]{\m@mscap@forcap}%
+ % \end{minipage}%
+ % \end{lrbox}%
+ % \m@mscapopboxes}
+
+% ^^A \end{macrocode}
+% ^^A \end{macro}
+%
% \begin{macro}{\sidecontcaption}
% \begin{macro}{\endsidecontcaption}
% Tweaks for the \texttt{sidecontcaption} environment. Again it was
% a miss, miss, \ldots hit method to get something that appears
% to work.
+% \changes{v1.22}{2023/09/10}{Because of the redef in memoir 3.8.2 we
+% no longer need the redef of \cs{endsidecontcaption}}
% \begin{macrocode}
\renewcommand*{\sidecontcaption}{%
\refstepcounter{memhycontfloat}%
\@sidecontcaption}
-\def\endsidecontcaption{%
- \m@mscapend@fbox
- \addtocounter{\@captype}{\m@ne}\H@refstepcounter{\@captype}%
- \hyper@makecurrent{memhycontfloat}%
- \m@mscaplabel
-% \end{macrocode}
-% \changes{v1.17}{2013/05/30}{Forgot to add \cs{m@mscapcheckside}}
-% \begin{macrocode}
- \m@mscapcheckside %<--- added 2013/05/30
- \begin{lrbox}{\m@mscap@capbox}%
- \begin{minipage}[c]{\sidecapwidth}%
- \sidecapstyle
- \@contcaption\@captype{\m@mscap@forcap}%
- \end{minipage}%
- \end{lrbox}%
- \m@mscapopboxes}
+ % \def\endsidecontcaption{%
+ % \m@mscapend@fbox
+ % \addtocounter{\@captype}{\m@ne}\H@refstepcounter{\@captype}%
+ % \hyper@makecurrent{memhycontfloat}%
+ % \m@mscaplabel
+% ^^A \end{macrocode}
+% ^^A \changes{v1.17}{2013/05/30}{Forgot to add \cs{m@mscapcheckside}}
+% ^^A \begin{macrocode}
+ % \m@mscapcheckside %<--- added 2013/05/30
+ % \begin{lrbox}{\m@mscap@capbox}%
+ % \begin{minipage}[c]{\sidecapwidth}%
+ % \sidecapstyle
+ % \@contcaption\@captype{\m@mscap@forcap}%
+ % \end{minipage}%
+ % \end{lrbox}%
+ % \m@mscapopboxes}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/metalogox/README.txt b/macros/latex/contrib/metalogox/README.txt
index 18c947b32b..c89e1096e3 100644
--- a/macros/latex/contrib/metalogox/README.txt
+++ b/macros/latex/contrib/metalogox/README.txt
@@ -1,7 +1,7 @@
The LaTeX metalogox package
Automatically adjusts the TeX logo and related, depending on the font.
-v1.03
+v1.04
Copyright 2019, 2023–2024 Brian Dunn β€” https://github.com/bdtc/metalogox
LaTeX Project Public License, version 1.3
diff --git a/macros/latex/contrib/metalogox/metalogox.dtx b/macros/latex/contrib/metalogox/metalogox.dtx
index 471107229a..25b9bd3ba2 100644
--- a/macros/latex/contrib/metalogox/metalogox.dtx
+++ b/macros/latex/contrib/metalogox/metalogox.dtx
@@ -16,7 +16,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{metalogox}
-%<package> [2024/01/19 v1.03 Extends the metalogo package with font detection.]
+%<package> [2024/01/26 v1.04 Extends the metalogo package with font detection.]
%
%<*driver>
\documentclass{ltxdoc}
@@ -73,6 +73,8 @@
\pagestyle{pageheadfoot}
+\usepackage{needspace}
+
@@ -164,6 +166,7 @@ pageanchor=true,
% \changes{v1.03}{2024/01/18}{Added Atkinson Hyperlegible, Charis SIL, Cuprum,
% Eczar, Ibarra, Inria, Inter, MLModern, Nunito, Oswald.}
% \changes{v1.03}{2024/01/19}{2024/01/19}
+% \changes{v1.04}{2024/01/26}{2024/01/26}
@@ -259,6 +262,9 @@ pageanchor=true,
% If the user specifies a package option, its settings override the default and
% also anything set by font detection.
%
+% The \LaTeX\ packages \pkg{hologo} and \pkg{hvlogos} are also supported
+% when used with \pkg{metalogox}.
+%
%
% \setlength{\parindent}{0em}
% \setlength{\parskip}{2ex}
@@ -302,6 +308,8 @@ pageanchor=true,
% {\Fontskrivan\adjustlogos{baskerville}\LaTeXe}
% \end{sourcedisplay}
%
+% \needspace{3\baselineskip}
+%
% \DescribeMacro{\autoadjustlogos}
% \cs{autoadjustlogos} may be used to make local changes
% according to the current font:
@@ -1597,6 +1605,71 @@ pageanchor=true,
% \end{macrocode}
%
%
+% \subsection{Support for the \pkg{hologo} and \pkg{hvlogos} packages}
+%
+% If \pkg{hologo} is used, a few macros are defined to use \pkg{metalogo} kerning.
+% (\pkg{hvlogos} uses \pkg{hologo}, so is also supported.)
+% \changes{v1.04}{2024/01/25}{Added support for \pkg{hologo}, \pkg{hvlogos}.}
+% \begin{macrocode}
+\AtBeginDocument{
+
+\IfPackageLoadedTF{hologo}
+{
+\def\HoLogo@TeX#1{\TeX}
+
+\def\HoLogo@La#1{%
+ \@xl@everylogo
+ L\kern\xl@kern@La@La
+ {\ifxetex
+ \XeTeXuseglyphmetrics\@ne
+ \fi
+ \sbox\z@ T%
+ \sbox\@ne{\xl@LaTeX@a}%
+ \vbox to\ht\z@{%
+ \hbox{%
+ \ltx@sh@ft{\ht\z@}%
+ \xl@sh@ft{\ht\@ne}%
+ \xl@LaTeX@a
+ \xl@sh@ft{\ht\z@}%
+ \ltx@sh@ft{\ht\@ne}}%
+ \vss}}%
+ }
+
+\def\HoLogo@LaTeX#1{\HoLogo@La{La}\kern\xl@kern@LaTeX@aT\TeX}
+
+\def\HoLogo@LaTeXe#1{%
+ \hologo{LaTeX}%
+ \kern\xl@kern@LaTeXe@Xii%
+ \hbox{%
+ \HOLOGO@MathSetup
+ 2%
+ $_{\textstyle\varepsilon}$%
+ }%
+}
+
+\def\HoLogo@LaTeXTeX#1{%
+ (%
+ \kern\xl@kern@LaTeX@aT
+ \hologo{La}%
+ \kern\xl@kern@LaTeX@aT
+ )%
+ \kern\xl@kern@LaTeX@aT
+ \hologo{TeX}%
+}
+\expandafter\let\csname HoLogo@(La)TeX\endcsname\HoLogo@LaTeXTeX
+
+\def\HoLogo@XeTeX#1{\Xe\kern\xl@kern@XeTeX@eT\TeX}
+
+\def\HoLogo@XeLaTeX#1{\Xe\kern\xl@kern@XeLaTeX@eL\LaTeX}
+
+}
+{}% hologo not loaded
+
+}% AtBeginDocument
+% \end{macrocode}
+%
+%
+%
% ^^A At end:
%
% \clearpage
diff --git a/macros/latex/contrib/metalogox/metalogox.pdf b/macros/latex/contrib/metalogox/metalogox.pdf
index 19a7a0d596..4912b1c319 100644
--- a/macros/latex/contrib/metalogox/metalogox.pdf
+++ b/macros/latex/contrib/metalogox/metalogox.pdf
Binary files differ
diff --git a/macros/latex/contrib/proof-at-the-end/README.md b/macros/latex/contrib/proof-at-the-end/README.md
index f1f061c478..9f27306c59 100644
--- a/macros/latex/contrib/proof-at-the-end/README.md
+++ b/macros/latex/contrib/proof-at-the-end/README.md
@@ -22,7 +22,7 @@ NB: This project is hosted on github at [https://github.com/leo-colisson/proof-a
Disclaimer: This package is still in beta and not considered as stable.
-This package is licensed under LPPL v1.3, and the last version of this package on CTAN is 2022/08/24.
+This package is licensed under LPPL v1.3, and the last version of this package on CTAN is 2019/05/21.
## Demo ##
@@ -573,7 +573,6 @@ In anycase, there exists some workarounds, some of the are for instance give in
## Changelog
-- 2022/08/24: Fix the issues on KOMA classes https://github.com/leo-colisson/proof-at-the-end/issues/11
- 2022/02/07:
1. [issue 2](https://github.com/leo-colisson/proof-at-the-end/issues/2) was not really solved in fact... Now, I use a more robust method to detect the current section: I write in an AUX file the label of the proof section. This way, I don't need anymore to use dirty tricks to recover the section label.
2. Change the default text when the appendix is in an external file, and add options like `text link external appendix` to customize the text appearing when the appendix is in an external file. Of course, you can still change it using `text link` directly.
diff --git a/macros/latex/contrib/proof-at-the-end/proof-at-the-end.dtx b/macros/latex/contrib/proof-at-the-end/proof-at-the-end.dtx
index 06688d590c..553c48999a 100644
--- a/macros/latex/contrib/proof-at-the-end/proof-at-the-end.dtx
+++ b/macros/latex/contrib/proof-at-the-end/proof-at-the-end.dtx
@@ -1,12 +1,12 @@
%\iffalse
% proof-at-the-end.dtx generated using makedtx version 1.2 (c) Nicola Talbot
% Command line args:
+% -dir "/home/leo/Documents/Informatique/Programmation/LaTeX/proof-at-the-end/"
% -author "LΓ©o Colisson"
% -doc "../doc/proof-at-the-end_doc.tex"
% -src "proof-at-the-end\.sty=>proof-at-the-end.sty"
-% -dir "/tmp/proof-at-the-end/"
% proof-at-the-end
-% Created on 2022/8/24 17:25
+% Created on 2024/1/26 15:25
%\fi
%\iffalse
%<*package>
@@ -29,7 +29,7 @@
%\fi
% \iffalse
% Doc-Source file to use with LaTeX2e
-% Copyright (C) 2022 LΓ©o Colisson, all rights reserved.
+% Copyright (C) 2024 LΓ©o Colisson, all rights reserved.
% \fi
% \iffalse
%<*driver>
@@ -68,15 +68,6 @@
\KOMAoptions{parskip=half}}
\makeatother
\usepackage{xcolor}
-\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
-\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
-\hypersetup{
- pdftitle={Proof-at-the-end, or how to move proofs in appendix in LaTeX},
- pdfauthor={LΓ©o Colisson},
- hidelinks,
- pdfcreator={LaTeX via pandoc}}
-\urlstyle{same} % disable monospaced font for URLs
-\usepackage[margin=1in]{geometry}
\usepackage{color}
\usepackage{fancyvrb}
\newcommand{\VerbBar}{|}
@@ -88,7 +79,7 @@
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}}
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
-\newcommand{\BuiltInTok}[1]{#1}
+\newcommand{\BuiltInTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{#1}}
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}}
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
@@ -101,7 +92,7 @@
\newcommand{\ExtensionTok}[1]{#1}
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}}
-\newcommand{\ImportTok}[1]{#1}
+\newcommand{\ImportTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{\textbf{#1}}}
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
\newcommand{\NormalTok}[1]{#1}
@@ -135,6 +126,14 @@
\ifLuaTeX
\usepackage{selnolig} % disable illegal ligatures
\fi
+\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
+\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
+\urlstyle{same} % disable monospaced font for URLs
+\hypersetup{
+ pdftitle={Proof-at-the-end, or how to move proofs in appendix in LaTeX},
+ pdfauthor={LΓ©o Colisson},
+ hidelinks,
+ pdfcreator={LaTeX via pandoc}}
\title{Proof-at-the-end, or how to move proofs in appendix in LaTeX}
\author{LΓ©o Colisson}
@@ -207,7 +206,7 @@
%Disclaimer: This package is still in beta and not considered as stable.
%
%This package is licensed under LPPL v1.3, and the last version of this
-%package on CTAN is 2022/08/24.
+%package on CTAN is 2019/05/21.
%
%\hypertarget{demo}{%
%\section{Demo}\label{demo}}
@@ -1240,9 +1239,6 @@
%\begin{itemize}
%\tightlist
%\item
-% 2022/08/24: Fix the issues on KOMA classes
-% https://github.com/leo-colisson/proof-at-the-end/issues/11
-%\item
% 2022/02/07:
%
% \begin{enumerate}
@@ -1360,7 +1356,7 @@
% \end{macrocode}
%\fi
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{proof-at-the-end}[2022/08/24 A package to move proofs in appendix]
+\ProvidesPackage{proof-at-the-end}[2024/01/26 A package to move proofs in appendix]
\RequirePackage{etoolbox}
\RequirePackage{thmtools}
@@ -1633,7 +1629,7 @@
% The first mandatory option is the type of the theorem (thm,lemma,...)
% The second facultative argument will be the title
% the second mandatory option is the theorem (will \label inside eventually)
- % the last mandatory option is the proof
+ % the last mandatory option is the proof, or, if restated, the name of the theorem.
\global\def\pratendlastoptions{#1}%
\pgfkeys{%
/prAtEnd/.cd,
@@ -1699,7 +1695,7 @@
\end{theoremEndOrig}%
}{}
-\NewDocumentEnvironment{proofEndOrig}{O{}+b}{
+\NewDocumentEnvironment{proofEndOrig}{O{}+b}{%
\pgfkeys{%
/prAtEnd/.cd,
all defaults,
@@ -1707,7 +1703,7 @@
prAtEndTmpStyle,
#1
}%
- \unless\ifallattheend
+ \unless\ifallattheend%
%% Write eventually a link to the proof
\iflinktoproof%
\pratendtextlink{}%
@@ -1861,7 +1857,7 @@
}%
\NewDocumentCommand\pratendSectionlikeCref{}{%
% \pratendRef{proofsection:prAtEnd\pratendcountercurrent}% This is not robust enough. Lets change strategy.
- \expandafter\pratendRef{\pratendLabelProofSection}
+ \expandafter\pratendRef{\pratendLabelProofSection}%
}
\ifpratendOptdisablePatchSection%
\else %
diff --git a/macros/latex/contrib/proof-at-the-end/proof-at-the-end.ins b/macros/latex/contrib/proof-at-the-end/proof-at-the-end.ins
index c88dd83f36..81cf02f406 100644
--- a/macros/latex/contrib/proof-at-the-end/proof-at-the-end.ins
+++ b/macros/latex/contrib/proof-at-the-end/proof-at-the-end.ins
@@ -1,10 +1,10 @@
-% proof-at-the-end.ins generated using makedtx version 1.2 2022/8/24 17:25
+% proof-at-the-end.ins generated using makedtx version 1.2 2024/1/26 15:25
\input docstrip
\preamble
proof-at-the-end.dtx
- Copyright 2022 LΓ©o Colisson
+ Copyright 2024 LΓ©o Colisson
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/proof-at-the-end/proof-at-the-end.pdf b/macros/latex/contrib/proof-at-the-end/proof-at-the-end.pdf
index 64cfb5be1b..2e3ec76ba4 100644
--- a/macros/latex/contrib/proof-at-the-end/proof-at-the-end.pdf
+++ b/macros/latex/contrib/proof-at-the-end/proof-at-the-end.pdf
Binary files differ
diff --git a/macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.pdf b/macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.pdf
index 7e6e7fd1b8..81d8cb3272 100644
--- a/macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.pdf
+++ b/macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/README.md b/macros/latex/contrib/tagpdf/README.md
index 1b6bdfc3b5..b64c5a23fa 100644
--- a/macros/latex/contrib/tagpdf/README.md
+++ b/macros/latex/contrib/tagpdf/README.md
@@ -1,6 +1,6 @@
#tagpdf β€” A package to create tagged pdf
-Packageversion: 0.98s
-Packagedate: 2024/01/19
+Packageversion: 0.98t
+Packagedate: 2024/01/26
Author: Ulrike Fischer, LaTeX Project Team
## License
diff --git a/macros/latex/contrib/tagpdf/ex-AF-file.pdf b/macros/latex/contrib/tagpdf/ex-AF-file.pdf
index 979b494e16..8837751559 100644
--- a/macros/latex/contrib/tagpdf/ex-AF-file.pdf
+++ b/macros/latex/contrib/tagpdf/ex-AF-file.pdf
@@ -1,38 +1,38 @@
%PDF-2.0
%ΜΥΑΤΕΨΠΔΖ
-23 0 obj
-<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<</ModDate (D:20240119195615+01'00') /Size 151 /CheckSum (21E1A83BCC98E4F7FCCA5E335BF08D4A) >> /Length 151 >>
+24 0 obj
+<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<</ModDate (D:20240126205826+01'00') /Size 151 /CheckSum (885A66112CFA800687C687B2EED39FAC) >> /Length 151 >>
stream
%% LaTeX2e file `example-input-file.tex'
%% generated by the `filecontents' environment
-%% from source `ex-AF-file' on 2024/01/19.
+%% from source `ex-AF-file' on 2024/01/26.
%%
Additional info!
endstream
endobj
-24 0 obj
-<< /Type /Filespec /AFRelationship /Unspecified /F <FEFF006500780061006D0070006C0065002D0069006E007000750074002D00660069006C0065002E007400650078> /UF <FEFF006500780061006D0070006C0065002D0069006E007000750074002D00660069006C0065002E007400650078> /EF<</F 23 0 R/UF 23 0 R>> >>
+25 0 obj
+<< /Type /Filespec /AFRelationship /Unspecified /F <FEFF006500780061006D0070006C0065002D0069006E007000750074002D00660069006C0065002E007400650078> /UF <FEFF006500780061006D0070006C0065002D0069006E007000750074002D00660069006C0065002E007400650078> /EF<</F 24 0 R/UF 24 0 R>> >>
endobj
-26 0 obj
-<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20240119) >> /Length 19 >>
+27 0 obj
+<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20240126) >> /Length 19 >>
stream
BΓ€r with teh shirt
endstream
endobj
-27 0 obj
-<< /Type /Filespec /AFRelationship /Supplement /F <FEFF007400610067002D0041004600660069006C00650031002E007400780074> /UF <FEFF007400610067002D0041004600660069006C00650031002E007400780074> /EF<</F 26 0 R/UF 26 0 R>> >>
+28 0 obj
+<< /Type /Filespec /AFRelationship /Supplement /F <FEFF007400610067002D0041004600660069006C00650031002E007400780074> /UF <FEFF007400610067002D0041004600660069006C00650031002E007400780074> /EF<</F 27 0 R/UF 27 0 R>> >>
endobj
-29 0 obj
-<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20240119) >> /Length 4 >>
+30 0 obj
+<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20240126) >> /Length 4 >>
stream
Duck
endstream
endobj
-30 0 obj
-<< /Type /Filespec /AFRelationship /Supplement /F <FEFF007400610067002D0041004600660069006C00650032002E007400780074> /UF <FEFF007400610067002D0041004600660069006C00650032002E007400780074> /EF<</F 29 0 R/UF 29 0 R>> >>
+31 0 obj
+<< /Type /Filespec /AFRelationship /Supplement /F <FEFF007400610067002D0041004600660069006C00650032002E007400780074> /UF <FEFF007400610067002D0041004600660069006C00650032002E007400780074> /EF<</F 30 0 R/UF 30 0 R>> >>
endobj
-32 0 obj
+33 0 obj
<< /Type /Metadata /Subtype /XML /Length 11382 >>
stream
@@ -242,17 +242,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-01-19T19:56:37+01:00</rdf:li>
+ <rdf:li>2024-01-26T20:58:41+01:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-AF-file.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-01-19T19:56:37+01:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-01-19T19:56:37+01:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-01-19T19:56:37+01:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-01-26T20:58:41+01:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-01-26T20:58:41+01:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-01-26T20:58:41+01:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:38d5a844-2217-4081-87cc-b2129dc357a6</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:5cb7d4e3-b534-443a-870e-a511237fa2cf</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:cb6cb011-153d-4b72-827d-6e20f4822861</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -271,7 +271,7 @@ stream
<?xpacket end="w"?>
endstream
endobj
-35 0 obj
+36 0 obj
<< /Length 546 >>
stream
/opacity1 gs
@@ -300,80 +300,83 @@ EMC
endstream
endobj
-34 0 obj
-<< /Type /Page /Contents 35 0 R /Resources 33 0 R /MediaBox [ 0 0 612 792 ] /StructParents 0/Tabs /S /Parent 37 0 R >>
+35 0 obj
+<< /Type /Page /Contents 36 0 R /Resources 34 0 R /MediaBox [ 0 0 612 792 ] /StructParents 0/Tabs /S /Parent 38 0 R >>
endobj
-33 0 obj
-<< /ExtGState 1 0 R /Font << /F15 36 0 R >> >>
+34 0 obj
+<< /ExtGState 1 0 R /Font << /F15 37 0 R >> >>
endobj
1 0 obj
<< /opacity1 <</ca 1/CA 1>> >>
endobj
-38 0 obj
+39 0 obj
<< /Marked true >>
endobj
6 0 obj
-<< /Nums [0 [ 25 0 R 28 0 R 31 0 R]
+<< /Nums [0 [ 26 0 R 29 0 R 32 0 R]
] >>
endobj
-39 0 obj
-<< /Limits [(ID.01) (ID.04)]/Names [(ID.01) 22 0 R (ID.02) 25 0 R (ID.03) 28 0 R (ID.04) 31 0 R ] >>
-endobj
40 0 obj
-<< /Kids [39 0 R] >>
+<< /Limits [(ID.01) (ID.04)]/Names [(ID.01) 23 0 R (ID.02) 26 0 R (ID.03) 29 0 R (ID.04) 32 0 R ] >>
endobj
-8 0 obj
+41 0 obj
+<< /Kids [40 0 R] >>
+endobj
+7 0 obj
+<< /Artifact /NonStruct /DocumentFragment /Art /Aside /Note /H7 /H6 /H8 /H6 /H9 /H6 /H10 /H6 /Title /Span /FENote /Note /Sub /Span /Em /Span /Strong /Span /chapter /H1 /section /H1 /subsection /H2 /subsubsection /H3 /paragraph /H4 /subparagraph /H5 /P /Span /title /P /part /P /list /L /itemize /L /enumerate /L /description /L /quote /BlockQuote /quotation /BlockQuote /verbatim /Span /item /LI /itemlabel /Lbl /itembody /LBody /footnote /Note /footnotemark /Lbl /footnotelabel /Lbl /text-unit /Part /text /Span /theorem-like /Sect /codeline /Span /float /Note /figures /Sect /tables /Sect >>
+endobj
+9 0 obj
<< /Type /Namespace /NS (http://iso.org/pdf/ssn) >>
endobj
-10 0 obj
+11 0 obj
<< /Type /Namespace /NS (http://iso.org/pdf2/ssn) >>
endobj
-12 0 obj
+13 0 obj
<< /Type /Namespace /NS (http://www.w3.org/1998/Math/MathML) >>
endobj
+16 0 obj
+<< /title [/Title 11 0 R] /part [/Title 11 0 R] /section [/H1 11 0 R] /subsection [/H2 11 0 R] /subsubsection [/H3 11 0 R] /paragraph [/H4 11 0 R] /subparagraph [/H5 11 0 R] /list [/L 11 0 R] /itemize [/L 11 0 R] /enumerate [/L 11 0 R] /description [/L 11 0 R] /quote [/BlockQuote 9 0 R] /quotation [/BlockQuote 9 0 R] /verbatim [/P 11 0 R] /item [/LI 11 0 R] /itemlabel [/Lbl 11 0 R] /itembody [/LBody 11 0 R] /footnote [/FENote 11 0 R] /footnotemark [/Lbl 11 0 R] /footnotelabel [/Lbl 11 0 R] /text-unit [/Part 11 0 R] /text [/P 11 0 R] /theorem-like [/Sect 11 0 R] /codeline [/Sub 11 0 R] /float [/Aside 11 0 R] /figures [/Sect 11 0 R] /tables [/Sect 11 0 R] >>
+endobj
15 0 obj
-<< /title [/Title 10 0 R] /part [/Title 10 0 R] /section [/H1 10 0 R] /subsection [/H2 10 0 R] /subsubsection [/H3 10 0 R] /paragraph [/H4 10 0 R] /subparagraph [/H5 10 0 R] /list [/L 10 0 R] /itemize [/L 10 0 R] /enumerate [/L 10 0 R] /description [/L 10 0 R] /quote [/BlockQuote 8 0 R] /quotation [/BlockQuote 8 0 R] /verbatim [/P 10 0 R] /item [/LI 10 0 R] /itemlabel [/Lbl 10 0 R] /itembody [/LBody 10 0 R] /footnote [/FENote 10 0 R] /footnotemark [/Lbl 10 0 R] /footnotelabel [/Lbl 10 0 R] /text-unit [/Part 10 0 R] /text [/P 10 0 R] /theorem-like [/Sect 10 0 R] /codeline [/Sub 10 0 R] /float [/Aside 10 0 R] /figures [/Sect 10 0 R] /tables [/Sect 10 0 R] >>
+<< /Type /Namespace /NS (https://www.latex-project.org/ns/dflt/2022) /RoleMapNS 16 0 R >>
endobj
-14 0 obj
-<< /Type /Namespace /NS (https://www.latex-project.org/ns/dflt/2022) /RoleMapNS 15 0 R >>
+18 0 obj
+<< /chapter [/H1 11 0 R] /section [/H2 11 0 R] /subsection [/H3 11 0 R] /subsubsection [/H4 11 0 R] /paragraph [/H5 11 0 R] /subparagraph [/H6 11 0 R] >>
endobj
17 0 obj
-<< /chapter [/H1 10 0 R] /section [/H2 10 0 R] /subsection [/H3 10 0 R] /subsubsection [/H4 10 0 R] /paragraph [/H5 10 0 R] /subparagraph [/H6 10 0 R] >>
+<< /Type /Namespace /NS (https://www.latex-project.org/ns/book/2022) /RoleMapNS 18 0 R >>
endobj
-16 0 obj
-<< /Type /Namespace /NS (https://www.latex-project.org/ns/book/2022) /RoleMapNS 17 0 R >>
+20 0 obj
+<< /chapter [/Span 11 0 R] /section [/Span 11 0 R] /subsection [/Span 11 0 R] /subsubsection [/Span 11 0 R] /paragraph [/Span 11 0 R] /subparagraph [/Span 11 0 R] /P [/Span 11 0 R] >>
endobj
19 0 obj
-<< /chapter [/Span 10 0 R] /section [/Span 10 0 R] /subsection [/Span 10 0 R] /subsubsection [/Span 10 0 R] /paragraph [/Span 10 0 R] /subparagraph [/Span 10 0 R] /P [/Span 10 0 R] >>
-endobj
-18 0 obj
-<< /Type /Namespace /NS (https://www.latex-project.org/ns/inline/2022) /RoleMapNS 19 0 R >>
+<< /Type /Namespace /NS (https://www.latex-project.org/ns/inline/2022) /RoleMapNS 20 0 R >>
endobj
-20 0 obj
-<< /Type /Namespace /NS (data:,BBA0C22B-E40B-3CA4-A17D-CA788152A7FF) >>
+21 0 obj
+<< /Type /Namespace /NS (data:,D665C3A0-56E-F551-A3B2-53B32DA0C704) >>
endobj
-7 0 obj
-[ 8 0 R 10 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R ]
+8 0 obj
+[ 9 0 R 11 0 R 13 0 R 15 0 R 17 0 R 19 0 R 21 0 R ]
endobj
-22 0 obj
-<< /Type /StructElem /S /Document /P 5 0 R /K [25 0 R 28 0 R 31 0 R] /NS 10 0 R /ID (ID.01) >>
+23 0 obj
+<< /Type /StructElem /S /Document /P 5 0 R /K [26 0 R 29 0 R 32 0 R] /NS 11 0 R /ID (ID.01) >>
endobj
-25 0 obj
-<< /Type /StructElem /S /P /P 22 0 R /K <</Type /MCR /Pg 34 0 R /MCID 0>> /AF [27 0 R] /NS 10 0 R /ID (ID.02) >>
+26 0 obj
+<< /Type /StructElem /S /P /P 23 0 R /K <</Type /MCR /Pg 35 0 R /MCID 0>> /AF [28 0 R] /NS 11 0 R /ID (ID.02) >>
endobj
-28 0 obj
-<< /Type /StructElem /S /P /P 22 0 R /K <</Type /MCR /Pg 34 0 R /MCID 1>> /AF [30 0 R] /NS 10 0 R /ID (ID.03) >>
+29 0 obj
+<< /Type /StructElem /S /P /P 23 0 R /K <</Type /MCR /Pg 35 0 R /MCID 1>> /AF [31 0 R] /NS 11 0 R /ID (ID.03) >>
endobj
-31 0 obj
-<< /Type /StructElem /S /P /P 22 0 R /K <</Type /MCR /Pg 34 0 R /MCID 2>> /AF [24 0 R] /NS 10 0 R /ID (ID.04) >>
+32 0 obj
+<< /Type /StructElem /S /P /P 23 0 R /K <</Type /MCR /Pg 35 0 R /MCID 2>> /AF [25 0 R] /NS 11 0 R /ID (ID.04) >>
endobj
5 0 obj
-<< /Type /StructTreeRoot /K 22 0 R /IDTree 40 0 R /ParentTree 6 0 R /Namespaces 7 0 R >>
+<< /Type /StructTreeRoot /K 23 0 R /IDTree 41 0 R /ParentTree 6 0 R /RoleMap 7 0 R /Namespaces 8 0 R >>
endobj
-41 0 obj
+42 0 obj
[ 28 [ 500 ] 49 [ 681 444 ] 63 [ 556 ] 66 [ 278 ] 72 [ 278 ] 75 [ 833 ] 77 [ 556 ] 81 [ 500 ] 88 [ 278 ] 97 [ 556 ] 103 [ 333 ] 105 [ 389 ] 108 [ 750 556 ] 120 [ 444 ] ]
endobj
-43 0 obj
+44 0 obj
<< /Subtype /CIDFontType0C /Length 2179 >>
stream

@@ -384,10 +387,10 @@ stream
Π ‘ŒŒŒ’ŽΘ €΄Ž‘‘ŽŽŽ‘
endstream
endobj
-42 0 obj
-<< /Type /FontDescriptor /FontName /KAHWTS+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 43 0 R >>
+43 0 obj
+<< /Type /FontDescriptor /FontName /KAHWTS+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 44 0 R >>
endobj
-44 0 obj
+45 0 obj
<< /Length 903 >>
stream
%!PS-Adobe-3.0 Resource-CMap
@@ -439,73 +442,74 @@ end
endstream
endobj
-36 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /KAHWTS+LMRoman10-Regular /DescendantFonts [ 45 0 R ] /ToUnicode 44 0 R >>
-endobj
-45 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /KAHWTS+LMRoman10-Regular /FontDescriptor 42 0 R /W 41 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
-endobj
37 0 obj
-<< /Type /Pages /Count 1 /Kids [ 34 0 R ] >>
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /KAHWTS+LMRoman10-Regular /DescendantFonts [ 46 0 R ] /ToUnicode 45 0 R >>
endobj
46 0 obj
-<< /Type /Catalog /Pages 37 0 R /MarkInfo 38 0 R/Lang (de-DE)/Metadata 32 0 R/StructTreeRoot 5 0 R >>
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /KAHWTS+LMRoman10-Regular /FontDescriptor 43 0 R /W 42 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+endobj
+38 0 obj
+<< /Type /Pages /Count 1 /Kids [ 35 0 R ] >>
endobj
47 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20240119195637+01'00')/ModDate (D:20240119195637+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Type /Catalog /Pages 38 0 R /MarkInfo 39 0 R/Lang (de-DE)/Metadata 33 0 R/StructTreeRoot 5 0 R >>
+endobj
+48 0 obj
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20240126205841+01'00')/ModDate (D:20240126205841+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
-0 48
+0 49
0000000002 65535 f
0000013712 00000 n
0000000003 00000 f
0000000004 00000 f
-0000000009 00000 f
-0000016268 00000 n
+0000000010 00000 f
+0000016877 00000 n
0000013795 00000 n
-0000015691 00000 n
0000014006 00000 n
-0000000011 00000 f
-0000014074 00000 n
-0000000013 00000 f
-0000014144 00000 n
-0000000021 00000 f
-0000014907 00000 n
-0000014225 00000 n
-0000015185 00000 n
-0000015014 00000 n
-0000015493 00000 n
-0000015292 00000 n
-0000015602 00000 n
+0000016300 00000 n
+0000014616 00000 n
+0000000012 00000 f
+0000014684 00000 n
+0000000014 00000 f
+0000014754 00000 n
+0000000022 00000 f
+0000015517 00000 n
+0000014835 00000 n
+0000015795 00000 n
+0000015624 00000 n
+0000016103 00000 n
+0000015902 00000 n
+0000016212 00000 n
0000000000 00000 f
-0000015759 00000 n
+0000016368 00000 n
0000000020 00000 n
0000000382 00000 n
-0000015872 00000 n
+0000016481 00000 n
0000000673 00000 n
0000000828 00000 n
-0000016004 00000 n
+0000016613 00000 n
0000001062 00000 n
0000001202 00000 n
-0000016136 00000 n
+0000016745 00000 n
0000001436 00000 n
0000013649 00000 n
0000013514 00000 n
0000012908 00000 n
-0000020006 00000 n
-0000020360 00000 n
+0000020630 00000 n
+0000020984 00000 n
0000013759 00000 n
0000013852 00000 n
0000013969 00000 n
-0000016373 00000 n
-0000018822 00000 n
-0000016559 00000 n
-0000019043 00000 n
-0000020160 00000 n
-0000020422 00000 n
-0000020540 00000 n
+0000016997 00000 n
+0000019446 00000 n
+0000017183 00000 n
+0000019667 00000 n
+0000020784 00000 n
+0000021046 00000 n
+0000021164 00000 n
trailer
-<< /Size 48 /Root 46 0 R /Info 47 0 R /ID [ <C783AA5CC12032BDA358EBEEAE85BFB6> <C783AA5CC12032BDA358EBEEAE85BFB6> ] >>
+<< /Size 49 /Root 47 0 R /Info 48 0 R /ID [ <6706A7F57FA2E57B6F29C1F4593BA810> <6706A7F57FA2E57B6F29C1F4593BA810> ] >>
startxref
-20763
+21387
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-alt-actualtext.pdf b/macros/latex/contrib/tagpdf/ex-alt-actualtext.pdf
index e80d2fbc03..d2277fd590 100644
--- a/macros/latex/contrib/tagpdf/ex-alt-actualtext.pdf
+++ b/macros/latex/contrib/tagpdf/ex-alt-actualtext.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/ex-attribute.pdf b/macros/latex/contrib/tagpdf/ex-attribute.pdf
index 5eaa00749b..406dff191a 100644
--- a/macros/latex/contrib/tagpdf/ex-attribute.pdf
+++ b/macros/latex/contrib/tagpdf/ex-attribute.pdf
@@ -216,17 +216,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-01-19T19:57:37+01:00</rdf:li>
+ <rdf:li>2024-01-26T20:59:27+01:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-attribute.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-01-19T19:57:37+01:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-01-19T19:57:37+01:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-01-19T19:57:37+01:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-01-26T20:59:27+01:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-01-26T20:59:27+01:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-01-26T20:59:27+01:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:7a9cf910-1c19-429a-8f24-339c62d8a57f</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:f29497e4-c54a-486e-86fd-a1f59a181a57</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:12b1f461-45c8-435e-80aa-5198be5aa29c</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -449,7 +449,7 @@ endobj
<< /Type /Catalog /Pages 26 0 R /MarkInfo 27 0 R/Lang (de_DE)/Metadata 21 0 R/StructTreeRoot 5 0 R >>
endobj
38 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/Title (Title)/CreationDate (D:20240119195737+01'00')/ModDate (D:20240119195737+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/Title (Title)/CreationDate (D:20240126205927+01'00')/ModDate (D:20240126205927+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
0 39
@@ -493,7 +493,7 @@ xref
0000017720 00000 n
0000017838 00000 n
trailer
-<< /Size 39 /Root 37 0 R /Info 38 0 R /ID [ <175B3F8B0165F50DA2EA61FEB2DEECC4> <175B3F8B0165F50DA2EA61FEB2DEECC4> ] >>
+<< /Size 39 /Root 37 0 R /Info 38 0 R /ID [ <D01DA1D59B8D51A0CC8554A95BED561F> <D01DA1D59B8D51A0CC8554A95BED561F> ] >>
startxref
18075
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-formula-problem.pdf b/macros/latex/contrib/tagpdf/ex-formula-problem.pdf
index b293fc5d3f..0643e84ff8 100644
--- a/macros/latex/contrib/tagpdf/ex-formula-problem.pdf
+++ b/macros/latex/contrib/tagpdf/ex-formula-problem.pdf
@@ -239,17 +239,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-01-19T19:58:08+01:00</rdf:li>
+ <rdf:li>2024-01-26T20:59:50+01:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-formula-problem.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-01-19T19:58:08+01:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-01-19T19:58:08+01:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-01-19T19:58:08+01:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-01-26T20:59:50+01:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-01-26T20:59:50+01:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-01-26T20:59:50+01:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:8eb2ce1d-b2ec-440a-8bc2-73733eb3eeb0</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:9aa99a5f-42c4-4b8e-806c-136f2e587e9a</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:8970d22a-9e9e-4862-8221-c3ee6d0d9161</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>2</prism:pageCount>
</rdf:Description>
@@ -425,7 +425,7 @@ endobj
<< /Type /Catalog /Pages 16 0 R /MarkInfo 23 0 R/Lang (de-DE)/Metadata 19 0 R/StructTreeRoot 5 0 R >>
endobj
33 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20240119195808+01'00')/ModDate (D:20240119195808+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20240126205950+01'00')/ModDate (D:20240126205950+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
0 34
@@ -464,7 +464,7 @@ xref
0000018886 00000 n
0000019004 00000 n
trailer
-<< /Size 34 /Root 32 0 R /Info 33 0 R /ID [ <488A89BFEB9F5F572710D34833184E45> <488A89BFEB9F5F572710D34833184E45> ] >>
+<< /Size 34 /Root 32 0 R /Info 33 0 R /ID [ <32DDD7A2A657D8573D42BD4BCB00A9DA> <32DDD7A2A657D8573D42BD4BCB00A9DA> ] >>
startxref
19227
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-list.pdf b/macros/latex/contrib/tagpdf/ex-list.pdf
index c42445a6a2..ca3ab0e31a 100644
--- a/macros/latex/contrib/tagpdf/ex-list.pdf
+++ b/macros/latex/contrib/tagpdf/ex-list.pdf
@@ -210,17 +210,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-01-19T19:58:39+01:00</rdf:li>
+ <rdf:li>2024-01-26T21:00:13+01:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-list.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-01-19T19:58:39+01:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-01-19T19:58:39+01:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-01-19T19:58:39+01:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-01-26T21:00:13+01:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-01-26T21:00:13+01:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-01-26T21:00:13+01:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:4c749825-1de7-414c-879f-29e4d0bef66e</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:063cbb0f-d41e-44a3-8a47-db62ccf9c581</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:90b2a6de-94c7-4075-807e-0b97e2163383</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -653,7 +653,7 @@ endobj
<< /Type /Catalog /Pages 54 0 R /MarkInfo 55 0 R/Lang (en-US)/Metadata 48 0 R/StructTreeRoot 5 0 R >>
endobj
72 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20240119195839+01'00')/ModDate (D:20240119195839+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20240126210013+01'00')/ModDate (D:20240126210013+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
0 73
@@ -731,7 +731,7 @@ xref
0000029592 00000 n
0000029710 00000 n
trailer
-<< /Size 73 /Root 71 0 R /Info 72 0 R /ID [ <AC1B7C8DF05B36B74D0C37D00A0B08DF> <AC1B7C8DF05B36B74D0C37D00A0B08DF> ] >>
+<< /Size 73 /Root 71 0 R /Info 72 0 R /ID [ <ED45731963D5B29C201FA1DF9FDBFFF2> <ED45731963D5B29C201FA1DF9FDBFFF2> ] >>
startxref
29933
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf b/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
index 123ba50946..b751a6d102 100644
--- a/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
+++ b/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
@@ -243,17 +243,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-01-19T19:59:07+01:00</rdf:li>
+ <rdf:li>2024-01-26T21:00:34+01:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-mc-manual-para-split-obsolete.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-01-19T19:59:07+01:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-01-19T19:59:07+01:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-01-19T19:59:07+01:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-01-26T21:00:34+01:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-01-26T21:00:34+01:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-01-26T21:00:34+01:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:c33d64b4-96ec-4e48-8f27-0b3edc831547</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:9847df95-eea1-49b3-8a9e-c1ab77ce723c</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:e3b2c8ed-e8fb-46b6-849f-75fd38b47579</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>2</prism:pageCount>
</rdf:Description>
@@ -413,7 +413,7 @@ endobj
<< /Type /Catalog /Pages 14 0 R /Lang (en-US)/Metadata 15 0 R >>
endobj
25 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20240119195907+01'00')/ModDate (D:20240119195907+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20240126210034+01'00')/ModDate (D:20240126210034+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
0 26
@@ -444,7 +444,7 @@ xref
0000023897 00000 n
0000023978 00000 n
trailer
-<< /Size 26 /Root 24 0 R /Info 25 0 R /ID [ <299946CEB936BD1617FEBF129FCDEB78> <299946CEB936BD1617FEBF129FCDEB78> ] >>
+<< /Size 26 /Root 24 0 R /Info 25 0 R /ID [ <A530C63EDAA9942CF5746BD16B16A90B> <A530C63EDAA9942CF5746BD16B16A90B> ] >>
startxref
24201
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-softhyphen.pdf b/macros/latex/contrib/tagpdf/ex-softhyphen.pdf
index 2b430d802e..95b1b31c08 100644
--- a/macros/latex/contrib/tagpdf/ex-softhyphen.pdf
+++ b/macros/latex/contrib/tagpdf/ex-softhyphen.pdf
@@ -210,17 +210,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-01-19T19:59:33+01:00</rdf:li>
+ <rdf:li>2024-01-26T21:00:53+01:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-softhyphen.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-01-19T19:59:33+01:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-01-19T19:59:33+01:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-01-19T19:59:33+01:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-01-26T21:00:53+01:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-01-26T21:00:53+01:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-01-26T21:00:53+01:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:aa82e685-4098-469d-861c-3c45dfc700c7</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:8a7b353e-b6b5-40da-83ad-77aea4170264</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:8e3f9973-ca76-4bb0-885c-c462a238d3e9</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -393,7 +393,7 @@ endobj
<< /Type /Catalog /Pages 19 0 R /MarkInfo 20 0 R/Lang (en-US)/Metadata 14 0 R/StructTreeRoot 5 0 R >>
endobj
30 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20240119195933+01'00')/ModDate (D:20240119195933+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20240126210053+01'00')/ModDate (D:20240126210053+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
0 31
@@ -429,7 +429,7 @@ xref
0000018116 00000 n
0000018234 00000 n
trailer
-<< /Size 31 /Root 29 0 R /Info 30 0 R /ID [ <05B8611EC20F37F713A0D2A6789467CE> <05B8611EC20F37F713A0D2A6789467CE> ] >>
+<< /Size 31 /Root 29 0 R /Info 30 0 R /ID [ <5861020C59C64EDB711834443873AFAC> <5861020C59C64EDB711834443873AFAC> ] >>
startxref
18457
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf b/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
index 929c9a6aeb..360b5fd2cf 100644
--- a/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
+++ b/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
@@ -210,17 +210,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-01-19T19:59:58+01:00</rdf:li>
+ <rdf:li>2024-01-26T21:01:12+01:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-spaceglyph-listings.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-01-19T19:59:58+01:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-01-19T19:59:58+01:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-01-19T19:59:58+01:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-01-26T21:01:12+01:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-01-26T21:01:12+01:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-01-26T21:01:12+01:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:acdc2435-bf29-4e54-8d09-1c9b6dc32038</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:bc642c93-8887-45fe-8177-ac4f6cf315a8</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:2da7c0a8-0aad-46d2-8e28-b7f2a1930d27</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -354,7 +354,7 @@ endobj
<< /Type /Catalog /Pages 15 0 R /MarkInfo 16 0 R/Lang (en-US)/Metadata 10 0 R/StructTreeRoot 5 0 R >>
endobj
26 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20240119195958+01'00')/ModDate (D:20240119195958+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20240126210112+01'00')/ModDate (D:20240126210112+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
0 27
@@ -386,7 +386,7 @@ xref
0000015484 00000 n
0000015602 00000 n
trailer
-<< /Size 27 /Root 25 0 R /Info 26 0 R /ID [ <92ADB4969503303AD517B208CBD05D4D> <92ADB4969503303AD517B208CBD05D4D> ] >>
+<< /Size 27 /Root 25 0 R /Info 26 0 R /ID [ <4D137DF5E094011AB5CF6EF03BFCCE2C> <4D137DF5E094011AB5CF6EF03BFCCE2C> ] >>
startxref
15825
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf b/macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf
index 713aef9a9d..7ba830979b 100644
--- a/macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf
+++ b/macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf
@@ -210,17 +210,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-01-19T20:00:24+01:00</rdf:li>
+ <rdf:li>2024-01-26T21:01:31+01:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-structure-obsolete.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-01-19T20:00:24+01:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-01-19T20:00:24+01:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-01-19T20:00:24+01:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-01-26T21:01:31+01:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-01-26T21:01:31+01:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-01-26T21:01:31+01:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:bf5e4a2b-cfa9-4fc5-878c-8f9d2ee95445</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:391cce5f-6762-4dd5-8345-24759df53df5</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:58915d1b-721c-4e2f-8b60-999570652301</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -526,7 +526,7 @@ endobj
<< /Type /Catalog /Pages 26 0 R /MarkInfo 27 0 R/Lang (en-US)/Metadata 20 0 R/StructTreeRoot 5 0 R >>
endobj
43 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20240119200024+01'00')/ModDate (D:20240119200024+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20240126210131+01'00')/ModDate (D:20240126210131+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
0 44
@@ -575,7 +575,7 @@ xref
0000023426 00000 n
0000023544 00000 n
trailer
-<< /Size 44 /Root 42 0 R /Info 43 0 R /ID [ <9B1032D5838A13E78C5BD861432B1F63> <9B1032D5838A13E78C5BD861432B1F63> ] >>
+<< /Size 44 /Root 42 0 R /Info 43 0 R /ID [ <7E9B742ACCDBAEA64E0D4254DB9A148F> <7E9B742ACCDBAEA64E0D4254DB9A148F> ] >>
startxref
23767
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf b/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
index bc717f0fa6..476a154f58 100644
--- a/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
+++ b/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
@@ -1,6 +1,6 @@
%PDF-2.0
%ΜΥΑΤΕΨΠΔΖ
-27 0 obj
+28 0 obj
<< /Type /Metadata /Subtype /XML /Length 11390 >>
stream
@@ -210,17 +210,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-01-19T20:00:52+01:00</rdf:li>
+ <rdf:li>2024-01-26T21:01:51+01:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-tagpdf-template.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-01-19T20:00:52+01:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-01-19T20:00:52+01:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-01-19T20:00:52+01:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-01-26T21:01:51+01:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-01-26T21:01:51+01:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-01-26T21:01:51+01:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:f320abfc-f6ab-4d12-8719-d176f4d947cf</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:822d8f21-3463-4bbd-8556-f3a87ef8651a</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:a21419d2-023c-4512-8135-0ae4ab36b4bd</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -239,7 +239,7 @@ stream
<?xpacket end="w"?>
endstream
endobj
-30 0 obj
+31 0 obj
<< /Length 174 >>
stream
/opacity1 gs
@@ -256,86 +256,89 @@ EMC
endstream
endobj
-29 0 obj
-<< /Type /Page /Contents 30 0 R /Resources 28 0 R /MediaBox [ 0 0 612 792 ] /StructParents 0/Tabs /S /Parent 32 0 R >>
+30 0 obj
+<< /Type /Page /Contents 31 0 R /Resources 29 0 R /MediaBox [ 0 0 612 792 ] /StructParents 0/Tabs /S /Parent 33 0 R >>
endobj
-28 0 obj
-<< /ExtGState 1 0 R /Font << /F15 31 0 R >> >>
+29 0 obj
+<< /ExtGState 1 0 R /Font << /F15 32 0 R >> >>
endobj
1 0 obj
<< /opacity1 <</ca 1/CA 1>> >>
endobj
-33 0 obj
+34 0 obj
<< /Marked true >>
endobj
6 0 obj
-<< /Nums [0 [26 0 R]
+<< /Nums [0 [27 0 R]
] >>
endobj
-34 0 obj
-<< /Limits [(ID.01) (ID.05)]/Names [(ID.01) 22 0 R (ID.02) 23 0 R (ID.03) 24 0 R (ID.04) 25 0 R (ID.05) 26 0 R ] >>
-endobj
35 0 obj
-<< /Kids [34 0 R] >>
+<< /Limits [(ID.01) (ID.05)]/Names [(ID.01) 23 0 R (ID.02) 24 0 R (ID.03) 25 0 R (ID.04) 26 0 R (ID.05) 27 0 R ] >>
endobj
36 0 obj
+<< /Kids [35 0 R] >>
+endobj
+7 0 obj
+<< /Artifact /NonStruct /DocumentFragment /Art /Aside /Note /H7 /H6 /H8 /H6 /H9 /H6 /H10 /H6 /Title /Span /FENote /Note /Sub /Span /Em /Span /Strong /Span /chapter /H1 /section /H1 /subsection /H2 /subsubsection /H3 /paragraph /H4 /subparagraph /H5 /P /Span /title /P /part /P /list /L /itemize /L /enumerate /L /description /L /quote /BlockQuote /quotation /BlockQuote /verbatim /Span /item /LI /itemlabel /Lbl /itembody /LBody /footnote /Note /footnotemark /Lbl /footnotelabel /Lbl /text-unit /Part /text /Span /theorem-like /Sect /codeline /Span /float /Note /figures /Sect /tables /Sect >>
+endobj
+37 0 obj
<< /justify <</O/Layout/TextAlign/Justify>> >>
endobj
-8 0 obj
+9 0 obj
<< /Type /Namespace /NS (http://iso.org/pdf/ssn) >>
endobj
-10 0 obj
+11 0 obj
<< /Type /Namespace /NS (http://iso.org/pdf2/ssn) >>
endobj
-12 0 obj
+13 0 obj
<< /Type /Namespace /NS (http://www.w3.org/1998/Math/MathML) >>
endobj
+16 0 obj
+<< /title [/Title 11 0 R] /part [/Title 11 0 R] /section [/H1 11 0 R] /subsection [/H2 11 0 R] /subsubsection [/H3 11 0 R] /paragraph [/H4 11 0 R] /subparagraph [/H5 11 0 R] /list [/L 11 0 R] /itemize [/L 11 0 R] /enumerate [/L 11 0 R] /description [/L 11 0 R] /quote [/BlockQuote 9 0 R] /quotation [/BlockQuote 9 0 R] /verbatim [/P 11 0 R] /item [/LI 11 0 R] /itemlabel [/Lbl 11 0 R] /itembody [/LBody 11 0 R] /footnote [/FENote 11 0 R] /footnotemark [/Lbl 11 0 R] /footnotelabel [/Lbl 11 0 R] /text-unit [/Part 11 0 R] /text [/P 11 0 R] /theorem-like [/Sect 11 0 R] /codeline [/Sub 11 0 R] /float [/Aside 11 0 R] /figures [/Sect 11 0 R] /tables [/Sect 11 0 R] >>
+endobj
15 0 obj
-<< /title [/Title 10 0 R] /part [/Title 10 0 R] /section [/H1 10 0 R] /subsection [/H2 10 0 R] /subsubsection [/H3 10 0 R] /paragraph [/H4 10 0 R] /subparagraph [/H5 10 0 R] /list [/L 10 0 R] /itemize [/L 10 0 R] /enumerate [/L 10 0 R] /description [/L 10 0 R] /quote [/BlockQuote 8 0 R] /quotation [/BlockQuote 8 0 R] /verbatim [/P 10 0 R] /item [/LI 10 0 R] /itemlabel [/Lbl 10 0 R] /itembody [/LBody 10 0 R] /footnote [/FENote 10 0 R] /footnotemark [/Lbl 10 0 R] /footnotelabel [/Lbl 10 0 R] /text-unit [/Part 10 0 R] /text [/P 10 0 R] /theorem-like [/Sect 10 0 R] /codeline [/Sub 10 0 R] /float [/Aside 10 0 R] /figures [/Sect 10 0 R] /tables [/Sect 10 0 R] >>
+<< /Type /Namespace /NS (https://www.latex-project.org/ns/dflt/2022) /RoleMapNS 16 0 R >>
endobj
-14 0 obj
-<< /Type /Namespace /NS (https://www.latex-project.org/ns/dflt/2022) /RoleMapNS 15 0 R >>
+18 0 obj
+<< /chapter [/H1 11 0 R] /section [/H2 11 0 R] /subsection [/H3 11 0 R] /subsubsection [/H4 11 0 R] /paragraph [/H5 11 0 R] /subparagraph [/H6 11 0 R] >>
endobj
17 0 obj
-<< /chapter [/H1 10 0 R] /section [/H2 10 0 R] /subsection [/H3 10 0 R] /subsubsection [/H4 10 0 R] /paragraph [/H5 10 0 R] /subparagraph [/H6 10 0 R] >>
+<< /Type /Namespace /NS (https://www.latex-project.org/ns/book/2022) /RoleMapNS 18 0 R >>
endobj
-16 0 obj
-<< /Type /Namespace /NS (https://www.latex-project.org/ns/book/2022) /RoleMapNS 17 0 R >>
+20 0 obj
+<< /chapter [/Span 11 0 R] /section [/Span 11 0 R] /subsection [/Span 11 0 R] /subsubsection [/Span 11 0 R] /paragraph [/Span 11 0 R] /subparagraph [/Span 11 0 R] /P [/Span 11 0 R] >>
endobj
19 0 obj
-<< /chapter [/Span 10 0 R] /section [/Span 10 0 R] /subsection [/Span 10 0 R] /subsubsection [/Span 10 0 R] /paragraph [/Span 10 0 R] /subparagraph [/Span 10 0 R] /P [/Span 10 0 R] >>
+<< /Type /Namespace /NS (https://www.latex-project.org/ns/inline/2022) /RoleMapNS 20 0 R >>
endobj
-18 0 obj
-<< /Type /Namespace /NS (https://www.latex-project.org/ns/inline/2022) /RoleMapNS 19 0 R >>
+21 0 obj
+<< /Type /Namespace /NS (data:,B029B424-4166-87C8-F620-397B784D410C) >>
endobj
-20 0 obj
-<< /Type /Namespace /NS (data:,2BB44E58-9D2A-B688-A395-4CB6A38386E) >>
-endobj
-7 0 obj
-[ 8 0 R 10 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R ]
-endobj
-22 0 obj
-<< /Type /StructElem /S /Document /P 5 0 R /K 25 0 R /NS 10 0 R /ID (ID.01) >>
+8 0 obj
+[ 9 0 R 11 0 R 13 0 R 15 0 R 17 0 R 19 0 R 21 0 R ]
endobj
23 0 obj
-<< /Type /StructElem /S /Artifact /P 5 0 R /NS 14 0 R /ID (ID.02) >>
+<< /Type /StructElem /S /Document /P 5 0 R /K 26 0 R /NS 11 0 R /ID (ID.01) >>
endobj
24 0 obj
-<< /Type /StructElem /S /Artifact /P 5 0 R /NS 14 0 R /ID (ID.03) >>
+<< /Type /StructElem /S /Artifact /P 5 0 R /NS 15 0 R /ID (ID.02) >>
endobj
25 0 obj
-<< /Type /StructElem /S /text-unit /P 22 0 R /K 26 0 R /NS 14 0 R /ID (ID.04) >>
+<< /Type /StructElem /S /Artifact /P 5 0 R /NS 15 0 R /ID (ID.03) >>
endobj
26 0 obj
-<< /Type /StructElem /S /text /P 25 0 R /K <</Type /MCR /Pg 29 0 R /MCID 0>> /C /justify /NS 14 0 R /ID (ID.05) >>
+<< /Type /StructElem /S /text-unit /P 23 0 R /K 27 0 R /NS 15 0 R /ID (ID.04) >>
+endobj
+27 0 obj
+<< /Type /StructElem /S /text /P 26 0 R /K <</Type /MCR /Pg 30 0 R /MCID 0>> /C /justify /NS 15 0 R /ID (ID.05) >>
endobj
5 0 obj
-<< /Type /StructTreeRoot /K 22 0 R /IDTree 35 0 R /ParentTree 6 0 R /ClassMap 36 0 R /Namespaces 7 0 R >>
+<< /Type /StructTreeRoot /K 23 0 R /IDTree 36 0 R /ParentTree 6 0 R /RoleMap 7 0 R /ClassMap 37 0 R /Namespaces 8 0 R >>
endobj
-37 0 obj
+38 0 obj
[ 28 [ 500 ] 59 [ 500 ] 63 [ 556 ] 84 [ 556 ] 96 [ 392 ] 103 [ 333 ] ]
endobj
-39 0 obj
+40 0 obj
<< /Subtype /CIDFontType0C /Length 1270 >>
stream

@@ -343,10 +346,10 @@ stream
Π ‘ŒŒŒ’ŽΘ €΄Ž‘‘ŽŽŽ‘
endstream
endobj
-38 0 obj
-<< /Type /FontDescriptor /FontName /XJWQZC+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 39 0 R >>
+39 0 obj
+<< /Type /FontDescriptor /FontName /XJWQZC+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 40 0 R >>
endobj
-40 0 obj
+41 0 obj
<< /Length 762 >>
stream
%!PS-Adobe-3.0 Resource-CMap
@@ -388,69 +391,70 @@ end
endstream
endobj
-31 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XJWQZC+LMRoman10-Regular /DescendantFonts [ 41 0 R ] /ToUnicode 40 0 R >>
-endobj
-41 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XJWQZC+LMRoman10-Regular /FontDescriptor 38 0 R /W 37 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
-endobj
32 0 obj
-<< /Type /Pages /Count 1 /Kids [ 29 0 R ] >>
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XJWQZC+LMRoman10-Regular /DescendantFonts [ 42 0 R ] /ToUnicode 41 0 R >>
endobj
42 0 obj
-<< /Type /Catalog /Pages 32 0 R /MarkInfo 33 0 R/Lang (en-US)/Metadata 27 0 R/StructTreeRoot 5 0 R >>
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XJWQZC+LMRoman10-Regular /FontDescriptor 39 0 R /W 38 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+endobj
+33 0 obj
+<< /Type /Pages /Count 1 /Kids [ 30 0 R ] >>
endobj
43 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20240119200052+01'00')/ModDate (D:20240119200052+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Type /Catalog /Pages 33 0 R /MarkInfo 34 0 R/Lang (en-US)/Metadata 28 0 R/StructTreeRoot 5 0 R >>
+endobj
+44 0 obj
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20240126210151+01'00')/ModDate (D:20240126210151+01'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
-0 44
+0 45
0000000002 65535 f
0000011932 00000 n
0000000003 00000 f
0000000004 00000 f
-0000000009 00000 f
-0000014544 00000 n
+0000000010 00000 f
+0000015155 00000 n
0000012015 00000 n
-0000013972 00000 n
-0000012288 00000 n
-0000000011 00000 f
-0000012356 00000 n
-0000000013 00000 f
-0000012426 00000 n
-0000000021 00000 f
-0000013189 00000 n
-0000012507 00000 n
-0000013467 00000 n
-0000013296 00000 n
-0000013775 00000 n
-0000013574 00000 n
-0000013884 00000 n
+0000012225 00000 n
+0000014583 00000 n
+0000012898 00000 n
+0000000012 00000 f
+0000012966 00000 n
+0000000014 00000 f
+0000013036 00000 n
+0000000022 00000 f
+0000013799 00000 n
+0000013117 00000 n
+0000014077 00000 n
+0000013906 00000 n
+0000014385 00000 n
+0000014184 00000 n
+0000014494 00000 n
0000000000 00000 f
-0000014040 00000 n
-0000014137 00000 n
-0000014224 00000 n
-0000014311 00000 n
-0000014410 00000 n
+0000014651 00000 n
+0000014748 00000 n
+0000014835 00000 n
+0000014922 00000 n
+0000015021 00000 n
0000000020 00000 n
0000011869 00000 n
0000011734 00000 n
0000011500 00000 n
-0000017150 00000 n
-0000017504 00000 n
+0000017776 00000 n
+0000018130 00000 n
0000011979 00000 n
0000012056 00000 n
0000012188 00000 n
-0000012225 00000 n
-0000014666 00000 n
-0000016107 00000 n
-0000014753 00000 n
-0000016328 00000 n
-0000017304 00000 n
-0000017566 00000 n
-0000017684 00000 n
+0000012835 00000 n
+0000015292 00000 n
+0000016733 00000 n
+0000015379 00000 n
+0000016954 00000 n
+0000017930 00000 n
+0000018192 00000 n
+0000018310 00000 n
trailer
-<< /Size 44 /Root 42 0 R /Info 43 0 R /ID [ <35EA0A3564780016E32C886EF0615181> <35EA0A3564780016E32C886EF0615181> ] >>
+<< /Size 45 /Root 43 0 R /Info 44 0 R /ID [ <CD8B7B610F3E857FEE2BD3930A7259D2> <CD8B7B610F3E857FEE2BD3930A7259D2> ] >>
startxref
-17907
+18533
%%EOF
diff --git a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
index 8a6554e31b..809fb896fc 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
@@ -47,13 +47,13 @@
% }^^A
% }
%
-% \date{Version 0.98s, released 2024-01-19}
+% \date{Version 0.98t, released 2024-01-26}
% \maketitle
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*luatex>
-\ProvidesExplFile {tagpdf-luatex.def} {2024-01-19} {0.98s}
+\ProvidesExplFile {tagpdf-luatex.def} {2024-01-26} {0.98t}
{tagpdf~driver~for~luatex}
% \end{macrocode}
% \section{Loading the lua}
@@ -158,8 +158,8 @@
local ProvidesLuaModule = {
name = "tagpdf",
- version = "0.98s", --TAGVERSION
- date = "2024-01-19", --TAGDATE
+ version = "0.98t", --TAGVERSION
+ date = "2024-01-26", --TAGDATE
description = "tagpdf lua code",
license = "The LATEX Project Public License 1.3c"
}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
index 7053050c3f..5205df1cf6 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.98s, released 2024-01-19}
+% \date{Version 0.98t, released 2024-01-26}
% \maketitle
% \begin{documentation}
% \section{Commands}
@@ -327,7 +327,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-checks-code} {2024-01-19} {0.98s}
+\ProvidesExplPackage {tagpdf-checks-code} {2024-01-26} {0.98t}
{part of tagpdf - code related to checks, conditionals, debugging and messages}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-code.pdf b/macros/latex/contrib/tagpdf/tagpdf-code.pdf
index 0971abe817..67914b3a80 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-code.pdf
+++ b/macros/latex/contrib/tagpdf/tagpdf-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/tagpdf-data.dtx b/macros/latex/contrib/tagpdf/tagpdf-data.dtx
index dd084f03eb..e9f0d14790 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-data.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-data.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.98s, released 2024-01-19}
+% \date{Version 0.98t, released 2024-01-26}
% \maketitle
% \begin{documentation}
% This files contains a various data files which are read in
@@ -60,7 +60,7 @@
% It lists the new tag, the rolemap and the namespace of the rolemap.
% \begin{macrocode}
%<*ns-latex>
-%% \ProvidesExplFile {tagpdf-ns-latex.def} {2024-01-19} {0.98s}
+%% \ProvidesExplFile {tagpdf-ns-latex.def} {2024-01-26} {0.98t}
%% {latex} {https://www.latex-project.org/ns/dflt/2022}{}
title, Title, pdf2,
part, Title, pdf2,
@@ -92,7 +92,7 @@ text, P, pdf2,
% It is bound to change
% \begin{macrocode}
%<*ns-latex-book>
-%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2024-01-19} {0.98s}
+%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2024-01-26} {0.98t}
%% {latex-book} {https://www.latex-project.org/ns/book/2022}{}
chapter, H1,pdf2,
section, H2,pdf2,
@@ -108,7 +108,7 @@ subparagraph, H6,pdf2,
% loaded.
% \begin{macrocode}
%<*ns-latex-inline>
-%% \ProvidesExplFile {tagpdf-ns-latex-inline.def} {2024-01-19} {0.98s}
+%% \ProvidesExplFile {tagpdf-ns-latex-inline.def} {2024-01-26} {0.98t}
%% {latex-inline} {https://www.latex-project.org/ns/inline/2022}{}
chapter, Span, pdf2,
section, Span, pdf2,
@@ -122,7 +122,7 @@ P, Span, pdf2,
% \section{The pdf namespace data}
% \begin{macrocode}
%<*ns-pdf>
-%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2024-01-19} {0.98s}
+%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2024-01-26} {0.98t}
%% {pdf} {http://iso.org/pdf/ssn}{}
StructTreeRoot,StructTreeRoot,pdf,D,
Document,Document,pdf,D,
@@ -190,7 +190,7 @@ Strong,Span,pdf,I,
% \section{The pdf 2.0 namespace data}
% \begin{macrocode}
%<*ns-pdf2>
-%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2024-01-19} {0.98s}
+%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2024-01-26} {0.98t}
%% {pdf2} {http://iso.org/pdf2/ssn}{}
StructTreeRoot,StructTreeRoot,pdf2,D,
Document,Document,pdf2,D,
@@ -247,7 +247,7 @@ Strong,Strong,pdf2,I,
% \section{The mathml namespace data}
% \begin{macrocode}
%<*ns-mathml>
-%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2024-01-19} {0.98s}
+%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2024-01-26} {0.98t}
% {mathml}{http://www.w3.org/1998/Math/MathML}{}
abs,abs,mathml,
and,and,mathml,
@@ -482,7 +482,7 @@ xor,xor,mathml,
% This will perhaps change in future.
% \begin{macrocode}
%<*parent-child>
-%% \ProvidesExplFile {tagpdf-parent-child.csv} {2024-01-19} {0.98s}
+%% \ProvidesExplFile {tagpdf-parent-child.csv} {2024-01-26} {0.98t}
,,,StructTreeRoot,Document,Art,Part,Div,Sect,BlockQuote,NonStruct,TOC,TOCI,Index,Private,Quote,Note,Reference,BibEntry,P,Hn,H,Lbl,Code,Span,Link,Annot,Form,Ruby,RB,RT,RP,Warichu,WT,WP,L,LI,LBody,Table,TR,TH,TD,THead,TBody,TFoot,Caption,Figure,Formula,MC
Document,both,document level,1,0..n,βˆ…,‑,‑,βˆ…,0..n,‑,βˆ…,βˆ…,βˆ…,0..n,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…
Art,1.7,grouping,βˆ…,0..n,βˆ…,‑,‑,0..n,0..n,‑,βˆ…,βˆ…,βˆ…,0..n,βˆ…,0..n,βˆ…,βˆ…,βˆ…,0..1,0..1,βˆ…,βˆ…,βˆ…,0..n,0..n,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,0..n,βˆ…,βˆ…,0..n,0..n,βˆ…,βˆ…,βˆ…,0..n,0..n,βˆ…,βˆ…
@@ -537,7 +537,7 @@ MC,both,---,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,0..n,‑,βˆ…,βˆ…,βˆ…,0..n,0..n,0..n,0..n,0..
% This will perhaps change in future.
% \begin{macrocode}
%<*parent-child-2>
-%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2024-01-19} {0.98s}
+%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2024-01-26} {0.98t}
,,,StructTreeRoot,Document,DocumentFragment,Art,Part,Div,Sect,Aside,BlockQuote,NonStruct,TOC,TOCI,Index,Private,Title,Sub,Quote,Note,Reference,BibEntry,P,Hn,H,Lbl,Code,Em,Strong,Span,Link,Annot,Form,Ruby,RB,RT,RP,Warichu,WT,WP,FENote,L,LI,LBody,Table,TR,TH,TD,THead,TBody,TFoot,Caption,Figure,Formula,math,mathml,Artifact,MC
Document,both,document level,1,0..n,0..n,βˆ…,‑,‑,βˆ…,0..n,0..n,‑,βˆ…,βˆ…,βˆ…,0..n,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,0..n,βˆ…
DocumentFragment,2.0,document level,βˆ…,0..n,0..n,0..n,‑,‑,0..n,0..n,0..n,‑,βˆ…,βˆ…,βˆ…,0..n,βˆ…,βˆ…,βˆ…,βˆ…*,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…*,βˆ…,βˆ…,βˆ…,βˆ…*,βˆ…*,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…*,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…,βˆ…*,βˆ…,βˆ…,βˆ…,βˆ…,0..n,βˆ…
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
index c27e33d6e7..3764e92d11 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98s, released 2024-01-19}
+% \date{Version 0.98t, released 2024-01-26}
% \maketitle
% \begin{documentation}
% \end{documentation}
@@ -55,11 +55,11 @@
% \begin{macrocode}
%<@@=tag>
%<*generic>
-\ProvidesExplPackage {tagpdf-mc-code-generic} {2024-01-19} {0.98s}
+\ProvidesExplPackage {tagpdf-mc-code-generic} {2024-01-26} {0.98t}
{part of tagpdf - code related to marking chunks - generic mode}
%</generic>
%<*debug>
-\ProvidesExplPackage {tagpdf-debug-generic} {2024-01-19} {0.98s}
+\ProvidesExplPackage {tagpdf-debug-generic} {2024-01-26} {0.98t}
{part of tagpdf - debugging code related to marking chunks - generic mode}
%</debug>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
index c10aca5b93..20dd45ecc2 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98s, released 2024-01-19}
+% \date{Version 0.98t, released 2024-01-26}
% \maketitle
% \begin{implementation}
% The code is splitted into three parts: code shared by all engines,
@@ -86,11 +86,11 @@
% \begin{macrocode}
%<@@=tag>
%<*luamode>
-\ProvidesExplPackage {tagpdf-mc-code-lua} {2024-01-19} {0.98s}
+\ProvidesExplPackage {tagpdf-mc-code-lua} {2024-01-26} {0.98t}
{tagpdf - mc code only for the luamode }
%</luamode>
%<*debug>
-\ProvidesExplPackage {tagpdf-debug-lua} {2024-01-19} {0.98s}
+\ProvidesExplPackage {tagpdf-debug-lua} {2024-01-26} {0.98t}
{part of tagpdf - debugging code related to marking chunks - lua mode}
%</debug>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
index f08a0a8f4c..db7c727770 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98s, released 2024-01-19}
+% \date{Version 0.98t, released 2024-01-26}
% \maketitle
% \begin{documentation}
% \section{Public Commands}
@@ -181,7 +181,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-mc-code-shared} {2024-01-19} {0.98s}
+\ProvidesExplPackage {tagpdf-mc-code-shared} {2024-01-26} {0.98t}
{part of tagpdf - code related to marking chunks -
code shared by generic and luamode }
%</header>
diff --git a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
index c700553f33..682c4e387a 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98s, released 2024-01-19}
+% \date{Version 0.98t, released 2024-01-26}
% \maketitle
% \begin{documentation}
% \begin{function}
@@ -98,7 +98,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-roles-code} {2024-01-19} {0.98s}
+\ProvidesExplPackage {tagpdf-roles-code} {2024-01-26} {0.98t}
{part of tagpdf - code related to roles and structure names}
%</header>
% \end{macrocode}
@@ -353,14 +353,14 @@
% \end{macrocode}
% \end{variable}
% Now we setup the standard names spaces.
-% The mathml space is currently only loaded for pdf 2.0.
+% The mathml space is loaded also for pdf < 2.0
+% but not added to RoleMap unless a boolean is set to true with
+% |tagpdf-setup{mathml-tags}|.
% \begin{macrocode}
+\bool_new:N \g_@@_role_add_mathml_bool
\@@_role_NS_new:nnn {pdf} {http://iso.org/pdf/ssn}{}
\@@_role_NS_new:nnn {pdf2} {http://iso.org/pdf2/ssn}{}
-\pdf_version_compare:NnF < {2.0}
- {
- \@@_role_NS_new:nnn {mathml}{http://www.w3.org/1998/Math/MathML}{}
- }
+\@@_role_NS_new:nnn {mathml}{http://www.w3.org/1998/Math/MathML}{}
\@@_role_NS_new:nnn {latex} {https://www.latex-project.org/ns/dflt/2022}{}
\@@_role_NS_new:nnn {latex-book} {https://www.latex-project.org/ns/book/2022}{}
\@@_role_NS_new:nnn {latex-inline} {https://www.latex-project.org/ns/inline/2022}{}
@@ -542,7 +542,25 @@
{
\prop_gput:cno { g_@@_role_NS_#2_prop } {#1}{\l_@@_tmpa_tl}
}
- }
+ }
+% \end{macrocode}
+% We also store into the pdf 1.7 rolemapping so that we can
+% add that as fallback for pdf 1.7 processor
+% \begin{macrocode}
+ \tl_if_empty:nF { #3 }
+ {
+ \tl_if_eq:nnF{#1}{#3}
+ {
+ \prop_get:NnN \g_@@_role_rolemap_prop {#3}\l_@@_tmpa_tl
+ \quark_if_no_value:NTF \l_@@_tmpa_tl
+ {
+ \prop_gput:Nne \g_@@_role_rolemap_prop {#1}{\tl_to_str:n{#3}}
+ }
+ {
+ \prop_gput:NnV \g_@@_role_rolemap_prop {#1}\l_@@_tmpa_tl
+ }
+ }
+ }
}
\cs_generate_variant:Nn \@@_role_add_tag:nnnn {VVVV}
% \end{macrocode}
@@ -697,8 +715,7 @@
% \begin{macrocode}
\@@_role_read_namespace:n {pdf}
\@@_role_read_namespace:n {pdf2}
-\pdf_version_compare:NnF < {2.0}
- {\@@_role_read_namespace:n {mathml}}
+\@@_role_read_namespace:n {mathml}
% \end{macrocode}
% in pdf 1.7 the following namespaces should only store
% the settings for later use:
@@ -1274,7 +1291,8 @@
\keys_define:nn { @@ / setup }
{
- add-new-tag .code:n =
+ mathml-tags .bool_gset:N = \g_@@_role_add_mathml_bool
+ ,add-new-tag .code:n =
{
\keys_set_known:nnnN
{@@/tag-role}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-space.dtx b/macros/latex/contrib/tagpdf/tagpdf-space.dtx
index 4119753bfd..feff45c173 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-space.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-space.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98s, released 2024-01-19}
+% \date{Version 0.98t, released 2024-01-26}
% \maketitle
% \begin{documentation}
% \begin{function}{interwordspace (setup-key)}
@@ -64,7 +64,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-space-code} {2024-01-19} {0.98s}
+\ProvidesExplPackage {tagpdf-space-code} {2024-01-26} {0.98t}
{part of tagpdf - code related to real space chars}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
index 73224158a7..bcc9083ae2 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98s, released 2024-01-19}
+% \date{Version 0.98t, released 2024-01-26}
% \maketitle
% \begin{documentation}
% \section{Public Commands}
@@ -285,7 +285,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-struct-code} {2024-01-19} {0.98s}
+\ProvidesExplPackage {tagpdf-struct-code} {2024-01-26} {0.98t}
{part of tagpdf - code related to storing structure}
%</header>
% \end{macrocode}
@@ -1905,7 +1905,7 @@
% \section{Attributes and attribute classes}
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage {tagpdf-attr-code} {2024-01-19} {0.98s}
+\ProvidesExplPackage {tagpdf-attr-code} {2024-01-26} {0.98t}
{part of tagpdf - code related to attributes and attribute classes}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
index fd0a8bfc2f..362f3ecf7e 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
@@ -47,13 +47,13 @@
% }^^A
% }
%
-% \date{Version 0.98s, released 2024-01-19}
+% \date{Version 0.98t, released 2024-01-26}
% \maketitle
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-tree-code} {2024-01-19} {0.98s}
+\ProvidesExplPackage {tagpdf-tree-code} {2024-01-26} {0.98t}
{part of tagpdf - code related to writing trees and dictionaries to the pdf}
%</header>
% \end{macrocode}
@@ -191,48 +191,25 @@
% \begin{macro}{\@@_tree_write_structtreeroot:}
% This writes out the root object.
% \begin{macrocode}
-\pdf_version_compare:NnTF < {2.0}
- {
- \cs_new_protected:Npn \@@_tree_write_structtreeroot:
- {
- \@@_prop_gput:cne
- { g_@@_struct_0_prop }
- { ParentTree }
- { \pdf_object_ref:n { @@/tree/parenttree } }
- \@@_prop_gput:cne
- { g_@@_struct_0_prop }
- { RoleMap }
- { \pdf_object_ref:n { @@/tree/rolemap } }
- \@@_struct_fill_kid_key:n { 0 }
- \@@_struct_get_dict_content:nN { 0 } \l_@@_tmpa_tl
- \pdf_object_write:nne
- { @@/struct/0 }
- {dict}
- {
- \l_@@_tmpa_tl
- }
- }
- }
-% \end{macrocode}
-% no RoleMap in pdf 2.0
-% \begin{macrocode}
- {
- \cs_new_protected:Npn \@@_tree_write_structtreeroot:
- {
- \@@_prop_gput:cne
- { g_@@_struct_0_prop }
- { ParentTree }
- { \pdf_object_ref:n { @@/tree/parenttree } }
- \@@_struct_fill_kid_key:n { 0 }
- \@@_struct_get_dict_content:nN { 0 } \l_@@_tmpa_tl
- \pdf_object_write:nne
- { @@/struct/0 }
- {dict}
- {
- \l_@@_tmpa_tl
- }
- }
- }
+\cs_new_protected:Npn \@@_tree_write_structtreeroot:
+ {
+ \@@_prop_gput:cne
+ { g_@@_struct_0_prop }
+ { ParentTree }
+ { \pdf_object_ref:n { @@/tree/parenttree } }
+ \@@_prop_gput:cne
+ { g_@@_struct_0_prop }
+ { RoleMap }
+ { \pdf_object_ref:n { @@/tree/rolemap } }
+ \@@_struct_fill_kid_key:n { 0 }
+ \@@_struct_get_dict_content:nN { 0 } \l_@@_tmpa_tl
+ \pdf_object_write:nne
+ { @@/struct/0 }
+ {dict}
+ {
+ \l_@@_tmpa_tl
+ }
+ }
% \end{macrocode}
% \end{macro}
%
@@ -417,12 +394,10 @@
% The main part here is handled in the role module, here we only define the
% command which writes it to the PDF.
% \begin{variable}{@@/tree/rolemap}
-% At first we reserve again an object.
+% At first we reserve again an object.
+% Rolemap is also used in PDF 2.0 as a fallback.
% \begin{macrocode}
-\pdf_version_compare:NnT < {2.0}
- {
- \pdf_object_new:n { @@/tree/rolemap }
- }
+\pdf_object_new:n { @@/tree/rolemap }
% \end{macrocode}
% \end{variable}
%
@@ -430,29 +405,29 @@
% This writes out the rolemap, basically it simply pushes out
% the dictionary which has been filled in the role module.
% \begin{macrocode}
-\pdf_version_compare:NnTF < {2.0}
- {
- \cs_new_protected:Npn \@@_tree_write_rolemap:
- {
- \prop_map_inline:Nn\g_@@_role_rolemap_prop
+\cs_new_protected:Npn \@@_tree_write_rolemap:
+ {
+ \bool_if:NT \g_@@_role_add_mathml_bool
+ {
+ \prop_map_inline:Nn \g_@@_role_NS_mathml_prop
{
- \tl_if_eq:nnF {##1}{##2}
- {
- \pdfdict_gput:nne {g_@@_role/RoleMap_dict}
- {##1}
- {\pdf_name_from_unicode_e:n{##2}}
- }
+ \prop_gput:Nnn \g_@@_role_rolemap_prop {##1}{Span}
}
- \pdf_object_write:nne { @@/tree/rolemap }{dict}
- {
- \pdfdict_use:n{g_@@_role/RoleMap_dict}
- }
+ }
+ \prop_map_inline:Nn\g_@@_role_rolemap_prop
+ {
+ \tl_if_eq:nnF {##1}{##2}
+ {
+ \pdfdict_gput:nne {g_@@_role/RoleMap_dict}
+ {##1}
+ {\pdf_name_from_unicode_e:n{##2}}
+ }
+ }
+ \pdf_object_write:nne { @@/tree/rolemap }{dict}
+ {
+ \pdfdict_use:n{g_@@_role/RoleMap_dict}
}
- }
- {
- \cs_new_protected:Npn \@@_tree_write_rolemap:{}
- }
-
+ }
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex/contrib/tagpdf/tagpdf-user.dtx b/macros/latex/contrib/tagpdf/tagpdf-user.dtx
index 682708d4f9..ebdc8cece2 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-user.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-user.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98s, released 2024-01-19}
+% \date{Version 0.98t, released 2024-01-26}
% \maketitle
% \begin{documentation}
% \section{Setup commands}
@@ -303,7 +303,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-user} {2024-01-19} {0.98s}
+\ProvidesExplPackage {tagpdf-user} {2024-01-26} {0.98t}
{tagpdf - user commands}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf.dtx b/macros/latex/contrib/tagpdf/tagpdf.dtx
index 4eb87d0faf..71585725aa 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf.dtx
@@ -84,7 +84,7 @@
% \begin{macrocode}
%<@@=tag>
%<*package>
-\ProvidesExplPackage {tagpdf} {2024-01-19} {0.98s}
+\ProvidesExplPackage {tagpdf} {2024-01-26} {0.98t}
{ A package to experiment with pdf tagging }
\bool_if:nF
@@ -110,7 +110,7 @@
% \end{macrocode}
%<*debug>
% \begin{macrocode}
-\ProvidesExplPackage {tagpdf-debug} {2024-01-19} {0.98s}
+\ProvidesExplPackage {tagpdf-debug} {2024-01-26} {0.98t}
{ debug code for tagpdf }
\@ifpackageloaded{tagpdf}{}{\PackageWarning{tagpdf-debug}{tagpdf~not~loaded,~quitting}\endinput}
% \end{macrocode}
@@ -133,7 +133,7 @@
% we define a base package with dummy functions
% \begin{macrocode}
%<*base>
-\ProvidesExplPackage {tagpdf-base} {2024-01-19} {0.98s}
+\ProvidesExplPackage {tagpdf-base} {2024-01-26} {0.98t}
{part of tagpdf - provide base, no-op versions of the user commands }
%</base>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf.pdf b/macros/latex/contrib/tagpdf/tagpdf.pdf
index e8bd9118bb..61f0c3e3c3 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.pdf
+++ b/macros/latex/contrib/tagpdf/tagpdf.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/tagpdf.tex b/macros/latex/contrib/tagpdf/tagpdf.tex
index 740d82b290..2d9ab2ef1b 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.tex
+++ b/macros/latex/contrib/tagpdf/tagpdf.tex
@@ -16,8 +16,8 @@
}
\DebugBlocksOff
\makeatletter
-\def\UlrikeFischer@package@version{0.98s}
-\def\UlrikeFischer@package@date{2024-01-19}
+\def\UlrikeFischer@package@version{0.98t}
+\def\UlrikeFischer@package@date{2024-01-26}
\makeatother
\documentclass[bibliography=totoc,a4paper]{article}
@@ -2238,6 +2238,23 @@ Starting with version 0.98 work has started to setup specific latex tags. In
\PDF{} 2.0 in form of a special name space, with \PDF{} 1.7 or older the
tags are role mapped. This is work in progress and bound to change.
+\subsection{Fallback RoleMap}
+
+As mentioned above PDF 2.0 support name spaces for tags. This is quite nice. At first because it
+avoid name clashes, but also because it allow to build a cleaner model of the document structure.
+
+But sadly support for PDF 2.0 is still quite scarce and while most PDF readers have no problems
+to open and render a PDF 2.0 file they don't \enquote{see} the role mapping if name spaces are used.
+Therefore since version 0.98t \pkg{tagpdf} adds in PDF 2.0 files additionally also a global |/RoleMap|
+dictionary as a fallback for such processors.
+
+\subsection{Mathml}
+
+In PDF 2.0 mathml tags have their own name space and can be freely used.
+In PDF 1.7. they can only be used if they are rolemapped to a standard type.
+By default they are not added to the |/RoleMap| dictionary, but this can be
+forced with |\tagpdfsetup{mathml-tags}|. Please note that this adds mathml at the end of the document and overwrites tag with the same name without warning.
+
\section{Checking parent-child rules}\label{sec:parent-child}
diff --git a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
index d6f5e6eb59..90418591a0 100644
--- a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
+++ b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
@@ -1,5 +1,5 @@
%\RequirePackage[enable-debug]{expl3}[2018/06/14]
-\ProvidesExplPackage {tagpdfdocu-patches} {2024-01-19} {0.98s}
+\ProvidesExplPackage {tagpdfdocu-patches} {2024-01-26} {0.98t}
{patches/commands for the tagpdf documentation}
\RequirePackage{etoolbox,xpatch}