我使用命令\newcommand\emcpt[1]{{\bfseries #1}}
来强调图形的标题。我还创建了一个命令来方便使用\newcommand\percent[1]{\qty{#1}{\percent}}
包中的百分比siunitx
。虽然这两个命令单独使用效果很好(在文本模式\percent
下\emcpt
也一样),但\percent
在 inside of \emcpt
inside of 中使用\caption
会导致错误! Argument of \percent has an extra }
,! Paragraph ended before \percent was complete.
但格式符合预期。我该如何消除错误?
\documentclass{article}
\usepackage{mwe}
\usepackage[detect-all]{siunitx}
\newcommand\emcpt[1]{{\bfseries #1}}
\newcommand\percent[1]{\qty{#1}{\percent}}
\begin{document}
\begin{figure}
\centering
\includegraphics{example-image}
\caption{\emcpt{Test: \percent{20} }}
\end{figure}
\end{document}
答案1
在普通文本中,\qty
对命令进行几处本地重新定义,包括\percent
。
但是,的参数\caption
是一个移动参数,这意味着\percent
在文件中写入文本时你的参数也会被扩展.aux
,但此时的有效定义\percent
是你自己的定义,因此你会得到垃圾。
使用\DeclareRobustCommand
。
另外,我认为没有必要定义\emcpt
来做同样的事情\textbf
。最好给它设置别名。
\documentclass{article}
\usepackage[detect-all]{siunitx}
\usepackage{graphicx}
\NewCommandCopy{\emcpt}{\textbf}
\DeclareRobustCommand\percent[1]{\qty{#1}{\percent}}
\begin{document}
\begin{figure}
\centering
\includegraphics[width=4cm]{example-image}
\caption{\emcpt{Test: \percent{20} }}
\end{figure}
\end{document}