% \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} % % % \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} % % \end{macrocode} % % \Finale %