我想做一些看起来应该很简单的事情,但是我已经尝试了两天都没有成功(很多时候都在尝试我在这里找到的方法)。
从概念上讲,我想突出显示任意长的文本区域。这可能包括多个段落、字体更改、表格和分页符;它可能从页面上的任意点开始(因此不一定是整个页面)。突出显示可以采用多种形式,按偏好降序排列:
1. 背景颜色
2. 前景(字体、线条......)颜色
3. 更改栏
我可以使用方法 (3)(= 更改栏)来工作(使用 changebar 包),但我更喜欢 (1) 或 (2),因为它们更引人注目。另外,我正在使用 XeLaTeX,这需要 changebar.sty 的一个特殊混合版本。
我尝试使用以下软件包来执行方法 (1) (= 背景颜色)(如 stackexchange 上的各种帖子所建议的那样):
- soul(错误 = “重建失败”)
- highlight、mdframed、framed、tcolorbox(错误 = “不在外部 par 模式”)
- todonotes(错误 = “段落在 \reserved@a 完成之前结束”)
方法 (2)(前景色)可以解决大部分问题,但不能为表格着色(我必须\color{}
在表格内重复该命令——因为 latex 是从 XML 自动转换的,所以这不容易奏效)。我的最小示例(但没有分页符)如下(适用于 pdfLatex 或 xelatex):
\documentclass{report}
\usepackage[table]{xcolor}
\begin{document}
Some black text
{\color{red}
Some red text
\begin{table}[h]
Text that ought\\
to be red\\
\end{table}
More red text
}
More black text
\end{document}
但这无法改变“表格”中的字体颜色(我知道,这不算什么表格,但足以说明问题)。也就是说,表格中的文字显示为黑色,而不是红色。
就像我说的,这看起来应该很容易。但是。
答案1
如果你真的需要这个你可以这样做
\documentclass{report}
\usepackage[table]{xcolor}
\begin{document}
Some black text
{\color{red}\makeatletter\let\default@color\current@color\makeatother
Some red text
\begin{table}[h]
Text that ought\\
to be red\\
\end{table}
More red text
}
More black text
\end{document}
虽然这在语义上是可疑的,因为table
环境不是主文本流的一部分,并且明确设计为不继承当前设置。作为文本流一部分的表应仅编码为tabular
,而不是包装在 中table
。