expl3:如何在警告信息中显示行号

expl3:如何在警告信息中显示行号

从 LaTeX3 开始,我想记录此警告

Package foo Warning: blablabla on line XXX

我怀疑\msg_line_context会有帮助,但如何使用它?在下一个 MWE 中,它不会扩展

\documentclass{article}
\RequirePackage{expl3}
\ExplSyntaxOn
\msg_new:nnnn {foo} {warning-message} {blablabla #1} {}
\msg_warning:nnnnnn {foo} {warning-message} {\msg_line_context} {} {} {}
\ExplSyntaxOff
\begin{document}
TEST
\end{document}

答案1

你可以做

\documentclass{article}
%\RequirePackage{expl3}

\ExplSyntaxOn
\msg_new:nnn {foo} {warning-message} {blablabla #1}
\msg_warning:nnx {foo} {warning-message} {~\msg_line_context:}
\ExplSyntaxOff

\begin{document}
TEST
\end{document}

通过此设置您可以获得

Package foo Warning: blablabla on line 6

请注意,\msg_warning:<signature>有多种签名可用:

  • nnnnnn(四个可变参数)
  • nnxxxx(四个扩展的变量参数)
  • nnnnn(三个可变参数)
  • nnxxx(三个扩展变量参数)
  • nnnn(两个变量参数)
  • nnxx(两个扩展的变量参数)
  • nnn(一个变量参数)
  • nnx(一个扩展变量参数)
  • nn(无争论)

在第三个参数中,\msg_new:nnn您可以使用#1最多来#4引用\msg_warning:<signature>您将使用的特定风格的参数。

例如,如果你调用

\msg_warning:nn {foo} {warning-message}

你只会得到

Package foo Warning: blablabla

另一方面,如果你打算在警告中始终显示行号,那么这样做是有意义的

\msg_new:nnn {foo} {warning-message} {blablabla~\msg_line_context:}
\msg_warning:nn {foo} {warning-message}

相关内容