在 \documentclass 之后设置类选项

在 \documentclass 之后设置类选项

背景:我正在写论文,格式要求非常糟糕。除了提交给研究生院的版本外,我还想为其他人创建一个格式正确的版本。

特别是,我的文件是这样开头的:

\documentclass[twoside]{book}

以后可以撤销吗双边选项?

答案1

是的,但像许多内核类选项一样,它并不是专门为此设计的。你最好只使用两个潜在的文档类行,或者像下面这样简单的东西

\documentclass[
   twoside
 ]{book}

因此您可以根据需要注释掉该选项。

答案2

我对我的论文也做了同样的事情。大学图书馆的副本很差,我自己和委员会的副本还不错。最简单的做法可能是有两个版本的主文件tex,然后\input分别保存各个章节。这样你就可以在保留相同内容的同时对每个版本进行调整。

顺便说一句:使用 LaTeX 格式是一种很好的拖延方式,同时还能让你感觉自己正在做一些有用的事情。

答案3

约瑟夫的回答是最务实的——没有必要把事情复杂化。

然而,回答您没有完全问到的问题......

在某些情况下,从“外部”对 LaTeX 进行一些控制会很有用——也许您希望能够从 Makefile 生成两个不同版本的文档。一种方法是创建一个包含一些 LaTeX 的文件,并将\input其放在某个战略点。另一种方法是使用 TeX 程序中一个不太知名的功能(至少在 Unix 系统上如此,但可能在 Windows 系统上也是如此)。

不必\documentclass是文件中的第一件事。考虑一下:

\providecommand\pointsize{10pt}
\documentclass[\pointsize]{article}
\begin{document}
Here is some text.
\end{document}

如果尚未定义,则将其定义\pointsize为。它怎么可能在文件开头之前定义?简单!如果此文件是,那么您可以执行以下操作:10ptdoc.tex

% latex '\def\pointsize{12pt}\input{doc}'

瞧!

这是一偶尔有用的逃生舱。我怀疑也很容易忘乎所以,开始写一些非常模糊的东西。

已编辑使用\providecommand而不是 TeX arcana(感谢@user1129682 的评论)

答案4

这与我遇到的几乎每一篇文章的问题非常相似:我得到了我喜欢的版本,然后期刊说了一些愚蠢的话,例如“只有我们自己的文献在家里风格才会被接受。”问题是他们提供了一个必须使用的类文件,并且它(很有帮助!)定义了一堆命令,但这些命令对风格没有任何作用,只会起到阻碍作用。

过去,每次向期刊投稿时,我都必须编辑每份文档(对于某些文章来说,这很可悲!)。此外,还有各种预印本服务器,它们也需要不同的选项。改用版本控制系统保存文章实际上让我较少的愿意接受这一点,因为我希望版本之间的变化是实质性的,而不仅仅是“将所有定义从更改为\newcommand覆盖\renewcommand期刊中的定义X“。

所以我开发了一个类文件设置了一堆内容,然后调用真实的class 文件。因此,在我的文档开头,我有:

\documentclass[%
a4paper,%
journalX,%
%draft,%
%hopf,%
%journalY,%
%arxiv,%
%article,%
%amsart,%
defaults,%
]%
{myclass}

在那里,你可以看到我把它提交给了期刊“X”,而且它可能之前已经提交给了期刊“Y”。草稿模式中可能有一些更改。它恰好是一篇代数拓扑学的论文,所以当它被发送到霍普夫存档,我发现它有一些字体问题。此外,还设置了一些默认值。'a4paper' 选项(与任何其他未知选项一样)会传递给最终选定的类文件。

每次我选择一本新期刊时,我都必须将其类文件集成到这个元类中,但这只需要做一次,而不是每篇文章都做一次。主要的节省这一部分的方法就是组织标题页。​​所有期刊的标题信息都以相同的方式输入,元类文件会将其整理成适合特定期刊的正确格式(这实际上是将新期刊类文件集成到我的系统中时最令人头疼的问题 - 我可以告诉你一些可怕的故事!)。

在我的讲座上,该系统变得更加完善。我现在使用 Beamer 讲课,并将幻灯片提供给学生。但我不希望他们打印出整套幻灯片,所以我提供了讲义版本。此外,为了更容易保持一致的风格和在讲座之间剪切粘贴内容,我将所有讲座保存在文件。当我在其上运行 LaTeX 时,我希望能够选择:特定的讲座和特定的格式(beamer、trans、handout)。我通过将查看作业名称以获取这些详细信息的测试放入元类文件中来实现这一点。然后我创建指向主文件的合适符号链接:

ln -s lectures.tex lecture.handout.2010-08-23.tex
pdflatex lecture.handout.2010-08-23.tex

制作 2010 年 8 月 23 日讲座的讲义版本。

我确信,这个解决方案对于您的情况来说有点过头了!但是,正如我所说,您的情况只是冰山一角。


更新2012-04-11: 时不时有人问我关于这个类文件的问题。我在我的网站上放了一个关于它的页面,地址是:https://github.com/loopspace/myclass。该文件的副本可在此处找到。请注意:1)本文仅供我使用,我并不期望其他人会看到它,更不用说使用它;2)本文是在本网站出现之前很久写的——我现在可能会以完全不同的方式写它!(我会通过一系列精心设计的问题让 egreg 来写它。)

相关内容