变量和目录的配置

变量和目录的配置

在使用 TeX Live 的类 Unix 系统上,该命令kpsewhich --var-value=TEXMFLOCAL给出了安装自制包的目录路径。例如,在我的 Mac 上,我获取了路径/usr/local/texlive/texmf-local

这可以在使用 TeX Live 的 Windows 上运行吗?

答案1

虽然你已经得到了一些答案(其中一些在评论中),但我还是想说以下几点:TeXLive(以及我所知道的 MikTeX)

  1. 设置,使用正确填充总溶解固体,即 TeX 目录结构。
  2. 正在使用 Karl Berry 搜索路径工具。因此,您可以使用命令行工具kpsewhich来确定文件的位置。此命令的灵​​感来自 Unixwhich工具,它试图找到给定可执行文件的位置。对于在 TeX 系统中的使用,它得到了一些增强。

尤其是在 TeXLive 中(但我认为在 MikTeX 中也一样),你可以使用多个 TDS 树并排使用。通常,TeXLive 系统设置为具有三个这样的 TDS 树:

  1. 发行版维护者的 TDS,
  2. 本地系统管理员的 TDS,
  3. 个人用户的TDS。

第一个包含 TeXLive 附带的所有软件包(分别为 MikTeX)。当您(作为系统管理员)安装 TeXLive 系统时,它将被安装。每当您更新 TeXLive 系统时,它将被更改。因此,您不应该将任何软件包安装到该 TDS 树中(当然,除非您是 TeXLive 维护者。但是,为什么我要向您解释设置呢?)。

第二个 TDS 树是为系统管理员准备的,系统管理员通过一个可随时安装的本地软件包的中央存储库来支持用户。例如,符合大学企业设计的样式文件将安装在此处。如果是网络共享,则整个大学(如果您愿意,也可以是整个公司)的所有 TeX 用户都可以使用此文件而无需进行任何进一步的配置。为了能够在此树中安装软件包,您通常还需要具有系统管理员权限,才能在此处写入文件。

第三棵也是最后一棵树是个人用户的树。它将位于用户自己拥有的目录中;在 Unix 系统中,这通常是在用户的主目录中。

您可以使用 TeXLive 命令工具tlmgr来找出这三个 TDS 在您的个人计算机上的位置。只需运行

tlmgr conf

并检查以

  1. TEXMFDIST
  2. TEXMFLOCAL
  3. TEXMFHOME

它们会指出 TeX 安装中的正确位置。

(我不知道提供有关 MikTeX 的此信息的工具,抱歉。)

还有一行以 开头,texmf.cnf其中列出了主配置文件的位置。如果您打算更改某些位置,并且您确实知道您在那里做什么,那么这就是要编辑的文件!

还有一件重要的事情需要指出。如今,一个成熟的 TeX 系统包含数十万个文件。对于您的计算机来说,一遍又一遍地搜索每个路径只是为了找到 ,这将是乏味的book.cls。(我是否提到过,计算机很笨?如果您不提供任何帮助,计算机就无法记住这些位置!)为了避免反复搜索,位于分发 TDS 树和本地 TDS 树中的所有文件都存储在一个简单的数据库中。因此,将文件复制到其中一个树中是不够的。除非您更新数据库,否则 TeX 将找不到这些文件。当然,您肯定需要超级用户权限(又称超级牛能力 :-))来更新数据库。在经典的 Unix 系统上,这曾经是命令texhash或,mktexlsr它是“创建 TeX ls-minus-R 数据库”的缩写形式(说实话:它只不过是ls -R $TEXMFDIST您想要添加到数据库的任何 TDS 树。)

总而言之:如果您计划通过发布自己的软件包来丰富世界,并将其安装在其他人的计算机上,那么最好的方法就是说服 TeXLive 维护者将其包含在 TeXLive 中。然后您就不必再担心了。如果您的软件包不是那么重要,您可以说服 TeXLive 维护者将其包含在内,那么最好指导您的客户将其安装在TEXMFHOME他们系统的一部分中。只需让他们运行

tlmgr conf | grep TEXMFHOME

在类 Unix 系统上。在安装了 bash 的较新的 Windows 系统上,它也可以工作。在那里,他们不需要拥有超级牛的权力,也不必费力更新数据库。如果你碰巧将软件包交给系统管理员,他们通常知道在哪里存储软件包以及如何更新数据库。

附言:如果您想确保book.cls在 TeXLive 系统上使用 CTAN 的最新版本,而维护者没有将其纳入他们的发行版,您必须在TEXMFLOCAL或中安装它,并通过以这种方式TEXMFHOME编辑来配置您的系统,这将在三个给定的 TDS 树中最后进行搜索。temf.cnfTEXMFDIST

答案2

需要注意的一点是,Windows 中的许多配置变量默认不激活,此外,有些操作我们可以使用管理员权限执行,而有些操作则需要普通用户权限。我倾向于使用普通用户选项,也就是说配置只会影响系统的当前用户。

