如何让本地包覆盖默认包

如何让本地包覆盖默认包

我在共享服务器上有一个非 root 帐户,该服务器上有一个可供所有用户使用的旧版本软件包,我想在我的帐户上使用较新的版本。我不能只使用 $TEXINPUTS,因为 latex 会先找到共享版本。我怎样才能让 latex 使用我的版本?

即我如何让 Latex 使用这两个文件中的第一个:

/home/fgregg/share/texmf/tex/latex/pgf/basiclayer/pgf.sty
/usr/share/texmf/tex/latex/pgf/pgf.sty

答案1

默认情况下,本地包应该位于 ~/texmf 中,而不是 ~/share/texmf 中(在 Mac 上,它们应该位于 ~/Library/texmf 中)。因此,请尝试将新版本的包放在 ~/texmf/tex 中。当 latex 搜索包时,应该首先找到此目录。

此外,本地 texmf 需要遵循 TeX 目录结构:(您最初不需要创建所有这些目录,但在添加新内容时需要将其放在正确的位置。)

  •  bibtex directory    This is where bib files and bst files go
     ⁃  bst directory       Put bst files here
     ⁃  bib directory       Put bib files here 
  •  tex directory       This is where new packages go
     ⁃  latex directory     Put latex packages here
     ⁃  plain directory     Put plain tex files here
     ⁃  xelatex directory   Put xelatex specific packages here
     ⁃  xetex  directory    Put plain xetex files here
     ⁃  context directory   Put context files here
     ⁃  generic directory   Put files that are usable with any TeX flavour here
  •  doc directory
     ⁃  put documentation files from packages installed in the tex directory here.
        Putting the documentation files here allows them to be found by the texdoc  
        system.

例如,假设您有新包cool-new-package。如果它是一个 latex 包,该包将附带(至少)一个.sty文件和一些文档文件(通常是.tex和版本)。您将在名为.pdf中创建一个目录,然后将其放在那里。您还将在 中创建一个目录 并将文档文件放在那里。~/texmf/tex/latexcool-new-packagecool-new-package.stycool-new-package~/texmf/doc

请注意,在全新安装中,texmf不会创建本地文件夹,如果不存在,则需要创建一个。

如果您使用的是 Mac,我已经创建了一个独立脚本来创建正确的文件夹结构。您可以在此处获取它:

源脚本也可用于 Linux 系统,可在此处获取:

相关内容