我的 TeX 水平不是最好的,我正在努力提高,但总是举步维艰。
我想更改 tcolorbox 中的文本颜色,并且此颜色格式在分页符后仍然有效。根据我在此处发现的信息,这似乎是不可能的:在易碎的 tcolorbox 中保持文本颜色变化 但似乎在 XeTeX 下使用 fontspec 是可行的。在我最终设法解决这个问题之前,我还有最后一个问题,我已经花了一年多的时间和很多小时咒骂,这似乎不适用于数学模式下的文本。
以下是基于以上链接的 MWE:
\documentclass{article}
\usepackage{mathspec}
\setmainfont{Palatino}
\usepackage{blindtext}
\usepackage[breakable]{tcolorbox}
\begin{document}
\begin{tcolorbox}[breakable]
\blindtext[3]
\addfontfeatures{Color=blue}
\blindtext[3]
\addfontfeatures{Color=red}
\blindtext
\addfontfeatures{Color=brown}
\blindtext
$$F=ma$$
\blindtext[3]
\addfontfeatures{Color=blue}
\blindtext[3]
\addfontfeatures{Color=red}
\blindtext
\addfontfeatures{Color=brown}
\blindtext
\end{tcolorbox}
\end{document}
有可能得到$$F=ma$$
棕色吗?当然,由于与 tcolorbox 不兼容,使用 xcolor 包的任何解决方案都行不通,所以我真的需要一个与字体相关的解决方案。我查看了 mathspec 包,但在文档中找不到解决方案。不过我觉得这应该不难。
提前致谢 !
答案1
由于数学中不太可能出现分页符,因此您可以简单地使用 \color:
\documentclass{article}
\usepackage{mathspec}
\setmainfont{TeX Gyre Pagella}
\usepackage{blindtext}
\usepackage[breakable]{tcolorbox}
\begin{document}
\begin{tcolorbox}[breakable]
\blindtext[3]
\addfontfeatures{Color=blue}
\blindtext[3]
\addfontfeatures{Color=red}
\blindtext
\addfontfeatures{Color=brown}
\blindtext\color{brown}
\[F=ma\]
\blindtext[3]
\addfontfeatures{Color=blue}
\blindtext[3]
\addfontfeatures{Color=red}
\blindtext
\addfontfeatures{Color=brown}
\blindtext
\end{tcolorbox}
\end{document}
使用 lualatex 而不是 xelatex,您可以使用 luacolor 包。这将解决两个问题:
\documentclass{article}
\usepackage{unicode-math}
\setmainfont{TeX Gyre Pagella}
\setmathfont{TeX Gyre Pagella Math}
\usepackage{blindtext}
\usepackage[breakable]{tcolorbox}
\usepackage{luacolor}
\begin{document}
\begin{tcolorbox}[breakable]
\blindtext[3]
\color{blue}
\blindtext[3]
\color{red}
\blindtext
\color{brown}
\blindtext
\[F=ma\]
\blindtext[3]
\color{blue}
\blindtext[3]
\color{red}
\blindtext
\color{brown}
\blindtext
\end{tcolorbox}
\end{document}
答案2
使用 XeLaTeX,您可以修补数学命令(显示和内联)以包含颜色命令。这确保在数学开始的页面上设置颜色。
这不适用于 TeX 命令$
和,$$
而仅适用于 LaTeX 等效命令\(\)
和\[\]
。如果您的数学运算跨越分页符,它也不会起作用(但如果下一页开始新的数学表达式,它当然会起作用)。如果您想将它与其他类似数学的环境(方程、对齐等)一起使用,那么您应该单独修补它们。
请注意,在使用数学之前,应先设置\mycolor
(或使用\boxcolor
),否则会出现错误。还请注意,这在 之外也会生效tcolorbox
,因此您可能应该\def\mycolor{black}
在每个 之后放置tcolorbox
(或使用 自动执行此操作\AtEndEnvironment
)。
您可以使用一个小宏\color
和\addfontfeatures
一个命令进行设置。
梅威瑟:
\documentclass{article}
\usepackage{mathspec}
\setmainfont{Linux Libertine O}
\usepackage{etoolbox}
\pretocmd{\[}{\color{\mycolor}}{}{}
\pretocmd{\(}{\color{\mycolor}}{}{}
\newcommand{\boxcolor}[1]{\def\mycolor{#1}\addfontfeatures{Color=\mycolor}}
\usepackage{blindtext}
\usepackage[breakable]{tcolorbox}
\begin{document}
\begin{tcolorbox}[breakable]
\blindtext[3]
\boxcolor{red}
\blindtext[3]
\boxcolor{orange}
\blindtext[3]
\[F=m\times a\]
\blindtext[3]
\boxcolor{blue}
\blindtext[3]
\(1+1=2\)
\boxcolor{red}
\blindtext
\boxcolor{brown}
\blindtext
\end{tcolorbox}
\end{document}
结果: