我想了解如何使用该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 的维护人员在解析日志文件时更加小心。