我需要创建一个非常简单的文档模板,供其他人填写和编译(例如,他们需要提供姓名和电子邮件地址)。我可以将其作为文件.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
尚未重新定义,则生成错误(参见 , source2e
)ltfntcmd.dtx
。
如果您确实想要简约主义,那就纯粹吧TeX
。
J. Smith, [email protected]
\bye
答案3
当我测试了一些我想到的一些非常基本的环境时,我发现它们几乎没有任何功能。所有未包含在纯 TeX 中的环境和命令都无法使用。因此,您无法使用 LaTeX 生成表格或列表。如果这适合您的特殊目的,那就没问题。
正如您所提到的,甚至没有\usepackage
可用的,您做不了什么。通过这个非常简化的代码获得的功能是否有效取决于您。
也许你可以尝试一些非常小的文档类,例如minimal
或standalone
。使用你的代码,只需多一行即可加载它,但你可以获得更多功能