我之前发布过类似的问题,但由于之前没有正确询问,所以我重新提问。
我创建了一个.sty
文件(preamble.sty
)来帮助清理我的序言,但我在实际使用文档中的包时遇到了麻烦。
我按顺序关注了其他问题,但都没有任何结果:
-在 MiKTeX 中创建本地 texmf 树
我的文件路径.sty
是C:/Users/me/texmf/TeX/LaTeX/PreambleStuff
。我使用 MikTeX GUI 将其添加为“设置”中的根目录,然后确保单击了“刷新 FNDB”
-我应该将自己的 .sty 或 .cls 文件放在哪里,以使它们可供我的所有 .tex 文件使用?
我使用了kpsewhich -var-value=TEXMFHOME
命令行,命令提示符窗口没有显示任何文件路径,只是显示了一个新C:\Users\me>
提示。这是否意味着我没有 texmf 主目录?我还使用了kpsewhich preamble.sty
显示文件正确文件路径的命令(请参阅上面的文件路径)。
-https://docs.miktex.org/manual/texfeatures.html#includedirectory
我输入latex --include-directory=C:/Users/me/texmf/TeX/LaTeX/PreambleStuff preamble.sty
后命令窗口显示! LaTeX Error: \usepackage before \documentclass.
See the LaTeX manual or LaTeX Companion for explanation.
最后一部分提出了我是否真的.sty
正确编写了文件的问题,但我最关心的是让 MikTeX 找到文件并将其正确包含在每个文档中。我还能做什么或者我做错了什么?
答案1
您的本地 TEXMF 树应该不是是 MiKTeX\texmfs 的子文件夹,尽管它可以是屏幕截图中的兄弟树。关键是它以 texmf 结尾,而不是 texmf\tex\lat...\…
理想情况下,它应该位于没有用户控制问题的区域,常见的建议是 C:\users\yourname\mytexmf,类似于 Linux 的 ~/mytexmf。但是由于用户名多种多样,最好使用 c:\miktexdata\mytexmf 之类的名称,避免使用空格、标点符号或重音符号。
确定一切正常后,转到Tasks
并Refresh file name database
。退出控制台并检查 MiKTeX 是否未在后台运行。重新进入 MiKTeX 控制台并检查设置是否仍然相同。
如果你没有运行控制台,你可以使用命令行执行相同的操作
initexmf --user-roots=c:\mytexmf --update-fndb=c:\mytexmf --update-fndb
或者按照 Ulrike Fischer 在另一个帖子中的建议
initexmf --register-root=c:\mytexmf
如果您仍然遇到问题,在便携式安装中,该设置可能存储在单个 miktexstartup.ini 文件中,请检查其内容,并且没有第二个同名文件。在基本用户安装中,它存储在 Computer\HKCU\Software\MiKTeX.org\MiKTeX\2.9\Core 下的注册表中。如果您对搜索有信心,您可以检查条目是否相同。
要测试它是否有效,请下载经过充分测试的附加包,例如压缩文件并安装(解压内容,以便包含的文件夹doc source and tex
包含在您的个人 texmf 中,作为 mytexmf/tex/mytexmf/doc mytexmf/source)
确保更新文件名数据库在控制台或通过命令行
准备一个简单的 MWE 文件
\documentclass{article}
\usepackage{mwe}
\begin{document}
\blindtext
\begin{figure}
\includegraphics[width=.48\linewidth ]{example-image-a}
\includegraphics[width=.48\linewidth ]{example-image-b}
\caption{MWE to demonstrate how to place to images side-by-side }
\end{figure}
\blindtext
\end{document}
它应该运行,你将看到对 C:/mytexmf\tex\latex\mwe\mwe.sty 的引用,从而证明个人 texmf 已为 .sty 正确设置。注意:MiKTeX 使用 / 作为存储的 texmf 的绝对部分,并使用 \ 作为其下方的相对部分,这对于 Windows 来说是可以接受的。
答案2
我遇到了 MikTeX 中的一个错误。为了解决这个问题,我使用了 @KJO 提供的答案,此外,我还手动编辑了miktexstartup.ini
目录中的文件<installdir>\texmfs\install\miktex\config
:
;;; MiKTeX startup information
[Auto]
Config=Portable
[Paths]
UserRoots=D:\miktex-portable\mytexmf
对我来说<installdir>
是D:\miktex-portable
。手动添加行UserRoots
、重新启动 MikTeX portable 并构建 FNDB 后,它就成功了!