由于我对我的 tex 文档使用(几乎)相同的设置,我想知道是否有办法使用我的默认包创建序言并在我想要创建 tex 文档时随时调用它。
如果是,我该如何称呼这个“默认”序言?
提前致谢
答案1
一种选择是创建一个sty
包含使用默认包的包(文件):
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{mypreamble}
[2015/11/18 MyPreamble]
\RequirePackage{graphicx} % Put the package you need as required package
\endinput
\usepackage
您必须使用 来使用它们,而不是使用\RequirePackage
。您也可以写成\newcommand
等。
您可以按照此问题的答案来访问它:我应该将自己的 .sty 或 .cls 文件放在哪里,以使它们可供我的所有 .tex 文件使用?
您可以调用您的文档\usepackage{mypreamble}
,然后瞧:
\documentclass{article}
\usepackage{mypreamble}
\begin{document}
With my own preamble
\includegraphic{test}
\end{document}
正如您所看到的,我已将其包含graphicx
在内mypreamble.sty
,并且能够包含一张图片:
答案2
为什么你不应该这样做
由于这比评论长,因此我将把它添加为答案,即使它是一个建议的答案不是按照你的要求去做。
不这样做既有概念上的原因,也有实际的原因。当然,如果你发现自己在创作特定的种类具有类似结构的文档,可能有理由创建自定义类或包对于这种文件。但如果您发现在大多数文档中您加载了相同的软件包集,我不建议这样做,而是使用您的编辑器保存某种标准模板文档。
概念论证
从概念上讲,软件包应该添加具体的为任何类型的文档提供一组功能。
另一方面,文档类应该为特定种类的文件。
请参阅以下问题以了解有关区别的讨论。
现在,您建议的似乎不是上述两者,而只是\usepackage
您在大多数文档中常用的命令列表(可能添加了一些宏)。这不符合上述任何标准,因此可能不应将其实现为包或类。
现在如果你做如果你需要某个特定的功能,那么创建自己的包当然是有意义的。例如,我有一个包,我在写信时会加载它,其中包含用于签名等的宏。我还创建了一个用于编写会议摘要的类,因为由于字数/页面大小限制,它们需要非常精简的格式。
实际原因
即使您经常使用某些包,您也很可能不需要在每个文档的默认序言中加载每个包。因此,您实际上会加载不需要的包。对于较小的包来说,这不是什么大问题,但对于像 TikZ 这样的大型包来说,这会增加这些文档的编译时间。
创建默认前言可以有效地隐藏任何文档正在使用的包。这意味着,如果您需要查找文档,或者调试可能由某个包引起的错误,您将必须记住始终加载哪些包。这似乎不是什么大问题,但根据我的经验,它很快就会变得令人讨厌,因为随着时间的推移,您将要忘记标准前言中的内容。更有意义的做法是,在您编写的每个文档的前言中明确加载您需要的软件包。
创建默认序言还会大大降低文档的可移植性。您不能直接将它们放在闪存驱动器上并在其他人的计算机上使用,除非您也复制了序言包。您也不能将它们上传到期刊或与合作者共享(如果不共享序言代码)。
你应该怎么做
如果您想要做的只是加载一堆软件包和一些其他内容,则应该使用编辑器保存模板。我在 Mac 上使用 TeXShop,它允许我创建“Stationery”文件,这些文件是具有我可以定义的标准序言的文档模板。当我使用 Stationery 打开文件时,我会得到一个新的空白文档,其中已经包含我喜欢的任何内容。然后我可以轻松删除未使用的软件包来创建每个文档,使其符合上述标准。
您也可以在其他编辑器中执行相同的操作。TeXStudio 有一个“制作模板”功能(在文件菜单中)。创建一个包含您最常用的序言的新文档,然后从文件菜单中选择“制作模板”。将出现一个对话框,您可以在其中命名它并添加描述(甚至许可证)。完成后,对于后续文档,您可以使用“从模板新建”打开一个已填写基本结构的新无标题文档。
TeXworks 也有这样的功能,你可以创建模板文件并保存<resources>/templates
,然后使用“从模板新建”菜单项即可使用。
答案3
如果您不想制作自定义包,另一种选择是将您的序言放入文件中,然后在开始文档之前.tex
使用,其中是完整路径。\input{file_path\preamble.tex}
file_path
preamble.tex
答案4
- 您可以创建一个
.tex
仅包含序言的新文件,并可以在您的文件中使用它。 - 我的模型序言文件只会包含这些内容......
\usepackage{amsmath,amsthm} \def\qn{\question} \def\ov{\overline}
- 仅将这些详细信息保存为
.tex
文件。(我将其保存为preamble.tex
- 然后在新文件的文件夹中复制并粘贴
preamble.tex
- 现在只需将此文件调用到您的新文件中,例如
\documentclass{amsart} \input{preamble} \begin{document} your work \end{document}
笔记:
- 您的
preamble.tex
文件不应包含任何类似\end{document}
...等的代码 - 验证该
preamble.tex
文件是否位于新文件所在的文件夹中。