我想要实现的是 repeat.cls 这样我就可以编写一个 .tex 文件
\documentclass{repeat}
\begin{document}
foobar
\end{document}
然后文档将包含“foobar”一定次数。
这可能吗?我尝试将\loop
或\foreach
与\AtBeginDocument
和结合起来\AtEndDocument
,但就我现在所知,这种方法行不通,因为 TeX 永远不会真正“看到” \end{document}
。
答案1
以下是概念验证。不要在家里做。
repeat.cls
\ProvidesClass{repeat}
\def\repetitions{5} % default
\DeclareOption*{\edef\repetitions{\CurrentOption}}
\ProcessOptions\relax
\LoadClass{article}
\RequirePackage{environ,xparse}
\let\latexdocument\document
\let\endlatexdocument\enddocument
\ExplSyntaxOn
\RenewEnviron{document}{
\tl_gset_eq:NN \g_tmpa_tl \BODY
\latexdocument
\prg_replicate:nn { \repetitions } { \g_tmpa_tl \par }
\endlatexdocument
}
\ExplSyntaxOff
测试.tex
\documentclass[20]{repeat}
\begin{document}
foobar
\end{document}