对于这个例子,用户名是yourself,每次我们启动命令行时cmd我们都会这样做无管理员权限

变量和目录的配置

  1. 配置TEXMFHOME 当您在命令行上运行时cmd您将获得:
C:\Users\yourself>kpsewhich -var-value=TEXMFHOME
C:/Users/yourself/texmf

但实际上,texmf目录并不存在,我们必须按照结构创建它TDS。我们将小心地使用路径分隔符来创建它,在本例中为\

C:\Users\yourself>mkdir texmf\tex\latex
  1. 配置TEXMFCNF 打开命令行cmd并执行以下行:
C:\Users\yourself>kpsewhich -all texmf.cnf
c:/texlive/2019/texmf.cnf
c:/texlive/2019/texmf-dist/web2c/texmf.cnf

输出表明该变量未为我们的用户配置。我们按以下方式配置它:

C:\Users\yourself>setx TEXMFCNF C:/Users/yourself/texmf;

CORRECTO: se guardó el valor especificado.

我们出去又回来跑:

C:\Users\yourself>reg query HKEY_CURRENT_USER\Environment

HKEY_CURRENT_USER\Environment
    Path    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
    TEMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp
    TMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp
    OneDrive    REG_EXPAND_SZ    C:\Users\yourself\OneDrive
    TEXMFCNF    REG_SZ    C:/Users/yourself/texmf;

auxtrees我们已经完成了此变量的设置。此变量将与示例中的命令配合使用。

  1. 假设TEXINPUTS 我们有一个目录D:/transcripts部分或图像,但它们仅在本地可用,我们希望它们用于测试。在这种情况下,最好的办法是使用变量TEXINPUTS,这里取决于我们是否希望配置是永久的(始终可用)或临时的(仅在当前控制台中)。

a.临时配置打开命令行cmd ,执行:

C:\Users\yourself>set TEXINPUTS=.;D:/transcripts//;

这将一直有效,直到你关闭命令行,也就是说,你必须执行这个每次关闭命令行后。

b.永久配置 打开命令行cmd 并执行:

C:\Users\yourself>setx TEXINPUTS .;D:/transcripts//;

关闭命令行。这样我们就TEXINPUTS在您的环境变量现在它正在渗透。

如果需要TEXINPUTS从环境变量中查看,请使用:

C:\Users\yourself>reg query HKEY_CURRENT_USER\Environment

如果需要TEXINPUTS从环境变量中删除,请使用:

C:\Users\yourself>reg delete HKEY_CURRENT_USER\Environment /v TEXINPUTS /f

或者,也可以在图形模式下调整您的环境变量

完整示例使用auxtrees

这是我们与我的同事们在工作中使用的配置的一部分,使用托管在 中的项目github(我们也以.zip格式分发),使用一些包和自定义类,转录与 Windows 相关的部分(我希望您理解,我的母语是西班牙语)。TDS此示例的文件夹位于D:/ltxcole/stycole/,项目结构如下:

D:\ltxcole>tree
Listado de rutas de carpetas para el volumen driveD
El número de serie del volumen es FACD-A6DF
D:.
├───octavo
│   ├───diagnostico
│   ├───guias
│   ├───pruebas
│   ├───test
│   └───trabajos
├───produccion
├───septimo
│   ├───diagnostico
│   ├───guias
│   ├───pruebas
│   └───test
├───sintesis
└───stycole
    └───tex
        └───latex

关键在于其stycole结构TDS

└───stycole
    └───tex
        └───latex
               colegio-new2019.sty
               keyanswer.sty
               logoaurora.jpg
               tkz-custom.sty

TeXLive 的 Windows 配置文档不是很“解释性”,但是,论坛中有很好的信息。使用auxtrees允许您维护多个项目,而不会影响使用变量TEXMFLOCAL或将所有内容加载到 的整个系统TEXMFHOME

打开命令行cmd 并执行:

C:\Users\yourself>tlmgr conf auxtrees --conffile C:/Users/yourself/texmf/texmf.cnf show
tlmgr.pl: no auxiliary texmf trees defined.

输出告诉我们没有任何配置,现在我们运行:

C:\Users\yourself>tlmgr conf auxtrees --conffile C:/Users/yourself/texmf/texmf.cnf add D:/ltxcole/stycole/

为了验证一切正确,我们运行:

C:\Users\yourself>tlmgr conf auxtrees --conffile C:/Users/yourself/texmf/texmf.cnf show
List of auxiliary texmf trees:
  D:/ltxcole/stycole/

这样我们就完成了项目的配置,放置在中的文件D:/ltxcole/stycole/tex/latex/将可用于我们所有的文件。该文件C: Users\yourself\texmf.cnf包含以下行:

TEXMFAUXTREES = D:/ltxcole/stycole/,

只要您遵守结构,您可以添加任意数量的项目TDS

当然,如果你只想为自己做测试,使用 会更简单TEXMFHOME,尽管使用的优点auxtrees+git是你可以生成一个跨平台配置脚本 或一个简单的README带有合作项目相关说明的内容。

相关内容