定义类似于 AtBeginDocument 的命令

定义类似于 AtBeginDocument 的命令

我想定义\AfterAtBeginDocument类似于以下操作的命令\AtBeginDocument:收集代码,然后将其放在AtBeginDocument生成的代码之后。

因此,代码

\AfterAtBeginDocument{
    2
}

\AtBeginDocument{
    1
}

\begin{document}

    3
    
\end{document}

应该产生123

这是 MWE,但我不知道该怎么做\AtBeginDocument

\documentclass{article}

\usepackage{xparse}

\NewDocumentCommand{\AfterAtBeginDocumentText}{}{}
\NewDocumentCommand{\AfterAtBeginDocument}{ +m }{%
    \let\tmpAfterAtBeginDocumentText\AfterAtBeginDocumentText
    \RenewDocumentCommand{\AfterAtBeginDocumentText}{}{\tmpAfterAtBeginDocumentText#1}%
}

\RenewDocumentCommand{\AtBeginDocument}{ +m }{}


\AfterAtBeginDocument{
    2
}

\AtBeginDocument{
    1
}

\begin{document}

    3
    
\end{document}

答案1

使用新的 LaTeX 内核,您可以使用\AddToHook{begindocument/end}

\documentclass{article}


\def\AfterAtBeginDocument{\AddToHook {begindocument/end}}

\AfterAtBeginDocument{2}
\AtBeginDocument{1}

\begin{document}
    3
    
\end{document}

相关内容