我想扩展里面的一个宏\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