我尝试突出显示大段文本,其中中间有各种其他宏,如\cite
,,,等等。\SI
\ref
如果我做如下的事情:
\hl{the duration is \SI{4}{\second} as shown in Figure~\ref{fig:fig1} \citep{Doe2015}}
文本会在“is”处被截断,有时甚至无法编译。
有没有办法编写这样的宏:
\DeclareRobustCommand{\robusthl}[1]{
\ifnotmacro\hl{#1}\fi}
太感谢了!
答案1
保护 中的违规命令\mbox
。另一方面,应尽可能避免使用下划线。
\documentclass{article}
\usepackage{soul,siunitx,natbib}
\soulregister{\ref}{1}
\soulregister{\citep}{1}
\begin{document}
\hl{the duration is \mbox{\SI{4}{\second}} as shown in
Figure~\mbox{\ref{fig:fig1}} \mbox{\citep{Doe2015}}}
\begin{figure}\caption{X}\label{fig:fig1}\end{figure}
\begin{thebibliography}{1}
\bibitem[Doe(2015)]{Doe2015} A paper
\end{thebibliography}
\end{document}