到目前为止,我只用 LaTeX 写过短篇文档。每当我遇到问题或错误时,我都会用 Google 搜索,然后将 package/newcommand 复制粘贴到我的代码中。
我对所有文档都使用相同的开头代码,其中包含许多许多包、新命令等。然而,这次我必须小心,因为我可能因为一个小错误而不得不阅读整个代码。
当然,我现在不必决定书的纸张大小、页边距等(我需要吗?)。但是,有几件事需要注意。例如:
- 我应该只使用一个 .tex 文件,还是将章节写在不同的 .tex 文件中,然后在一切完成后合并它们?
- 拥有太多软件包是不是一个坏主意?我现在必须决定使用哪些软件包吗?
- 把所有内容都缩短会造成问题吗?例如,使用
\bp
and\ep
代替\begin{proof}
and\end{proof}
。或者使用\suminfty
for\sum_{n=0}^\infty
。 - 这本书完成后我是否应该包括 tikz 图表等?因为我觉得在包含许多 tikz 图片的某个时间点之后,编译代码将持续很长时间。
所以,基本上,我不想花太多时间去弄清楚错误发生的位置和原因,也不想回去更改所有内容。我还应该注意什么?
答案1
这是我的建议(我非常喜欢你的问题,需要提出答案)。但有些人可能采用不同的方法。
我对所有包含许多许多包、新命令等的文档使用相同的起始代码。
每个人都会这样做,但随着时间的推移,软件包会大量积累,其中 80% 可能会一直未使用。可能会有干扰,编译速度会变慢。我建议对每一\usepackage
行都进行注释,以明确软件包的用途,并查看特定文档中是否真的需要它。例如:
\usepackage{booktabs} % Makes beautiful book-like tables
然后,如果您编写没有单个表格的文档,您就会知道可以安全地忽略这个特定的包。
我应该只使用一个 .tex 文件,还是将章节写在不同的 .tex 文件中,然后在一切完成后合并它们?
这可能取决于文档的长度。有些人.tex
可以很好地管理 40 个文件,有些人则更喜欢只处理一个文件。如果您计划编写 5000 页,您可能更喜欢使用不同的文件。而且无需手动合并它们,您可以\include
在一个main.tex
文件中使用。
拥有太多软件包是不是一个坏主意?我现在必须决定使用哪些软件包吗?
再次强调,如果这些包有用并且经过精心挑选,那么这并不是那么糟糕。你应该避免使用做同样事情的不同包,并且注意到命令软件包。过早或过晚加载某些软件包可能会干扰其他软件包。首先,只需添加常见的软件包(amsmath
、babel
、geometry
),然后等待,看看以后是否需要更多软件包。
缩短一切会引起问题吗?
清晰的命令更好 ;-) 输入时间更长,但当您 6 个月后尝试修改文档时,这将节省时间。
这本书完成后我是否应该包括 tikz 图表等?因为我觉得在包含许多 tikz 图片的某个时间点之后,编译代码将持续很长时间。
我会尽快添加图片,我发现预览文档的外观会“激励”我。不过,这确实会减慢编译速度,你的观点是正确的。
我还应该注意什么?
一定要备份你的文档!一个错误就可能让你丢失整本书。另外,要注意字体。过去几年来,字体一直是我遇到的头号 TeX 问题。有时字体不包含你需要的一个字符,有时字体没有你需要的足够粗体,有时字体毫无理由地看起来很糟糕。我已经学会远离任何不广泛使用、久经考验、强大、常见的字体。
祝你好运!
答案2
这是我的建议...
第一个决定是:
出版商是谁?
商业数学出版商有一套标准化的书籍格式(纸张大小、基本布局、一些额外的惯例)。当您与这样的出版商合作时,如果可能的话,请使用他们的 LaTeX 宏包。如果您没有,请从标准book
类开始。
将您的输入分为章节
这不仅可以加快处理速度(使用类似设备\includeonly
来实现标签一致性),还可以减少找到正确位置继续书写和编辑的时间。
不要害怕很多包裹
使用所有对您有益的软件包,除非遇到软件包冲突。
不要缩写
缩写诸如\begin{proof}
或 之类的词是有害的\end{proof}
。不要这样做。
编写一些合理的宏
如果您有一些未在 LaTeX 或已包含的包中预定义的逻辑结构,请为它们编写一些宏。遵循逻辑标记的理念,不要以缩写的方式思考。
尽早包含图形
尽早将图形和所有复杂的东西(如交换图、树形图等)包含在内。这将告诉您是否有困难、软件包冲突、TeX 容量超出错误,并允许您考虑补救措施。
经常编辑你的文档
这可以帮助您尽早发现错误。它们可能就出现在您最近处理的部分中。
编写 makefile 或 shell 脚本来创建整本书
包括其他程序的运行(如 BibTeX 或 makeindex)
不要忘记备份
当我写书的时候,我每天都会在外部媒体上进行轮换备份。使用脚本进行备份。检查您的备份是否真的有效(通过解压备份并编译您的书)
害怕 TeX 更新
不幸的是,你的 TeX 发行版的更新可能会破坏你的文件以意想不到的方式。当你更新 TeX 发行版时,请做好回滚的准备,以防发生意外情况。
答案3
我将尝试推断出我(我们)多年来在这里目睹的一些趋势。
我应该只使用一个 .tex 文件,还是将章节写在不同的 .tex 文件中,然后在一切完成后合并它们?
这在何时应使用 \input 和 \include?。这几乎就是您所需要知道的全部内容。
您可能要养成的主要习惯是,以高效的方式打开和关闭您不打算写的章节/部分。对于短期快速编辑,不要保留太多页面和少量图形。
避免一直编译整本书。你会看到很多警告和糟糕的/过满/未满的盒子,变得好奇和疯狂地拖延。根据出版商的需求,不要在这些事情上浪费时间。你将不得不至少更换它们三次——一次是为了时髦效果,一次是为了后悔,一次是为了最终状态(根据我的无法抗拒的格式化冲动法则(专利申请中) )。
拥有太多软件包是不是一个坏主意?我现在必须决定使用哪些软件包吗?
不是,不是。但不要试图为所有东西找到一个包。在这里或在聊天中询问。大多数试图写书的人都遇到过很多类似的事情,包作者也看到了这些问题。因此,现代包提供了大量灵活的选择。因此,这句话表述不当。更恰当的说法是如果某个功能有两个等效解决方案,请选择已加载包中存在的解决方案。
缩短一切会引起问题吗?
是的!你从这些缩写中删去的任何时间都会在你遇到的第一个问题中消失。你必须对这个问题进行三角测量(因为它将要拒绝被发现),所以你用扩展版本等替换它。这将是毫无意义的。卷起袖子,使用具有自动完成功能的编辑器。
这本书完成后我是否应该包括 tikz 图表等?因为我觉得在包含许多 tikz 图片的某个时间点之后,编译代码将持续很长时间。
这是第一个的必然结果,但也能制作简短但图形密集的文档并学习使用 TikZ 的
externalize
库。我还应该注意什么?
例如停止执行以下操作:
到目前为止,我只用 LaTeX 写过短篇文档。每当我遇到问题或错误时,我都会用 Google 搜索,然后将 package/newcommand 复制粘贴到我的代码中。
这不仅会使你的前言变得臃肿,还会导致头发脱落。至少要试着对你的前言进行分类,大致知道什么在做什么。这种使用方式的一个标志性行为是当复制/粘贴失控时多次加载包。并且
def
覆盖现有的东西,并将简短的缩写改为一些晦涩难懂的东西,比如你的suminfty
人试图破坏一个包时,所谓的高效的。我不知道这个词是什么意思。预先决定是否需要词汇表/索引,在决定之前不要开始写作。
我个人的请求是,请不要使用晦涩难懂的希腊字母来表示,如果可能的话,请坚持使用拉丁字母。不要太过疯狂,
\Xi,\varsigma,\wp
因为你的读者会这样想:让...那个东西...被定义为....v 看起来的东西....乘以....那是数学上的 P 吗?...无论如何它是什么,那个东西等于等等。
总的来说,使用 TeX 就像在别人家里做客一样。有无数的东西你完全不知道它们是什么。所以不要太纠结。只要好好享受你的逗留并尽快离开就行了。
答案4
我从 Stacks 项目的代码中学到了很多关于用 LaTeX 编写数学书的好想法:http://stacks.math.columbia.edu/contribute。这是一本庞大而极其复杂的书,目前有 5000 多页,有 230 位作者。如果有多个作者,请避免使用除最简单的代码之外的所有代码,并定义少量宏,因为不同的作者不会记住它们。使用少量软件包。将不同的章节分成不同的文件。在编写本书时开发索引,包括您定义的每个新术语的索引条目,但也要多次阅读本书,并在您看到需要时添加索引条目。多次阅读您的书,并尽可能多地从中教学。每次讲课时,我的讲义的每一页都会发生变化。对于一本大书,索引比章节或部分标题更有价值。制作一个符号索引。将所有图像、图表和图形尽可能小(同时使它们可读),并将它们保持在黑白或柔和的颜色,以避免它们过于突出。当读者翻页时,分散注意力的彩色图像会将她的视线从文本上移开;需要付出努力才能回到文本的流程中。因此,大而醒目的图形只适合出现在人们不读的书籍中(咖啡桌书籍)。不要使用浮动(浮动图形和表格)或边距图形。相反,将较小的图像和“表格”直接放入文本流中,以便读者在阅读文本时知道何时查看它们。如果您在讲课时会在黑板上画一张图片,那么您就有道德义务将其画在您的书中(即使这需要花一个下午的时间用 tikz 或 asymptote 编码)。尽可能用数字、图形、代数和简单的英语解释每个主题(遵循 James Stewart 的建议)。您可以在以下位置查看我的一些讲义http://euclid.ucc.ie/pages/staff/麦凯/看看我如何努力实现这些建议。