\AtBeginDocument 内部扩展

\AtBeginDocument 内部扩展

我想扩展里面的一个宏\AtBeginDocument,尽管我猜具体的宏并不重要。

\documentclass{article}

\makeatletter
\@for\x:=1,2,3\do{%
  \AtBeginDocument{\@input@{helper\x .tex}}%
}
\makeatother

\begin{document}
Do something with the definitions from helper1.tex etc. 
\end{document}

文件包含功能在没有 的情况下\AtBeginDocument{...}也能正常工作,当然有 的情况下也不行,因为\x在调用时不会展开。我感觉\expandafter在正确的位置使用正确数量的 s 就可以完成工作,但我没有看到。

答案1

\makeatletter
\@for\x:=1,2,3\do{%
  \begingroup\edef\x{\endgroup
    \noexpand\AtBeginDocument{\noexpand\@input@{helper\x.tex}}}\x
}
\makeatother

或者expl3

\usepackage{expl3}
\ExplSyntaxOn\makeatletter
\clist_map_inline:nn { 1 , 2 , 3 }
 {
  \AtBeginDocument{\@input@{helper#1.tex}}
 }
\makeatother\ExplSyntaxOff

相关内容