定义一个使用 \st 的命令,可用于换行包含 \cite{...} 宏的文本

定义一个使用 \st 的命令,可用于换行包含 \cite{...} 宏的文本

natbibhlstsoul(或soulutf8)一起使用会产生Argument of \@citex has an extra }. [{\st\cite]错误,如前所述其他问题

虽然一种解决方案是将所有\cite命令用一对额外的花括号括起来,或者当此方法失败时\mbox,但这种解决方案可能不是很方便。

特别考虑一下我们有一个文档的情况,出于某种原因,我们被迫使用natbib来引用(就像使用revtex文档类时发生的情况一样)。我们有很多文本,\cite其中包含很多。我们想要定义一个命令\remove来突出显示要删除的文本,例如\newcommand{\remove}[1]{{\color{red}\st{#1}}}

在包含大量 的文本块中使用此命令\cite可能非常烦人,需要用括号或 将它们全部包裹起来\mbox。有没有办法定义一个“更智能”的命令,可以\cite在不修改原始文本的情况下使用它?


链接问题中已经给出了使用\hl和一起使用的问题的 MWE ,但为了完整性,我将再添加一个:\cite

Tex 文件:

\documentclass{article}

\usepackage{soulutf8}
\usepackage{natbib}

% how can I more smartly define this command, to use it to wrap text containing \cite{...}?
\newcommand{\remove}[1]{{\st{#1}}}

\begin{document}

\remove{\cite{foo}}

\bibliography{bibliography}
\end{document}

书目.bib:

@article{foo,
 author = {SomeGuy},
 journal = {Somewhere},
 title = {Foo}
}

答案1

看起来\soutfrom 包是ulem有效的。

相关内容