在 MiKTeX 中创建本地 texmf 树

在 MiKTeX 中创建本地 texmf 树

在 TeX Live 中,有为TEXMFLOCAL管理员和TEXMFHOME用户预定义的,但在 MiKTeX 中默认没有texmf安装本地树,尽管它很有用,参见本地 texmf 树的用途。因此我的问题是:

如何texmf在 MiKTeX 中创建本地树?

答案1

实际上,您可以创建多个本地 TeXMF 文件夹!MiKTeX 的在线文档中已经有描述,请参阅整合本地新增功能,在撰写本文时针对最新的 MiKTeX 2.9(但所包含的图像来自旧版本,似乎是 MiKTeX 2.5,略有不同,另见http://docs.miktex.org/2.5/manual/localadditions.html。那里的名称是“用户管理的 TEXMF 目录”(另请参阅本答案最后的附加注释)

无论如何,这里有另一种描述:

  • 在计算机上的某个位置创建一个文件夹 – 使用重要例外。 它一定不是 MiKTeX 安装的子文件夹(在旧版 MiKTeX 中是这样工作的,但出于安全原因进行了更改)。尽可能避免路径中的空格,否则可能会出现故障。对于 MiKTeX 便携版,文件夹必须与 MiKTeX 安装位于同一驱动器上,它将被保存为相对路径。在这里我将使用c:\localtexmf

    此文件夹必须符合 TDS(请参阅TeX 文件的目录结构); 如果不是,MiKTeX 会抱怨。您需要什么取决于您想要安装到此目录中的内容,至少一个tex\latex子树就足够了。如果您模仿(本身符合 TDS 标准)MiKTEX 树,但二进制文件可以直接进入子文件夹c:\localtexmf\bin

  • 现在,使用 GUI:

    1. 在开始菜单中,转到 MiKTeX 条目并打开设置 - 如果您以管理员身份运行,则当然是“设置(管理员)”。将打开“MiKTeX 选项”窗口。

    2. 转到“Roots”选项卡。单击“Add”并选择c:\localtexmf\。如果有多个本地目录,可以使用“Up”和“Down”按钮选择搜索顺序。

    3. 现在几乎最重要的部分是:转到“常规”选项卡,然后单击“刷新 FNDB”(FNDB = 文件名数据库)。在某些情况下,尤其是安装了新字体时,还必须按“更新格式”按钮。

    如果您忘记了这一步,那么之前的所有步骤都将毫无意义。

  • 否则,使用命令行(因为管理员总是添加开关--admin):

    执行initexmf --register-root=c:\localtexmf,然后执行initexmf --update-fndb(更短:initexmf -u)。

    (在每个步骤中您都可以添加开关--verbose以获取有关发生的情况的更多信息。)

    评论:出于兼容性原因,还有一个较旧的开关--user-roots=<local-texmf-dir>,根据initexmf --help注册用户根目录,我假设也是在管理模式下,但在http://docs.miktex.org/manual/initexmf.html没有再提及,所以我必须猜测。

  • 在这种情况下,bin创建了一个二进制文件的子文件夹,它应该在环境变量中注册%PATH% MiKTeX 自身安装的二进制子树,参见例如如何在 Windows XP 中管理环境变量或第三方工具环境人或者快速EE。然后您需要重新启动系统才能生效。一个无法解决的问题:由管理员设置的系统范围环境变量总是在用户特定变量之前读取。然后作为简单用户,您只能编写和使用包含自己的批处理文件%PATH%

所有用户创建的本地 texmf 树都可以通过从 MiKTeX 根中临时删除来禁用(参见最后的附加说明)。

也可以看看如何在 MiKTeX(Windows)上手动安装软件包

为了完整起见,这里描述了如何从 MiKTeX 中删除本地 TeXMF 树,例如c:\localtexmf\

  • GUI:
    再次转到设置中的“Roots”选项卡(“MiKTeX 选项”对话框),选择目录c:\localtexmf\,然后单击窗口下方的“Remove”。之后,您必须再次刷新 FNDB,并可能更新格式文件。

  • 命令行(也在此处:以管理员身份添加开关--admin):
    执行initexmf --unregister-root=c:\localtexmf,然后执行initexmf --update-fndb。如果您已卸载字体,请另外执行initexmf --mkmaps--verbose也可以添加开关。

  • 如果不再需要该子文件夹,则必须清理bin环境变量。%PATH%

  • c:\localtexmf\然后就可以安全地删除文件夹树了。

附加说明

首先提示一下:在命令提示符中,您可以输入echo %Variable%例如%Variable%%Userprofile%这样您就可以看到变量在系统上扩展到哪个值。

正是这句话“在 MiKTeX 中默认没有安装本地 texmf 树”  问题中的描述是不正确的。MiKTeX 在%UserProfile%和管理模式下也为自己添加了几个树%AllUsersProfile%(以下 MiKTeX 面额在前):

  • “用户配置”:%AppData%\MiKTeX\<version>\
  • “UserData”:(%LocalAppData%\MiKTeX\<version>\自 Windows Vista 起)或%UserProfile%\<Local Settings>\<Application Data>\MiKTeX\<version>\(直到 Windows XP,字符串<Local Settings><Application Data>取决于语言)
  • 仅在管理员模式下使用“CommonConfig” 和 “CommonData”:(%AllUsersProfile%\MiKTeX\<version>\自 Windows Vista 起)或%AllUsersProfile%\<Application Data>\MiKTeX\<version>\(直到 Windows XP,字符串<Application Data>取决于语言)

您可以通过 GUI 在“MiKTeX 选项”窗口的“Roots”选项卡下查看实际路径,或者通过执行命令行界面查看initexmf --report

所有这些本地树的缺点:它们只能在安装时更改,参见更改 MiKTeX 中自动安装软件包的位置,并且它们不能被禁用(通过从 MiKTeX 根中暂时删除)。

如需更多信息,请参阅MiKTeX 管理模式和用户模式的区别

答案2

这是 MikTeX 新版本中的说明。引用的部分与另一个答案

  • 在计算机上的某个位置创建一个文件夹 – 使用重要例外。 它一定不是 MiKTeX 安装的子文件夹(在旧版 MiKTeX 中是这样工作的,但出于安全原因进行了更改)。尽可能避免路径中的空格,否则可能会出现故障。对于 MiKTeX 便携版,文件夹必须与 MiKTeX 安装位于同一驱动器上,它将被保存为相对路径。在这里我将使用c:\localtexmf

哪个目录最适合保存我的 .sty 文件? 包含有关放置文件夹位置的一些建议。

此文件夹必须符合 TDS(请参阅TeX 文件的目录结构); 如果不是,MiKTeX 会抱怨。您需要什么取决于您想要安装到此目录中的内容,至少一个tex\latex子树就足够了。如果您模仿(本身符合 TDS 标准)MiKTEX 树,但二进制文件可以直接进入子文件夹c:\localtexmf\bin

  • 现在,使用 GUI:
  1. 转到开始 → MiKTeX → MiKTeX 控制台。
  2. 单击“设置”(在左侧窗格上)→“目录”选项卡→“+”按钮→选择路径。
  3. “任务”(菜单项)→“刷新文件名数据库”。
  • 否则,使用命令行(因为管理员总是添加开关--admin):

    执行initexmf --register-root=c:\localtexmf,然后执行initexmf --update-fndb(更短:initexmf -u)。

注意initexmf --register-root=<path><path>必须是绝对路径。因此它必须以c:\或 开头。

(在每个步骤中您都可以添加开关--verbose以获取有关发生的情况的更多信息。)

相关内容