我在某个目录中创建了自己的文档类和包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
)。我所做的添加是TEXINPUTS
和main_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
如上所示的方法)。