在 tcolorbox 中着色数学

在 tcolorbox 中着色数学

我的 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}

结果:

在此处输入图片描述

相关内容