处理 latex、Windows 10、MiKTeX 2.9 中主目录的波浪号

处理 latex、Windows 10、MiKTeX 2.9 中主目录的波浪号

我想要在 Latex 运行中包含一系列来自不同路径的文件;我在 Windows 10 下的 MiKTeX 2.9 中工作。我无法\string~指向 %USERPROFILE%。

以下 MWE 可以作为说明:

\documentclass{article}
\usepackage{graphicx}

% I put mypic.png in my Home Folder; I'm running Windows 10, MiKTeX 2.9, 
% executing pdflatex both in command line and in TeXWorks 
%
\newcommand\HomeFolder{\string~} %1
%\newcommand\HomeFolder{$HOME} %2
%\newcommand\HomeFolder{C:/Users/MyLoginName} %3

\begin{document}
\includegraphics{\HomeFolder/mypic}
\end{document}

依次取消\newcommand注释标签 1、2 和 3。结果分别是:

! LaTeX Error: File `~/mypic not found.
! LaTeX Error: File `$HOME/mypic not found.

3 成功了。(该操作明确地将我的 %USERPROFILE% 放入其中。)MiKTeX 中的波浪号是否指向 %USERPROFILE% 以外的某个地方?如果是,有没有办法将 ~ 重置为 %USERPROFILE?或者这个问题更普遍?

换句话说,\includegraphics{\string~/foo}大卫·卡莱尔在回答中提到的“应该有效”相对于主目录的参考文件是否适用于 MiKTeX 2.9?这应该是相当基本的,但我还没有看到关于它的直接陈述。

(上面的 MWE 说明了我试图表达的关于访问主文件夹外的路径的观点。我意识到如果我的主目录在我的 TEXINPUTS 路径中,那么我不需要限定包含的内容mypic.png。但是,我正在处理的用例更一般地是关于路径的,其中上述问题只是一个特例。)

那个报告https://sourceforge.net/p/miktex/bugs/2535/讨论了为什么pdftex.exe而不是 MiKTeX 是处理波浪号的问题。然而,这里的问题pdflatex也适用于 ,而在 2535 的插图中,pdflatex波浪号工作正常,即使没有pdftex

答案1

在 TeXlive 和 Windows 10 中\string~可以运行并指向%USERPROFILE%。使用$USERPROFILE 也可以:

\includegraphics{\string~/Documents/test.pdf}
\includegraphics{$USERPROFILE/Documents/test.pdf}

这是 TeXlive 用于搜索文件的 kpathsea 库的功能。

MiKTeX 不使用 kpathsea,而且两者都不起作用。在使用 MiKTeX 时,我不知道还有什么方法可以像 TeXlive 那样直接在文档中获取变量扩展(也许可以使用 lua 或管道)。

您提到的错误与此无关,这是关于文件名中的实际波浪符号。但我在命令行上检查了环境变量。

如果文件存在,则类似的操作在两个 texsystems 中都可以正常工作:

pdflatex %USERPROFILE%/path/to/test

如果文件不存在,MiKTeX 和 TeXLive 的行为会有所不同。MIKTeX 会扩展变量,但随后会对反斜杠发出抱怨:

C:\Users\XXX\Documents>pdflatex %USERPROFILE%/tests/test.utf8
This is pdfTeX, Version 3.14159265-2.6-1.40.21 (MiKTeX 20.11)
entering extended mode
! Undefined control sequence.
<*> C:\Users
            \XXX/tests/test.utf8

另一边的 TeXLive 抱怨文件丢失:

! I can't find file `C:/Users/XXX/tests/test-utf8'.
<*> C:/Users/XXX/tests/test-utf8

旁注:我永远不会像这样调用 pdflatex,但总是先切换到 tex 文件的文件夹然后使用pdflatex test,所以在我看来这只是一个学术差异。

您可以在以下位置提出功能请求:https://github.com/MiKTeX/miktex/issues

相关内容