如何将 \input 全局目录设置为 \graphicspath?

如何将 \input 全局目录设置为 \graphicspath?

我有 Latex 模板,我使用 Pandoc 向其传递参数。一个参数是 $logopath$,所有图形都位于其中,我可以正确设置 graphicspath,没有问题。

\graphicspath{{$logopath$}} % this works

我决定将主模板拆分成几个部分,这样我就可以只从子模板加载必要的包和内容,这样就简化了主模板结构。当我使用绝对路径时,输入可以按预期工作。

\input{/Users/pasi/Projects/dxss/endusers/a/sub1.tex} % this works

由于这些模板分布在不同的系统和位置,因此必须使用与 graphicspath 中相同的信息。主模板、子模板和图形文件位于同一目录中,我无法“硬编码”绝对路径。我认识到问题/答案看起来 100% 匹配,但无论如何我都无法让它发挥作用......

\makeatletter
\def\input@path{{$logopath$}} % this doesn't work
\makeatother

\makeatletter
\def\input@path{{/Users/pasi/Projects/dxss/endusers/a/}} % this works
\makeatother

当我尝试这个时:

\input{sub1.tex}

它会失败,就像绝对路径之外的所有其他变体一样。

更新

我刚刚意识到我的 Projects 目录是指向“Machintosh HD 2/Projects”的符号链接。不知何故 \graphicspath 似乎接受带有空格的路径,但 \input@path 却不接受。将 $logopath$ 变量传递给 Pandoc 的程序将真实路径插入该变量,而不是带有符号链接的路径。空格会被转义。

\input 存在错误或功能吗?

答案1

我从来没想到这竟然有效……

\makeatletter
\def\input@path{{"$logopath$"}} % working solution with possible white spaces in path
\makeatother

这种“引用”似乎也适用于没有空格的路径。非常感谢@David Carlisle的评论。试错法大获成功 :)

相关内容