From 66f6e60b6dc60cc08482030b92df223b6a51b15f Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sun, 29 Aug 2021 03:02:07 +0000 Subject: CTAN sync 202108290302 --- .../output-patches-tmp-ltx.dtx | 156 +++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx (limited to 'macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx') diff --git a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx new file mode 100644 index 0000000000..7b67c520b3 --- /dev/null +++ b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx @@ -0,0 +1,156 @@ +% \iffalse meta-comment +% +%% File: output-patches.dtx (C) Copyright 2020-2021 Frank Mittelbach +% +% 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 +% +%<*driver> +\documentclass{l3doc} + +\EnableCrossrefs +\CodelineIndex +\begin{document} + \DocInput{output-patches-tmp-ltx.dtx} +\end{document} +% +% +% \fi +% +% \providecommand\hook[1]{\texttt{#1}} +% +% +% +% \title{Temporary output patches for tagging and better link support} +% \author{Frank Mittelbach \and Ulrike Fischer} +% +% \maketitle +% +% \section{Introduction} +% +% This package contains a few patches of internal \LaTeX{} needed +% to support paragraph tagging across +% page boundaries (in \pdfTeX) and improve the behaviour of links across page breaks. +% +% Until this get properly integrated with the kernel code this has +% to be taken as a prototype and code, interfaces as well as +% behavior may change without notice and certainly without any +% backwards compatibility! +% +% +% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex } +% +% +% \section{The Implementation} +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \begin{macrocode} +\ProvidesPackage{output-patches-tmp-ltx} + [2021-08-20 v0.95 Temporary patches of output commands] +\RequirePackage{etoolbox} +% \end{macrocode} +% +% +% \subsection{Patching the OR} +% This add hooks around header and footer. +% At first initialize the hooks +% \begin{macrocode} +\newcommand\@kernel@before@head{} +\newcommand\@kernel@before@foot{} +\newcommand\@kernel@after@head{} +\newcommand\@kernel@after@foot{} +\newcommand\@kernel@before@footins{} +\newcommand\@kernel@before@cclv{} +\newcommand\@mult@ptagging@hook{} +% \end{macrocode} +% +% \begin{macrocode} + +\patchcmd\@outputpage + {\vfil\color@hbox\normalcolor\hb@xt@\textwidth{\@thehead}\color@endbox} + {\vfil\@kernel@before@head\color@hbox\normalcolor\hb@xt@\textwidth{\@thehead}\color@endbox\@kernel@after@head} + {\typeout{Patching header in \string\@outputpage}}{\PATCHerror } + + +\patchcmd\@outputpage + {\color@hbox\normalcolor\hb@xt@\textwidth{\@thefoot}\color@endbox} + {\@kernel@before@foot\color@hbox\normalcolor\hb@xt@\textwidth{\@thefoot}\color@endbox\@kernel@after@foot} + {\typeout{Patching footer in \string\@outputpage}}{\PATCHerror } +% \end{macrocode} +% +% \begin{macro}{\@makecol} +% We have to patch \cs{@makecol} in two places: +% \begin{itemize} +% \item +% update 255 up front to add missing tmb/tme if necessary +% \item +% update the \cs{footins} stream if that one got split +% \end{itemize} +% \begin{macrocode} + +\patchcmd\@makecol + {\vskip\skip\footins} + {\vskip\skip\footins\@kernel@before@footins} + {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror } + +% for some reason patching with etoolbox only works in this order ... + +\pretocmd\@makecol{\@kernel@before@cclv} + {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror } +% \end{macrocode} +% \end{macro} +% +% \subsection{\pkg{multicol} adjustments} +% +% The patches for pkg{multicol} are fairly minimal: +% \begin{itemize} +% \item At the start of the environment anything already on the +% page is picked up and stored in \cs{partial@page}, we may need to add +% a TMB to that (it should have a proper TME). This has to happen +% in the \enquote{main} stream context. +% \item +% \item +% \end{itemize} +% +% \begin{macrocode} +\AddToHook{package/after/multicol}{% multicol needs later loading +% \end{macrocode} +% +% \begin{macrocode} + \patchcmd\page@sofar + {\setbox\z@\hbox{p}\global\dimen\tw@\dp\z@}% + {% + \setbox\z@\hbox{p}\global\dimen\tw@\dp\z@ + \@mult@ptagging@hook + }% + {\typeout{Patching \string\page@sofar\space for tagging}}{\PATCHerror}% +} +% \end{macrocode} +% +% \subsection{Interrupt hooks} +% This requires the l3pdfannot module! +% We add the code here an not in hyperref, as it should also work with links +% created directly with the l3pdfannot commands. The file is only +% loaded by the pdfmanagement, so no need to test if the commands exist. +% \begin{macrocode} +\ExplSyntaxOn +\def\@kernel@before@head{\pdfannot_link_off:} +\def\@kernel@before@foot{\pdfannot_link_off:} +\def\@kernel@after@head {\pdfannot_link_on:} +\def\@kernel@after@foot {\pdfannot_link_on:} +\ExplSyntaxOff +% \end{macrocode} +% +% \begin{macrocode} +\endinput +% +% \end{macrocode} +% +% \Finale +% -- cgit v1.2.3