我正在使用 soul 包来突出显示文本片段,使用 \hl 命令。但是,如果 \hl 命令中包含命令,则此包会出现问题。通常可以通过将命令放在 \mbox{} 中来解决这些问题,但问题是,如果我们想要保护的是 \cite 命令,那么里面的文本在需要时无法拆分成多行,这是一个问题。
我的最小工作示例失败了:
\documentclass[preprint,12pt,authoryear]{elsarticle}
\usepackage{color,soul}
\begin{document}
\hl{A statement \citep{ref1,ref2,ref3,ref4,ref5,ref6}}.
\bibliographystyle{elsarticle-harv}
\bibliography{references.bib}
\end{document}
可以通过将 \citep{...} 替换为 \mbox{\citep{...}} 来部分解决此问题:
\documentclass[preprint,12pt,authoryear]{elsarticle}
\usepackage{color,soul}
\begin{document}
\hl{A statement \mbox{\citep{ref1,ref2,ref3,ref4,ref5,ref6}}}.
\bibliographystyle{elsarticle-harv}
\bibliography{references.bib}
\end{document}
但在那种情况下,引用文本是不可分解的,因此我得到的文本超出了边距。
我尝试的另一种方法是将 \citep 命令放在 {...} 内:
\documentclass[preprint,12pt,authoryear]{elsarticle}
\usepackage{color,soul}
\begin{document}
\hl{A statement {{\citep{ref1,ref2,ref3,ref4,ref5,ref6}}}.
\bibliographystyle{elsarticle-harv}
\bibliography{references.bib}
\end{document}
最后一种方法导致错误“Package soul 错误:重建失败”。
有什么办法可以解决这个问题吗?我真的迷路了……
答案1
尝试这个:
\documentclass[preprint,12pt,authoryear]{elsarticle}
\usepackage[many]{tcolorbox}
\newtcolorbox{mybox}[1][]{%
#1}
\begin{document}
\begin{mybox}[colback=yellow, halign =left]
A statement \citep{ref1,ref2,ref3,ref4,ref5,ref6}.
\bibliographystyle{elsarticle-harv}
\bibliography{references.bib}
\end{mybox}
\end{document}