在典型的 LaTeX 文档中,文档内容在环境内输入document
,这通常是文件中的最后一部分:
\documentclass{article}
\begin{document}
Content goes here.
\end{document}
但是,我的一个自定义类可以处理所有事情:
\documentclass{mycustomclass}
% This macro is provided by the class. It does everything needed to output the document
% and is always the last macro to be carried out.
% It uses \begin{document}…\end{document} under the hood.
\outputdocument
是否可以在发出的文件末尾自动运行该宏\documentclass{myniceclass}
,这样我就不必在类后面的所有文档中输入它?
一般问题是:如何在特定文件末尾或输入结束时自动运行代码?
允许使用 LuaTeX 特定的技巧(可能是回调?)。
答案1
您的问题不太清楚,但有一个\everyeof
钩子(由 etex 添加)
所以如果你的课
\def\foo{\begin{document}\end{document}}
\everyeof{\global\expandafter\let\expandafter\foo\expandafter\relax\foo}
然后\foo
将定义自己不执行任何操作(如果输入了多个文件),但第一次将执行
\begin{document}\end{document}
并且显然可以做得更多...
另一个变体:
文档:
\documentclass{zmble}
\usepackage{array}
\usepackage{graphicx}
请注意,在隐含的前言中输入包。
zmble.cls
:
\LoadClass{article}
\def\foo{\global\let\foo\relax
\begin{document} hello \end{document}%
}
\everyeof{\ifx\@currnamestack\@empty\expandafter\foo\fi}
这将产生输出