(一)LaTeX多种颜色标注高亮修改内容

1. 问题

近日,需要在 LaTeX 文档中用多种颜色进行高亮标注。以往一般是生成 PDF 后手动标注,但实在是太低效,而且重新生成 PDF 以后还要重新标注。一番搜索后决定使用 soul 包来解决

2. 解决方法

soul 的主要功能有四:

  • 字间空格 \so
  • 下划线 \ul
  • 删除线 \st
  • 高亮 \hl

本文主要介绍 高亮 的用法

3. 基本操作

导包部分

\usepackage{soul} % 导入 soul 包
\usepackage{color, xcolor} % 颜色包,color 必须导入,xcolor 建议导入
% 若高亮 \hl 的结果变成下划线,一般是因为没导入 color

正文部分

导入包以后,可以通过 \hl{要高亮的文字} 进行高亮标注,使用 \sethlcolor{颜色} 可以设置高亮颜色(注意,是从 set 开始,一直到下一个 set 之前都是同一种颜色)
建议在每个 \hl 前都加上 \sethlcolor,确保颜色设置正确
现在,可以愉快地进行高亮标注啦

举个栗子:

\sethlcolor{yellow}\hl{这里的内容会被高亮为黄色\cite{xxx}}
\sethlcolor{pink}\hl{这里的内容会被高亮为粉色}
\hl{这里的内容会被高亮为粉色} % 没有设置颜色的话,沿用上一次的设置
\sethlcolor{yellow}\hl{这里的内容会被高亮为黄色}

4. 可能存在的问题及解决方法(重要!!!)

当高亮中存在 \ref{} \cite{} 等引用的情况下会报错,需要在文档头部加入 \soulregister{命令}{参数个数} 语句,使这些命令被 soul 识别

\soulregister{\cite}7 % 注册\cite命令
\soulregister{\citep}7 % 注册\citep命令
\soulregister{\citet}7 % 注册\citet命令
\soulregister{\ref}7 % 注册\ref命令
\soulregister{\pageref}7 % 注册\pageref命令


不过我也不知道为啥参数个数是 7(欢迎在评论区补充)
如果在章节标题等位置插入高亮,直接用 \hl 一般会报错,因此使用

\sethlcolor{yellow}
\section{\texorpdfstring{\hl{xxx}}{xxx}}

版权声明:本文为CSDN博主「强行中文名」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44926567/article/details/108440519

5、不能自动换行

这个问题的英文版在stackexchange上面:

里面提到了dpctex中的一个包叫cjkhl,可以通过github下载包的源文件和example,如果访问比较慢的话,这里提供一个国内下载入口。(提供的example可能无法编译,可以用下面的例子试一下,这里主要目的是下载cjkhl.sty文件)

下载解压之后,将cjkhl.sty文件复制为到自己latex项目文件夹下,然后在主文档\begin{document}前加上代码

\usepackage{cjkhl}
\usepackage{color}
\definecolor{lightblue}{rgb}{.8,.8,1}

然后在正文中通过\cjkhl{ColorName}{高亮文本}设置高亮即可

\cjkhl{yellow}{需要加高亮的文字,支持自动换行。}
\cjkhl{lightblue}{自定义颜色的高亮,需要用用definecolor命令定义。}

下面给一个完整的tex例子

\documentclass[UTF8]{ctexart}

% 关键代码
\usepackage{cjkhl}
\usepackage{color}
\definecolor{lightblue}{rgb}{.8,.8,1}


\begin{document}

\cjkhl{yellow}{其实他也不是随机生成段落,而是从公元前45年的古典拉丁文学著作中截取150个段落中挑选段落。因为这部著作的第一段的前两个词为:Lorem ipsum,因此称为 lipsum。}
\cjkhl{lightblue}{其实他也不是随机生成段落,而是从公元前45年的古典拉丁文学著作中截取150个段落中挑选段落。因为这部著作的第一段的前两个词为:Lorem ipsum,因此称为 lipsum。}

\end{document}

将上面代码保存成.tex文件,然后和前面下载的的ckjhl.sty文件放到同一个文件夹,编译效果如下

 上述方法不支持数学公式

posted @ 2023-10-10 21:13  jasonzhangxianrong  阅读(2142)  评论(0编辑  收藏  举报