使用 \newcommand 和 \input

使用 \newcommand 和 \input

我喜欢使用变量作为路径,这样如果我迁移到另一个系统/用户名,就不必更改每个路径名。这似乎不适用于该命令。我的文件input中有以下内容:main.tex

\newcommand{\rootFolder}{/home/user/Documents/tex}
....
\input{\rootFolder/foo/bar.tex}

但我收到以下错误。

1 || ** \rootFolder/foo/bar.tex:     
2 main.tex|86 error| Could not open "\rootFolder/foo/bar.tex"

我的蜘蛛感应告诉我它没有扩张\rootFolder。谁能告诉我我做错了什么?

编辑用户 Peter Grill 要求我提供一个最小工作示例 (MWE),因此这里就有了。另外,我应该提到我在 Vim 内部遇到了这个错误。

测试.tex

hello world

main.tex(本地路径)

\documentclass{article}
\begin{document}
\input{test.tex}
\end{document}

% Works Fine

main.tex(变量)

\newcommand{\rootFolder}{/home/user/Documents}

\documentclass{article}
\begin{document}
\input{\rootFolder/test.tex}
\end{document}

% Vim Error:
% 1 || ** \rootFolder/test.tex:                                                                                                                                      
% 2 main.tex|5 error| Could not open "\rootFolder/test.tex"

main.tex (edef)

\newcommand{\rootFolder}{/home/user/Documents}

\documentclass{article}
\begin{document}
\edef\ExpandedFileName{\rootFolder/test.tex}\input{\ExpandedFileName}
\end{document}

% Vim Error:
% 1 || ** \ExpandedFileName:                                                                                                                                      
% 2 main.tex|5 error| Could not open "\ExpandedFileName"

main.tex (无 edef)

\newcommand{\rootFolder}{/home/user/Documents}

\documentclass{article}
\begin{document}
\ExpandedFileName{\rootFolder/test.tex}\input{\ExpandedFileName}
\end{document}

% Vim Error:
% 1 || ** \ExpandedFileName:                                                                                                                                      
% 2 main.tex|5 error| Could not open "\ExpandedFileName"
% pdflatex Error:
% Undefined control sequence.
% l.5     \ExpandedFileName{\rootFolder/test.tex}\input{\ExpandedFileN...

main.tex (扩展后)

\newcommand{\rootFolder}{/home/user/Documents}

\documentclass{article}
\begin{document}
\expandafter\input\expandafter{\rootFolder/test.tex}
\end{document}

% Vim Error:
% 1 test.tex|5 error| Don't use "\expandafter" in LaTeX documents

答案1

查看输出,您会发现这不是 Tex 错误(并且大概 LaTeX 可以正确处理您的代码),而是来自 Vim 的错误,我假设您使用的不是 emacs 的编辑器:-) 看起来您正在使用 Vim 模式,它认为它理解 TeX 语法并试图做一些有用的事情,但实际上它不理解完整的命令用法。

相关内容