- 速览:解决前后图片对比
- 拟解决的问题
- 问题描述
- Latex高亮的一般做法
- 段内有命令时候的高亮报错
- 问题原因
- 解决方案——在导言区为 `\cite` 等命令“注册”
- 解决方案简要描述
- 详细解释
- 其他情况
速览:解决前后图片对比
解决前:
解决后:
拟解决的问题
问题描述
Latex高亮的一般做法
给Latex段落高亮的时候,一般会采用下面命令
\usepackage{soul} % 用于文本荧光标记
\sethlcolor{yellow} % 设置高亮颜色为黄色
\hl{In this study} %段落中
当段落中没有其他命令的时候,可以正常高亮
段内有命令时候的高亮报错
可当段落中出现了其他命令,比如参考文献、图、表格,则会出现各种问题,比如对下面代码
\hl{In this study, the analysis of Table \ref{tab2} and Figure \ref{fig:Fig3} demonstrates that the method proposed in \cite{bib35} exhibits significant effectiveness.}
结果图如下,可以看到表格处和图序号没有正常显示,参考文献[35]及之后都没能正常显示
问题原因
使用
soul
宏包的\hl{...}
来高亮一大段文本时,如果中间包含了\cite
、\ref
、\footnote
等命令,往往需要一些额外处理,否则就可能导致高亮“断开”或报错。这是因为soul
默认对这些命令的解析不完整,需要“注册”或手动保护它们。
解决方案——在导言区为 \cite
等命令“注册”
解决方案简要描述
在开头加上
\soulregister\cite7
、\soulregister\ref7
这类命令即可
详细解释
soul
宏包提供了 \soulregister
命令,可以让 soul
正确识别某些命令,从而在高亮时避免被截断或报错。
正确代码如下所示:
\usepackage{soul} % 用于文本荧光标记
\sethlcolor{yellow} % 设置高亮颜色为黄色
\soulregister\cite7
\soulregister\ref7
\soulregister\cite7
的含义是:告诉soul
,\cite
这个命令包含 7 个字符(大多数情况下写 7
就够了),并允许它在高亮时正常显示。
正文和之前一样:
\hl{In this study, the analysis of Table \ref{tab2} and Figure \ref{fig:Fig3} demonstrates that the method proposed in \cite{bib35} exhibits significant effectiveness.}
正确的效果如下:
其他情况
如果段落中还有其他命令,比如\footnote
等,需要一并注册:
\soulregister\footnote7
如果依旧不成功,或者文本特别长且包含复杂命令,或需要跨页,最好使用 \colorbox{yellow}{\begin{minipage}{...} ...\end{minipage}}
方式,避免冲突和断开。