如何突出显示包含宏的多行文本?

如何突出显示包含宏的多行文本?

我目前正在校对一份文件,想突出显示一些句子。不幸的是,我还没有找到一个可以同时

  1. 保留换行符
  2. 突出显示由宏生成的文本,尤其是 \cite 和 siunitx 中的宏,例如 \SI

使用 changes 包时,换行符不起作用(changes 在内部使用颜色框)。但是,使用 soul 时,宏不起作用。最后,我想使用 changes 中的突出显示,因为它可以很好地与注释功能结合使用。通过使用

\renewcommand{\colorbox}[2]{\colorlet{tmpcolor}{#1}\sethlcolor{tmpcolor}\hl{#2}}

我可以“修补”高亮命令以使用 soul。要使用 \cite 和 soul,我可以使用 soulregister,如如何使 \hl(突出显示)自动将不兼容的命令放置在 \mbox 中?。但是,这种方法不适用于 \SI。但是,如果 \SI 命令被括号括起来,则可以工作。但这对我来说不是一个选择,因为我不负责编写原始文本。但是,包括序言是可以的。

我如何才能在不更改文本(除了前言和周围的命令)的情况下进行突出显示?理想情况下,我不需要为每个宏包含单独的条目,但这样做对我来说是可以接受的。在某种程度上,粗暴的黑客(例如重新定义 \SI)也可以。

MWE 使用变更

\documentclass[11pt]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage{siunitx}
\usepackage{changes}

\begin{document}
After the introduction, \highlight{this part of the sentence is quite long and contains a unit (\SI{5}{\ns}) and a citation~\cite{myref}.} How do I highlight it?
\end{document}

MWE 使用 soul(SI 周围带有括号)

\documentclass[11pt]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage{siunitx}
\usepackage{color}
\usepackage{soul}

\soulregister\cite7
%\soulregister\SI7 %Does not work

\begin{document}
After the introduction, \highlight{this part of the sentence is quite long and contains a unit ({\SI{5}{\ns}}) and a citation~\cite{myref}.} How do I highlight it?
\end{document}

答案1

将宏放在它们自己的组中并\hlsoul包中使用。

\documentclass[11pt]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage{siunitx}
\usepackage{changes}
\usepackage{soul}
\begin{document}
After the introduction, \hl{this part of the sentence is quite 
long and contains a unit ({\SI{5}{\ns}}) and a citation~{\cite{myref}}.} 
How do I highlight it?
\end{document}

在此处输入图片描述

相关内容