scrlayer-notecolumn (XeLaTeX) 中的彩色文本?

scrlayer-notecolumn (XeLaTeX) 中的彩色文本?

我正在尝试使用KOMA 脚本注释列使用 XeLaTeX。我想使用软件包让笔记更美观彩色盒子。KOMA-script 手册中提到,\color{}命令不适用于 XeLaTeX (+ scrlayer-notecolumn):

由于该软件包仅作为概念验证而设计,并且 XETEX 不支持多种颜色堆栈,因此 XETEX 颜色切换仅限于字体元素的属性notecolumn.note 列名称,这一限制消除了实施自定义色彩管理所需的时间和精力。

以下代码将编译:

%! TEX program = xelatex

\documentclass[oneside, titlepage = false, fontsize = 12pt]{scrbook}

\usepackage{scrlayer-scrpage}
\usepackage{scrlayer-notecolumn}

\usepackage{fontspec,geometry}

\setmainfont{cmun}[
    Extension=.otf,
    UprightFont=*rm,
    ItalicFont=*ti,
    BoldFont=*bx,
    BoldItalicFont=*bi,
]

\usepackage[most]{tcolorbox}

\newtcbtheorem[]{memoanmich}{Memo an mich selbst}{colback=black!15,colframe=black!80,fonttitle=\bfseries,left=0mm,right=0mm}{memoanmich}

\begin{document}

\newgeometry{left=1.8cm, right=5.6cm, top = 2cm, bottom = 3cm, marginpar=5cm, footskip = 1cm}

\makenote*{\begin{small}\begin{memoanmich*}{}{}Some maths: $ \sum_{n=1}^{\infty}1/n^2$ \end{memoanmich*}\end{small}}

test

\end{document}

但编译器会报错,并抛出以下警告4次:

软件包 scrlayer-notecolumn 警告:不支持更改颜色!您使用的 TeX 引擎似乎不支持切换颜色堆栈(如 pdfTeX 或 luaTeX 所支持)。因此,不支持在注释列中使用 \color、\textcolor 等。

结果基本还不错:

在此处输入图片描述

除了标题“Memo an mich selbst”应该有更浅的颜色,但tcolorbox无法更改它(因为我使用了XeLaTeX)。我找到了一种解决方法:fontspec命令\addfontfeature{Color=...}

因此,不要:

\makenote*{\begin{small}\begin{memoanmich*}{}{}%
Some maths: $\sum_{n=1}^{\infty}1/n^2$%
\end{memoanmich*}\end{small}}

我用:

\makenote*{\addfontfeature{Color=FFFFFE}\begin{small}\begin{memoanmich*}{}{}%
\addfontfeature{Color=black}Some maths: $\sum_{n=1}^{\infty}1/n^2$%
\end{memoanmich*}\end{small}}

问题:

  1. fontspec命令\addfontfeature{Color=...}解决了我的问题,但由于 ,我仍然收到上述警告tcolorbox。 有什么方法可以正确地做到这一点,即消除警告?

  2. \addfontfeature{Color=...}当我使用“白色”或“FFFFFF”作为参数时为什么不起作用?

  3. \addfontfeature{Color=...}只影响普通文本。有没有什么方法可以给数学文本着色?

  4. 是否会XeLaTeX支持多种颜色堆栈(无论它是什么)?

答案1

  1. 我认为完全停用颜色没有多大意义,因为它们可能会在分页符处失效。您可以按照以下示例重新激活颜色。
\documentclass[oneside, titlepage = false, fontsize = 12pt]{scrbook}

\usepackage{scrlayer-scrpage}
\usepackage{scrlayer-notecolumn}



\usepackage{fontspec,geometry}

\setmainfont{cmun}[
    Extension=.otf,
    UprightFont=*rm,
    ItalicFont=*ti,
    BoldFont=*bx,
    BoldItalicFont=*bi,
]

\usepackage[most]{tcolorbox}

 
\newtcbtheorem[]{memoanmich}{Memo an mich selbst}{colback=black!15,colframe=black!80,fonttitle=\bfseries,left=0mm,right=0mm}{memoanmich}

\usepackage{etoolbox}
\makeatletter
\patchcmd\slnc@switchcolorstack{\set@color}{\@dummy@set@color}{}{\fail}
\makeatletter

\begin{document}


\newgeometry{left=1.8cm, right=5.6cm, top = 2cm, bottom = 3cm, marginpar=5cm, footskip = 1cm}

\makenote*{\begin{small}\begin{memoanmich*}{}{}Some maths: $ \sum_{n=1}^{\infty}1/n^2$ \end{memoanmich*}\end{small}}

test

\end{document}
  1. FFFFFF 不起作用是一个错误,该错误已在源代码中得到解决,但修复可能仅适用于 texlive 2021(但 xdvipdfmx 可能已提前更新)。

  2. 颜色堆栈允许跟踪分页符上的颜色。如果在页面末尾“红色”处于活动状态,则必须在 pdf 的下一页开头重新插入“红色”的代码。如果您有多个跨页的文本流,例如正文、拆分的脚注和此处的侧栏,则需要为每个文本流设置一个颜色堆栈来跟踪每种颜色状态。目前 xelatex 中只有一个堆栈,因此只有正文可以跟踪颜色,但有一个开放的功能请求,有些人希望获得更多。

相关内容