如何在与 TeX Live 安装不同的驱动器中注册我自己的包或类?

如何在与 TeX Live 安装不同的驱动器中注册我自己的包或类?

我在某个目录中创建了自己的文档类和包tex\latex。目录tex\latex本身可能位于任何驱动器中的任何其他目录中。我可以将包/类注册到 Miktex,正如在我的答案在这里将文档类或包放在单独驱动器的专用目录中实际上很有用,可以避免系统崩溃时丢失数据。

但是对于 TeX Live 来说该如何做到这一点呢?


根据 Ulrike 的回答,我按照以下步骤操作,并且有效。

步骤1

打开C:\texlive\2010\texmf\web2c\texmf.cnf看看是如何TEXMFLOCAL定义的。

% .... other settings before this line have been removed for simplicity. 
%
% A place for local additions to a "standard" texmf tree.
% This tree is not used for local configuration maintained by
% texconfig, it uses TEXMFCONFIG below.
TEXMFLOCAL = $SELFAUTOPARENT/../texmf-local
%
% .... other settings after this line have been removed for simplicity. 

第2步

打开 C:\texlive\2010\texmf.cnf并修改如下。

% (Public domain.)
% This texmf.cnf file should contain only your personal changes from the
% original texmf.cnf (for example, as chosen in the installer).
%
% That is, if you need to make changes to texmf.cnf, put your custom
% settings in this file, which is .../texlive/YYYY/texmf.cnf, rather than
% the distributed file (which is .../texlive/YYYY/texmf/web2c/texmf.cnf).
% And include *only* your changed values, not a copy of the whole thing!
%
OSFONTDIR = $SystemRoot/fonts//
%============== Below this row is my modification ====================
%
% My custom packages and classes are
% in E:/A/My LaTeX/MyLibrary/tex/latex/misc.
%
TEXMFLOCAL = $SELFAUTOPARENT/../texmf-local,E:/A/My LaTeX/MyLibrary
%
%
% It is wrong if you do like below
% TEXMFLOCAL = $SELFAUTOPARENT/../texmf-local,E:/A/My LaTeX/MyLibrary/tex/latex/misc
% or
%TEXMFLOCAL = $SELFAUTOPARENT/../texmf-local,E:/A/My LaTeX/MyLibrary% comments

包和类必须位于 的某个子目录中tex\latex。在我上面的例子中,它们位于E:/A/My LaTeX/MyLibrary/tex/latex/misc目录中。我不确定路径中的空格在 Windows 以外的操作系统上是否仍然有效。

步骤3

调用texhash如下。

在此处输入图片描述

步骤4

完成。恭喜。

该问题下面的旧评论应该被删除,因为它们可能不再与最终编辑相关。

答案1

好的。应要求,我将我的评论总结为答案:

我没有完整的 TeX Live,但我有一个骨架(用于 LuaTeX)。我已将各种texmf树(例如来自 MiKTeX)从各种驱动器添加到其中,texmf.cnf并且运行良好。我使用的语法是

 TEXMFLOCAL = I:/TeX-Roots/microtype,I:/TeX-Roots/UFlocaltexmf,...

(词根之间有逗号,末尾没有斜线,末尾没有逗号,... 代表更多路径)。

TEXMFLOCAL然后稍后在我的(完整)中texmf.cnf像这样使用该变量:

TEXMF = {!!$TEXMFMAIN,!!$TEXMFLOCAL, ...}

通常TEXMF应该已经在全局中有了此定义texmf.cnf,因此无需在本地重置它texmf.cnf。kpathsea 读取全部 texmf.cnf. 先前的(本地)设置有效。

您应该检查是否没有丢失原始TEXMFLOCAL定义中的 texmf 树(也许它之前确实包含一些内容)。

pathes/texmf.cnf检查带有kpsewhich -show-path=cnf或(根据 mpg)的列表kpsewhich -a texmf.cnf

如果您安装了 MiKTeX,请检查您是否没有使用其 texhash(尝试texhash --version)。

答案2

在默认的 TeXLive 安装中,您有一个目录c:\texlive\texmf-local。您可以在其中保存自己的文件。此本地目录具有与默认主目录相同的子目录。LaTeX 文件应保存在中texmf-local\tex\latex\...。保存文件后,运行 as 命令texhash以更新数据库。

您可以从命令行运行kpsewhich -expand-var '$TEXMFHOME',然后您会看到默认主目录。您可以根据需要更改此变量。您有三棵树:$TEXMF$TEXMFLOCAL$TEXMFHOME

答案3

您可以轻松添加位于c:/texlive目录之外的软件包目录。只需将它们(用 分隔;)附加到安装TEXMFLOCAL配置文件中的变量c:/texlive/texmf.cnf并运行texhash命令即可。这会将找到的所有文件添加到文件名数据库中。

编辑: 这是我的 texmf.cnf:

% (Public domain.)
% This texmf.cnf file should contain only your personal changes from the
% original texmf.cnf (for example, as chosen in the installer).
%
% That is, if you need to make changes to texmf.cnf, put your custom
% settings in this file, which is .../texlive/YYYY/texmf.cnf, rather than
% the distributed file (which is .../texlive/YYYY/texmf/web2c/texmf.cnf).
% And include *only* your changed values, not a copy of the whole thing!
%
TEXMFLOCAL = $SELFAUTOPARENT/texmf-local;/home/grahn/texpkgs
TEXMFHOME = $TEXMFLOCAL
TEXMFVAR = $TEXMFSYSVAR
TEXMFCONFIG = $TEXMFSYSCONFIG
ASYMPTOTE_HOME = $TEXMFCONFIG/asymptote
TEXINPUTS=.//;
main_memory = 30000000

据我所知,此文件是在 TeXLive 安装期间安装的(我使用了选项--portable)。我所做的添加是TEXINPUTSmain_memory行以及用于说明的附加目录TEXMFLOCAL。始终在路径中使用/(即使对于 Windows)。TEXINPUTS=.//;让 TeX 在当前目录的子目录中搜索文件。

答案4

使用 TeX Live 2017 可以非常轻松地注册新的 TEXMF 树。假设您的文件位于E:/A/MyLaTeX/MyLibrary/tex/latex/misc。因此新的 TEXMF 树将是E:/A/MyLaTeX/MyLibrary。现在,打开控制台窗口并输入:

tlmgr conf auxtrees add "E:/A/MyLaTeX/MyLibrary"

Linux 或 OS/X 用户可能需要使用sudo

sudo tlmgr conf auxtrees add "E:/A/MyLaTeX/MyLibrary"

您可以使用以下方法测试所有这些辅助树及其搜索顺序

tlmgr conf auxtrees show

如果你想删除这样的辅助树,只需使用

tlmgr conf auxtrees remove "E:/A/MyLaTeX/MyLibrary"

(这里可能也需要使用sudo如上所示的方法)。

相关内容