diff options
author | Norbert Preining <norbert@preining.info> | 2023-06-10 03:04:15 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-06-10 03:04:15 +0000 |
commit | 779e1e8aae671dfb73e0c5a19791be243af01cbe (patch) | |
tree | a9dba6085be5122eec4a3659d01dd33a5b1c774b /macros/latex/required/latex-lab/latex-lab-mathtools.dtx | |
parent | 33607c11aca40cfb1f454d818091f19aa47ba651 (diff) |
CTAN sync 202306100304
Diffstat (limited to 'macros/latex/required/latex-lab/latex-lab-mathtools.dtx')
-rw-r--r-- | macros/latex/required/latex-lab/latex-lab-mathtools.dtx | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/macros/latex/required/latex-lab/latex-lab-mathtools.dtx b/macros/latex/required/latex-lab/latex-lab-mathtools.dtx new file mode 100644 index 0000000000..c3f43243b1 --- /dev/null +++ b/macros/latex/required/latex-lab/latex-lab-mathtools.dtx @@ -0,0 +1,223 @@ +% \iffalse meta-comment +% +%% File: latex-lab-mathtools.dtx +% +% Copyright (C) 2022,2023 The LaTeX Project +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License (LPPL), either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in the file +% +% https://www.latex-project.org/lppl.txt +% +% +% The development version of the bundle can be found below +% +% https://github.com/latex3/latex2e/required/latex-lab +% +% for those people who are interested or want to report an issue. +% +%<*driver> +\documentclass{l3doc} +\EnableCrossrefs +\CodelineIndex +\begin{document} + \DocInput{latex-lab-amsmath.dtx} +\end{document} +%</driver> +% +% \fi +% +% +% \title{The \texttt{latex-lab-mathtools} code\thanks{}} +% \author{\LaTeX{} Project} +% +% \maketitle +% +% \newcommand\fmi[1]{\begin{quote} TODO: \itshape #1\end{quote}} +% \newcommand\NEW[1]{\marginpar{\mbox{}\hfill\fbox{New: #1}}} +% \providecommand\class[1]{\texttt{#1.cls}} +% \providecommand\pkg[1]{\texttt{#1}} +% \providecommand\hook[1]{\texttt{#1}} +% +% \begin{abstract} +% \end{abstract} +% +% \tableofcontents +% +% \section{Introduction} +% +% This file implements adaptions to the \pkg{mathtools} package needed for +% the tagging project. +% +% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex } +% +% \section{The Implementation} +% +% \begin{macrocode} +%<@@=math> +% \end{macrocode} +% +% \begin{macrocode} +%<*kernel> +% \end{macrocode} +% +% \subsection{File declaration} +% \begin{macrocode} +\ProvidesFile{latex-lab-mathtools.ltx} + [2023-01-05 v0.1a mathtools adaptions] +% \end{macrocode} +% \subsection{Tagpdf support} +% To make the code independent from tagging being loaded and active +% we load the \pkg{tagpdf-base} package: +% +% \begin{macrocode} +\RequirePackage{tagpdf-base} +% \end{macrocode} +% +% \subsection{\cs{shortintertext}} +% Similar to the \cs{intertext} command from amsmath, +% \cs{shortintertext} errors with active tagging as it is processed twice +% which leads to duplicated structures. +% The fix is similar but is complicated as \pkg{mathtools} defines two version (and +% an additional \cs{intertext} version) and package options to switch between the variants. +% +% At first we redefine all the internal commands +% \begin{macrocode} +\ExplSyntaxOn +\tl_new:N\l_@@_mathtools_init_tl +\AddToHook{package/mathtools/after} + {% + \cs_if_eq:NNTF\intertext@ \MT_intertext: + { + \tl_set:Nn \l_@@_mathtools_init_tl {\MT_orig_intertext_false:} + } + { + \tl_set:Nn \l_@@_mathtools_init_tl {\MT_orig_intertext_true:} + } + \cs_if_eq:NNTF\shortintertext@ \MT_shortintertext:n + { + \tl_put_right:Nn \l_@@_mathtools_init_tl + {\MT_orig_shortintertext_false:} + } + { + \tl_put_right:Nn \l_@@_mathtools_init_tl + {\MT_orig_shortintertext_true:} + } + \def\MT_intertext: {% + \def\intertext##1{% + \ifvmode\else\\\@empty\fi + \noalign{% + \penalty\postdisplaypenalty\vskip\belowdisplayskip + \vskip-\lineskiplimit % CCS + \vskip\normallineskiplimit % CCS + \vskip\l_MT_above_intertext_sep + \vbox{% +% \end{macrocode} +% Stop tagging when measuring: +% \begin{macrocode} + \ifmeasuring@\tag_stop:\fi + \normalbaselines + \ifdim + \ifdim\@totalleftmargin=\z@ + \linewidth + \else + -\maxdimen + \fi + =\columnwidth + \else \parshape\@ne \@totalleftmargin \linewidth + \fi +% \end{macrocode} +% End the previous mc: +% \begin{macrocode} + \tag_mc_end_push: +% \end{macrocode} +% We are already in a par so we change now to Span: +% \begin{macrocode} + \tagpdfsetup{paratag=Span} + \noindent\ignorespaces##1\par +% \end{macrocode} +% Restart the MC +% \begin{macrocode} + \tag_mc_begin_pop:n{}}% + \penalty\predisplaypenalty\vskip\abovedisplayskip% + \vskip-\lineskiplimit % CCS + \vskip\normallineskiplimit % CCS + \vskip\l_MT_below_intertext_sep + }% + }% + \MH_let:NwN \shortintertext \shortintertext@ + } +% \end{macrocode} +% \begin{macrocode} + \def\MT_orig_shortintertext:n #1{% + \ifvmode\else\\\@empty\fi + \noalign{% + \penalty\postdisplaypenalty\vskip\abovedisplayshortskip + \vbox{% + \ifmeasuring@\tag_stop:\fi + \normalbaselines + \MH_if_dim:w + \MH_if_dim:w \@totalleftmargin=\z@ + \linewidth + \MH_else: + -\maxdimen + \MH_fi: + =\columnwidth + \MH_else: + \parshape\@ne \@totalleftmargin \linewidth + \MH_fi: + \tag_mc_end_push: + \tagpdfsetup{paratag=Span} + \noindent\ignorespaces#1\par + \tag_mc_begin_pop:n{}} + \penalty\predisplaypenalty\vskip\abovedisplayshortskip% + }% + } + + \def\MT_shortintertext:n #1{% + \ifvmode\else\\\@empty\fi + \noalign{% + \penalty\postdisplaypenalty\vskip\abovedisplayshortskip + \vskip-\lineskiplimit + \vskip\normallineskiplimit + \vskip\l_MT_above_shortintertext_sep + \vbox{% + \ifmeasuring@\tag_stop:\fi + \normalbaselines + \MH_if_dim:w + \MH_if_dim:w \@totalleftmargin=\z@ + \linewidth + \MH_else: + -\maxdimen + \MH_fi: + =\columnwidth + \MH_else: + \parshape\@ne \@totalleftmargin \linewidth + \MH_fi: + \tag_mc_end_push: + \tagpdfsetup{paratag=Span} + \noindent\ignorespaces#1\par + \tag_mc_begin_pop:n{}}% + \penalty\predisplaypenalty\vskip\abovedisplayshortskip% + \vskip-\lineskiplimit + \vskip\normallineskiplimit + \vskip\l_MT_below_shortintertext_sep + }% + } + +% \end{macrocode} +% end hook +% \begin{macrocode} + \l_@@_mathtools_init_tl +} +\ExplSyntaxOff +% \end{macrocode} +% +% \begin{macrocode} +%</kernel> +% \end{macrocode} +% +% \Finale +% |