对于我最近的许多文档,我开始使用一组相当具体的软件包、设置、字体和配置。在一个罕见的情况下,我甚至调整了其中一种附带的字体(在我看来,d\partial
在用作派生符号时不应该倾斜;如果它倾斜,它指定了一个集合的边界)。
当然,所有这些设置都只能在一台计算机上进行,特别是字体必须放入树中,texlive/local
这使得在多台计算机上共享设置变得很麻烦(更不用说同步问题了),而且几乎不可能与合作者共享。
理想情况下,我希望为所有这些设置创建一个 git 存储库(或任何其他 DVCS),对于每个新的 tex 项目,我会将此存储库复制(或克隆、链接或使用子模块)到主 tex 文件的子目录中并以某种方式自动包含它,以便找到并添加我的所有私人字体、设置和包而不会出现问题。
这是否可能而不产生大问题,或者即使在今天,tex 是否也需要一些特殊的初始化例程和固定路径?
我怀疑,我不是唯一一个有这些问题的人。其他人是如何解决这样的事情的?
编辑/解释
我认为最佳解决方案或多或少就像 HTML 文件中的样式文件夹一样。因此,我会有一个style
包含所有字体和图像的文件夹,以及一个引用所有这些文件的特殊样式表。此解决方案完全本地化且可移植。我可以移动文件夹、重命名它,甚至可以对我的所有 HTML 文件使用同一个文件夹,只要我可以引用主样式表文件即可。这是可行的,因为 CSS 文件内的所有路径都与该文件相关。
我唯一需要做的修改是复制/链接/克隆文件style
夹并找出 CSS 文件的路径。
我并不期望 tex 解决方案完全相同。这是一个完全不同的系统。但如果能做到以下两点就好了:
- 将样式/字体存储库克隆到当前主 tex 文件的某个子文件夹中
- 在主 tex 文件中:包含样式文件
- 完毕
包括主文件甚至可能需要写几行,这没问题。但如果所有这些更改都可以在主 tex 文件的文件夹中进行,我将非常感激。
答案1
如果我理解正确,那么这正是我所做的。我有一个标准位置来存放我所有的 tex 样式文件、类等等,它们都在 DVCS 存储库中(恰好是 BZR,但不要因此而责怪我)。然后我将我想要的文件符号链接到我的 TEXMFHOME 树中。符号链接的原因是,我可能不一定想要全部我 BZR 存储库中的垃圾文件都放在我的 TEX 树中,所以我不想将 texmf 目录作为存储库集的一部分,但我还希望自动更新内容,所以我不想只是复制它们。正如您所说,这使得在不同计算机上保持最新状态变得容易得多。
为了回答您的具体问题,我没有遇到此设置的任何问题。
答案2
在 miktex 中,我会将所有内容放在一个特殊的新本地 texmf 树中,并通过将其根文件夹添加为新根来“挂载”此树。将这样的 texmf 树放入 git(或任何其他)存储库中很容易。
在 TeXLive 中这也是可能的。虽然一般人认为只存在一个本地 texmf 树,但实际上可能存在多个。在 TeXlive 列表中,这个命令是在几个月前发送的(未经测试,因为我有 miktex):
tlmgr conf texmf TEXMFLOCAL '{/path/to/tree1;/path/to/tree2;...}'
在更新/更改树之后,您必须调用 texhash 并且可能调用 updmap(-sys)。
答案3
最好的方法是创建自己的包。这很简单,你可以使用.sty
扩展名保存一个文本文件,例如 mypreamble.sty
最小示例如下所示:
\ProvidesPackage{mypreamble}
\def\test{...}
您使用该ProvidePackage
命令来确保 LaTeX 知道它,并且在加载两次时给您一些合理的错误。
我个人有不少私人软件包,其中一个叫做 ,typography
里面保存着我所有的排版调整和设置。另一个叫做specialmaths
等等。
这些可以像所有其他包一样安装,因此您不会遇到任何路径等方面的问题。
答案4
你们的目标似乎相互冲突。如果想要模块化,就把文档中重复使用的代码拆分开来,单独分发。如果想要可移植性,就把它放在单个文件中。