在 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:
在开始菜单中,转到 MiKTeX 条目并打开设置 - 如果您以管理员身份运行,则当然是“设置(管理员)”。将打开“MiKTeX 选项”窗口。
转到“Roots”选项卡。单击“Add”并选择
c:\localtexmf\
。如果有多个本地目录,可以使用“Up”和“Down”按钮选择搜索顺序。现在几乎最重要的部分是:转到“常规”选项卡,然后单击“刷新 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:
- 转到开始 → MiKTeX → MiKTeX 控制台。
- 单击“设置”(在左侧窗格上)→“目录”选项卡→“+”按钮→选择路径。
- “任务”(菜单项)→“刷新文件名数据库”。
否则,使用命令行(因为管理员总是添加开关
--admin
):执行
initexmf --register-root=c:\localtexmf
,然后执行initexmf --update-fndb
(更短:initexmf -u
)。
注意initexmf --register-root=<path>
,<path>
必须是绝对路径。因此它必须以c:\
或 开头。
(在每个步骤中您都可以添加开关
--verbose
以获取有关发生的情况的更多信息。)