不带 \documentclass 的 LaTeX 文档

不带 \documentclass 的 LaTeX 文档

我需要创建一个非常简单的文档模板,供其他人填写和编译(例如,他们需要提供姓名和电子邮件地址)。我可以将其作为文件.cls和模板.tex文件分发,但我认为将其作为单个文件分发可能更容易。

似乎人们可以编译一份没有\documentclass任何警告的文档。例如,尽管没有一行\documentclass,但以下内容是完整的 MWE:

\renewcommand\normalsize{\fontsize{10pt}{12pt}\selectfont}
\begin{document}
Hello world
\end{document}

整个“类”在哪里\renewcommand\normalsize{\fontsize{10pt}{12pt}\selectfont}。在文件内定义整个“类”.tex而不使用一行有什么缺点\documentclass

编辑

补充一点我正在做的事情。我创建了一个不基于任何其他类的自定义类。然后我采纳了 David Carlisle 的想法

并改变了

\documentclass{myclass}

\documentclass{article}
\makeatletter
%  your definitions
\makeatother

myclass但这会导致在和类中定义的内容发生冲突article。使用 类 可能更好,但在考虑 类 之前,minimal我意识到我不需要。\documentclass{article}minimal

答案1

如果你看一下,minimal.cls你会发现它的作用不仅仅是设置正常的字体大小:

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{minimal}[2001/05/25 Standard LaTeX minimal class]

\renewcommand\normalsize{\fontsize{10pt}{12pt}\selectfont}

\setlength{\textwidth}{6.5in}
\setlength{\textheight}{8in}

\pagenumbering{arabic}  % but no page numbers are printed because:
\pagestyle{empty}       % this is actually already in the kernel

尤其是如果您不设置\textheight\textwidth,事情很可能会变得非常糟糕。

但是,不使用真实的类并没有任何好处,article而且还有很多坏处。

如果你只想分发单个模板文件而不分发类文件,请使用如下格式

\documentclass{article}


\makeatletter

 %  your definitions

\makeatother

\begin{document}

\end{document}

查看编辑过的问题,如果您的自定义代码设置好一切,然后就可以像你说的那样把它放在顶部,minimal这样就不会出现问题了。不过,也许更好的办法是使用表单

\begin{filecontents}{myclass.cls}
% your definitions
\end{filecontents}
\documentclass{myclass}
\begin{document}
...
\end{document}

这样,文件就可以轻松地在假设myclass已安装和内联包含之间切换。这种本地类和包文件的临时分布是添加filecontents到 LaTeX2e 的主要动机之一。

答案2

我需要创建一个非常简单的文档模板,供其他人填写和编译。

我不确定你为什么需要编译,至于用户为什么需要编译。LaTeX 所做的最小检查是检查类是否已定义,如果\normalsize尚未重新定义,则生成错误(参见 , source2eltfntcmd.dtx

如果您确实想要简约主义,那就纯粹吧TeX

 J. Smith, [email protected]
 \bye

答案3

当我测试了一些我想到的一些非常基本的环境时,我发现它们几乎没有任何功能。所有未包含在纯 TeX 中的环境和命令都无法使用。因此,您无法使用 LaTeX 生成表格或列表。如果这适合您的特殊目的,那就没问题。

正如您所提到的,甚至没有\usepackage可用的,您做不了什么。通过这个非常简化的代码获得的功能是否有效取决于您。

也许你可以尝试一些非常小的文档类,例如minimalstandalone。使用你的代码,只需多一行即可加载它,但你可以获得更多功能

相关内容