% \iffalse meta-comment % %% File: latex-lab-new-or-2.dtx % Copyright (C) 2022-2025 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. % \def\ltlabneworIIdate{2025-02-12} \def\ltlabneworIIversion{0.86b} %<*driver> \documentclass{l3doc} \EnableCrossrefs \CodelineIndex \begin{document} \DocInput{latex-lab-new-or-2.dtx} \end{document} % % % \fi % % % \title{The \texttt{latex-lab-testphase-new-or-2} code} % \author{Frank Mittelbach, \LaTeX{} Project} % % \date{v\ltlabneworIIversion\ \ltlabneworIIdate} % \maketitle % % \newcommand\fmi[1]{\begin{quote} TODO: \itshape #1\end{quote}} % \newcommand\NEW[1]{\marginpar{\mbox{}\hfill\fbox{New: #1}}} % \providecommand\pkg[1]{\texttt{#1}} % % \providecommand\hook[1]{\texttt{#1\DescribeHook[noprint]{#1}}} % \providecommand\socket[1]{\texttt{#1\DescribeSocket[noprint]{#1}}} % \providecommand\plug[1]{\texttt{#1\DescribePlug[noprint]{#1}}} % % \NewDocElement[printtype=\textit{socket},idxtype=socket,idxgroup=Sockets]{Socket}{socketdecl} % \NewDocElement[printtype=\textit{plug},idxtype=plug,idxgroup=Plugs]{Plug}{plugdecl} % \NewDocElement[printtype=\textit{hook},idxtype=hook,idxgroup=Hooks]{Hook}{hookdecl} % % % \begin{abstract} % This code implements changes to the output routine intended to be % moved in the \LaTeX{} kernel at some point in the future. % \end{abstract} % % % % % \section{Introduction} % % % % % \StopEventually{\setlength\IndexMin{200pt} \PrintIndex } % % % \section{The Implementation} % % \begin{macrocode} %<*package> % \end{macrocode} % % \subsection{File declaration} % \begin{macrocode} \ProvidesPackage{latex-lab-testphase-new-or-2} [\ltlabneworIIdate\space v\ltlabneworIIversion\space Changes to the output routine] % \end{macrocode} % % \subsection{\cs{@makecol} reimplementation} % % \begin{plugdecl}{footnote-floats} % If \cs{DocumentMetadata} is used we use \plug{footnotes-floats} % as the default. In 2e compatibility mode this should be changed to % \plug{footnotes-floats-legacy}. % \begin{macrocode} \AssignSocketPlug {build/column/outputbox}{footnotes-floats} % \end{macrocode} % \end{plugdecl} % % % % \begin{macro}{\@makecol@handlesplitfootnotes} % \begin{macro}{\@makecol@splitfootnotemessagehook} % This is only an early draft and doesn't do much. % Contains incomplete preparation for tagging commented out. % \fmi{Interfaces and code will change in the future} % \begin{macrocode} \def\@makecol@handlesplitfootnotes {% % \ifx\splitfootnote@continuation\@empty \else % \setbox\footins\vbox{\splitfootnote@continuation\unvbox\footins}% % \global\let\splitfootnote@continuation\@empty % \fi \ifnum\insertpenalties>\z@ \@makecol@splitfootnotemessagehook % \setbox\footins\vbox{\unvbox\footins --- END at split}% % \gdef\splitfootnote@continuation {--- START after split}% \fi } %\def\splitfootnote@continuation{} % \end{macrocode} % This could issue warning if split footnotes are encountered. % \begin{macrocode} \let \@makecol@splitfootnotemessagehook \@empty % \end{macrocode} % \end{macro} % \end{macro} % % % % % % % \subsection{\cs{@outputpage} reimplementation} % % We still have to deal with various plug setting for tagging: % This needs documentation and moving. % % \begin{plugdecl}{default} % \begin{macrocode} \ExplSyntaxOn % \end{macrocode} % \fmi{where should these plug declarations go? tagpdf?} % \begin{macrocode} \NewSocketPlug{tagsupport/build/page/header}{default} { \__tag_hook_kernel_before_head: #2 \__tag_hook_kernel_after_head: } % \end{macrocode} % % \begin{macrocode} \AssignSocketPlug{tagsupport/build/page/header}{default} % \end{macrocode} % % \end{plugdecl} % % \begin{plugdecl}{default} % \begin{macrocode} \NewSocketPlug{tagsupport/build/page/footer}{default} { \__tag_hook_kernel_before_foot: #2 \__tag_hook_kernel_after_foot: } % \end{macrocode} % % \begin{macrocode} \AssignSocketPlug{tagsupport/build/page/footer}{default} % \end{macrocode} % % \end{plugdecl} % % \begin{plugdecl}{default} % \begin{macrocode} \NewSocketPlug{tagsupport/build/column/outputbox}{default} { \__tag_check_typeout_v:n { ====>~In~\token_to_str:N \@makecol \c_space_tl\the\c@page } \tag_mc_add_missing_to_stream:Nn \@outputbox {main} } % \end{macrocode} % % \begin{plugdecl}{default} % \begin{macrocode} \NewSocketPlug{tagsupport/build/column/footins}{default} { \tag_mc_add_missing_to_stream:Nn \footins {footnote} } % \end{macrocode} % The two sockets do nothing (default \plug{noop}) if we % are in lua mode. If not they get the \plug{default} assigned % \begin{macrocode} \sys_if_engine_luatex:F { \AssignSocketPlug{tagsupport/build/column/outputbox}{default} \AssignSocketPlug{tagsupport/build/column/footins}{default} } \ExplSyntaxOff % \end{macrocode} % \end{plugdecl} % \end{plugdecl} % % % % % % \section {Replacement for the \pkg{footmisc} package} % % The replacement for \pkg{footmisc}. If the new code is used, we must replace % the package if it is loaded by the user: % \begin{macrocode} \declare@file@substitution{footmisc.sty}{latex-lab-footmisc.ltx} % \end{macrocode} % % % % \section {Temp stuff that is related but should go to the kernel} % % This is the code from \texttt{latex-lab-footnotes.dtx}. % \begin{macrocode} \input{latex-lab-footnotes.ltx} % \end{macrocode} % % % \begin{macrocode} % % \end{macrocode} % % \Finale %