我经常使用\input{}
master.tex 文件中的命令从其他文件导入文本,例如
\input{./texts/myText.tex}
用于将文本文件“myText.tex”从文件夹“texts”插入到我的主文件夹中。
但是,如果 Latex 找不到文件“./texts/myText.tex”,编译过程就会停止,我必须搜索日志文件以寻找解释。为了避免这种情况,我etoolbox
在序言中使用了包,并在我想要插入文件内容的地方使用了以下代码:
\usepackage{etoolbox}
-----
\newcommand{\filename}{./texts/myText.tex}
\IfFileExists{\filename}%
{\input{\filename}}%
{\color{red} Latex cannot find this file: \filename}
当使用此代码时,如果 Latex 找到文件,它就会输入该文件;如果找不到,Latex 会在编译输出中插入一条警告消息,而不是停止编译过程。
这个功能很棒,只是新代码占用了四行空间,而初始代码只占用一行。
我的问题是,我怎样才能将四行代码放入乳胶函数中
\inputMsg{./texts/myText.tex}
其中新函数“inputMsg”包含四行代码的功能。这个新“inputMsg”的代码会是什么样子?
提前感谢任何有用的建议:)
答案1
您可以\InputIfFileExists
从 LaTeX 内核使用。
它将\input
文件作为第一个参数,然后执行第二个参数中的代码。如果文件不存在,则执行第三个参数。
\newcommand*{\inputMsg}[1]{%
\InputIfFileExists{#1}
{}
{\color{red} Latex cannot find this file: #1}}
进而
\inputMsg{./texts/myText.tex}
当然,也可以将代码打包成宏
\newcommand*{\inputMsg}[1]{%
\IfFileExists{#1}
{\input{#1}}
{\color{red} Latex cannot find this file: #1}}
你甚至不需要etoolbox
这些建议。