在文件末尾自动运行代码

在文件末尾自动运行代码

在典型的 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}

这将产生输出

在此处输入图片描述

相关内容