如何制作带有错误消息的 \input{} 函数?

如何制作带有错误消息的 \input{} 函数?

我经常使用\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这些建议。

相关内容