%\RequirePackage[enable-debug]{expl3}[2018/06/14] \ProvidesExplPackage {tagpdfdocu-patches} {2024-04-12} {0.99b} {patches/commands for the tagpdf documentation} \RequirePackage{etoolbox,xpatch} %Logos % only spacing changes: \ExplSyntaxOn \DeclareRobustCommand\TeX{ \leavevmode T\kern-.1667em\lower.5ex\hbox{E}\kern-.05emX\@ %changed from -.125em } \DeclareRobustCommand{\LaTeX}{ \leavevmode L\kern-.25em % %changed from -0.36em \sbox\z@ T% \vbox to\ht\z@{\hbox{\check@mathfonts \fontsize\sf@size\z@ \math@fontsfalse\selectfont A}% \vss}% \kern-.1em % %changed from 0.15em T\kern-.1667em\lower.5ex\hbox{E}\kern-.05emX\@ %changed from -0.125 } % minisec, correct tagging is still unclear. \newcommand\minisec[1]{% \if@noskipsec \leavevmode \fi \par \@afterindentfalse \if@nobreak \everypar{}% \else \addpenalty\@secpenalty\addvspace{1.5ex}% \fi {\tagpdfsetup{paratag=H10}\parindent \z@ \setlength{\parfillskip}{\z@ plus 1fil}% \raggedright\normalfont\bfseries\nobreak \nobreak\interlinepenalty \@M #1\par\nobreak% }\nobreak \@afterheading } % listings. Unclear how to make it work for the original lstlisting, so we make a % copy taglstlisting for now \DeclareInstance{blockenv}{lstlisting}{display} { env-name = lstlisting, tag-name = verbatim, tag-class = , tagging-recipe = standard, inner-level-counter = , level-increase = false, setup-code = , block-instance = displayblock , inner-instance = , final-code = \tl_set:Nn \l__tag_para_main_tag_tl {codeline}\tagtool{paratag=Code}, } \lstnewenvironment{taglstlisting}[2][]{% \UseInstance{blockenv}{lstlisting} {} \lst@TestEOLChar{#2}% \lstset{#1}% \csname\@lst @SetFirstNumber\endcsname% }{% \@nobreakfalse \csname\@lst @SaveFirstNumber\endcsname% \endblockenv } % ======== marginnote ========== % 2024-03-23 currently marginnote is no longer used, we use marginpar % TODO marginnote has a bug (a \par is missing) so it messes up tagging. % but currently unneeded as we marked them up as artifacts anyway as they don't contain % meaningful contents %\renewcommand*{\mn@parboxrestore}{\tagpdfparaOff}% %\NewDocumentCommand\sidenote{m} % {% % %\tag_mc_artifact_group_begin:n{notype}\tagpdfparaOff\marginnote{#1}\tag_mc_artifact_group_end: % \marginpar{#1}% % } \ExplSyntaxOff % ======== tikzpicture ========== % TODO this needs some investigation: it messes up the stack if one add paraOff \AddToHook{env/tikzpicture/begin}{} %======== tcolorbox ======== % We switch of paratagging at the begin and reenable it locally in before upper. % the before upper setting is dangerous as it can be overwritten by % users. So a more stable hook is needed. % we force also a \par and add a div structure, to avoid clashes with the block % tagging code. This needs revisting! \AddToHook{env/tcolorbox/before}{\par\tagstructbegin{tag=Div}} \AddToHook{env/tcolorbox/begin}{\tagpdfparaOff \tcbset{before upper=\tagpdfparaOn}} \AddToHook{env/tcolorbox/after}{\par\tagstructend} % ========= doc Commands from tcolorbox % Not sure if this is generally usable but one must avoid tagstop if there can % be a pagebreak \DeclareInstance{blockenv}{docCommand}{display} { env-name = docCommand, tag-name = Div, tag-class = , tagging-recipe = standalone, inner-level-counter = , level-increase = false, setup-code = , block-instance = displayblock , } \RenewDocumentEnvironment{tcb@manual@entry}{} {\UseInstance{blockenv}{docCommand} {tag-name=Div, leftmargin=\kvtcb@doc@left, rightmargin=\kvtcb@doc@right, }% \tagtool{para=false}% \AssignSocketPlug{tagsupport/minipage/before}{noop} \AssignSocketPlug{tagsupport/minipage/after}{noop} \AssignSocketPlug{tagsupport/parbox/before}{noop} \AssignSocketPlug{tagsupport/parbox/after}{noop} } {\endblockenv } \tcbset{ doc head command= {before upper=\tagstructbegin{tag=Code}\tagmcbegin{}, after upper=\tagmcend\tagstructend}, } % ======= footnote ======== % done in testphase code % ======= bibliography ======== % biblatex. Creates some empty mc-chunks. % no internal patches, but redefining begentry/finentry is not safe. % better hook is needed. \def\blx@endbibliography{% \csuse{blx@endenv@\blx@theenv}% \blx@noitem \blx@locallabelwidth@finish \endgroup \blx@bibnote\blx@thepostnote % \endgroup \expandafter\endgroup\if@endpe\@doendpe\fi } % ====== hyperref ======== % this should probably go into tagpdf, but it is related to % problem of pdf strings and context .... \AddToHook{package/hyperref/after} {% \pdfstringdefDisableCommands{% \let\tagstructbegin\@gobble \let\tagmcbegin\@gobble \let\tagmcend\relax \let\tagstructend\relax }}{} %====== picture ======= % PAC3 complained that the BBox is missing, so we are cheating for now % and add a fix size. \tagpdfsetup { newattribute = {bbox}{/O /Layout /BBox [0 0 100 100]} } % ======= maketitle \renewcommand\maketitle{% \tagstructbegin{tag=Title} \begin{center}% \let\thanks\footnote \makeatletter \huge \@title \par \vskip .5em \@author \par \vskip 1em% \@date \par \end{center}% \tagstructend} \endinput