当文件不存在时生成可扩展的错误消息

当文件不存在时生成可扩展的错误消息

我想了解如何使用该expl3命令\msg_expandable_error(如使用这里),\IfFileExists如果某些外部文件不存在,则获取可扩展的错误消息。

我特意需要使用,\msg_expandable_error因为我的编辑器texstudio可以识别它并以红色字体打印错误消息。

此外,是否有 latex2e 对应物\msg_expandable_error


更新

当使用时检查 texstudio 内部的日志文件时,可以通过@egerg 的答案中的最后一段代码获得所需的红色错误消息输出\msg_expandable_error

在此处输入图片描述

答案1

我制作了以下测试文件

\documentclass{article}

\newcommand{\CheckIfFileExists}[1]{%
  \IfFileExists{#1}{OK}{\PackageError{diaa}{File #1 does not exist}{}}%
}

\begin{document}

\CheckIfFileExists{plain}

\CheckIfFileExists{xuaysyeuersss}

\end{document}

如果我使用 TeXmaker 编译它,我会得到

在此处输入图片描述

如果我使用 TeXStudio 编译它,我会得到

在此处输入图片描述

结论是,我们在 TeXStudio 中发现了一个错误,因此出现了一条错误消息

! Package diaa Error: File xuaysyeuersss does not exist.

See the diaa package documentation for explanation.
Type  H <return>  for immediate help.
 ...

l.11 \CheckIfFileExists{xuaysyeuersss}

被 TeXStudio 解析为警告。

您可能会误用以下expl3方法获取错误消息:

\documentclass{article}

\ExplSyntaxOn
\newcommand{\CheckIfFileExists}[1]
 {
  \file_if_exist:nTF { #1 }
   {OK}
   {\msg_expandable_error:nnn { diaa } { not~exist } { #1 }}
 }
\msg_new:nnnn { diaa } { not~exist }
 {
  The~file~#1~does~not~exist
 }
 {}
\ExplSyntaxOff

\begin{document}

\CheckIfFileExists{plain}

\CheckIfFileExists{xuaysyeuersss}

\end{document}

在此处输入图片描述

主要问题是错误消息没有提供太多信息。最好要求 TeXStudio 的维护人员在解析日志文件时更加小心。

相关内容