项目的 .sty 和 .cls 文件应该放在哪里

项目的 .sty 和 .cls 文件应该放在哪里

我想在项目中使用自己的 .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 文件(位于“样式文件”目录中)创建别名,并将它们放在您需要的任何位置。这不仅是为了节省空间,也是为了统一。

相关内容