Windows MikTeX 找不到我的 .sty 文件

Windows MikTeX 找不到我的 .sty 文件

我之前发布过类似的问题,但由于之前没有正确询问,所以我重新提问。

我创建了一个.sty文件(preamble.sty)来帮助清理我的序言,但我在实际使用文档中的包时遇到了麻烦。

我按顺序关注了其他问题,但都没有任何结果:

-在 MiKTeX 中创建本地 texmf 树 我的文件路径.styC:/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 之类的名称,避免使用空格、标点符号或重音符号。

确定一切正常后,转到TasksRefresh 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 后,它就成功了!

相关内容