我想在项目中使用自己的 .sty 和 .cls 文件。我知道以下两种放置它们的可能性:
在我的本地 tex 树中(或者更糟糕的通用 tex 树中)
与 .tex 文件位于同一目录中
我认为这两者都不令人满意,原因如下:
本地 tex 树不能令人满意,因为 .sty 文件是特定于项目的,所以我希望它靠近项目,这样我就可以轻松记住它在哪里等等。此外,我正在使用 dropbox 在不同计算机之间自动同步项目文件,所以 .sty 文件应该在 dropbox 文件夹中。
“同一目录”并不令人满意,因为项目位于具有许多子目录的目录中。所有这些子目录中的 .tex 文件都应该能够访问同一个 .sty 文件。
我想要做的是:在项目目录中创建一个子目录“样式文件”,将样式和类文件(项目有几个)放在里面,然后以某种方式告诉 tex 在哪里找到它们。
我怎样才能做到这一点?
我在 Mac OS X.6 上使用最新的 TexLive
我知道存在有关 .sty 文件的放置问题,但我没有找到这个问题的答案。
答案1
还有第三种可能性,对于项目来说,这是最好的一种:将所有内容放在texmf
位于文档目录内的目录中。然后export TEXMFHOME=texmf
在运行之前执行pdflatex
或执行其他操作,系统texmf
将首先搜索树。
在这个本地内部,texmf
你必须拥有与平常相同的 TeX 目录结构:http://tug.org/tds对于本地texmf
树,您不需要运行,texhash
因为文件在该树中递归搜索
答案2
现代文件系统知道符号链接。因此,您可以将类和包文件放在项目的子文件夹中,并将此子文件夹链接到tex/latex/
本地(或私有)TEXMF 树中的子文件夹。使用这样的符号链接,您无需更改任何配置或环境变量。
答案3
texmf.cnf
如果你不想设置环境变量,可以在 TeX Live 发行版的顶层编辑一个文件;通常的值TEXMFHOME
是,使用 vanilla TeX Live
TEXMFHOME = ~/texmf
它代表texmf
你家中的一个文件夹。在 MacTeX 中安装了 TeX Live 后,
TEXMFHOME = ~/Library/texmf
这个 kpathsea 变量可以根据您的喜好进行设置:
TEXMFHOME = {~/Library/texmf,/Volumes/Dropbox/texmf}
会让 TeX 程序也搜索texmf
磁盘中名为 的文件夹(应该组织为 TeX 树)Dropbox
。您应该知道要给出的准确路径。假设这一点,您可以将类和包放入其中
/Volumes/Dropbox/texmf/tex/latex/myproject
(选择一个更好的名称)并且所有在其机器上修改文件的用户都texmf.cnf
将能够访问该树。
启动 TeX 程序,例如,
TEXMFHOME=:/Volumes/Dropbox/texmf// pdflatex filename
将是等效的(请注意,开头的冒号表示在 中所述的值后“附加”新树texmf.cnf
,结尾的冒号//
表示“递归搜索”)。当然,这样的设置TEXMFHOME
可以在整体环境中说明。这种texmf.cnf
方式更安全,因为它不依赖于 shell 设置;如果在系统上找不到额外的树,它将被忽略。
答案4
可能最简单的技巧就是为每个 .sty 和 .cls 文件(位于“样式文件”目录中)创建别名,并将它们放在您需要的任何位置。这不仅是为了节省空间,也是为了统一。