将 Latex 代码参数转换为 PackageWarning 的文本表示形式?

将 Latex 代码参数转换为 PackageWarning 的文本表示形式?

考虑以下 MWE。这将导致各种错误,具体取决于 #1 的内容。

我怎样才能将 #1 转换为字符串表示形式(例如,剥离或忽略 textbf),以便可以将其提供给 PackageWarning?

\documentclass{book}
\newcommand{\mycommand}[1]{
   \PackageWarning{Error detected, while processing. Text representation: #1}
}
\begin{document}
   \mycommand{This is some text \textbf{why is this going wrong?}}
\end{document}

答案1

问题不在于,\textbf但是它\PackageWarning需要两个参数,而你只给它一个参数。这导致命令将以下内容\end作为第二个参数,从而造成很多麻烦。

因此只需将缺少的第一个参数(代表包名称)添加到宏调用中:

\newcommand{\mycommand}[1]{
   \PackageWarning{mypackage}{Error detected, while processing. Text representation: #1}
}

这将给出所需的输出

程序包 mypackage 警告:处理时检测到错误。文本表示:这是输入行 7 上的一些文本 \textbf {为什么会出错?}。

相关内容