考虑以下 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 {为什么会出错?}。