tcolorbox 包:如何重用/扩展 tcbhighmath 默认设置

tcolorbox 包:如何重用/扩展 tcbhighmath 默认设置

我正在使用该tcolorbox套餐,并希望定制设置\tcbhighmath。但是,使用\tcbset{highlight math style={...}} 重置所有我不触碰的设置。

我想要类似的东西\tcbset{highlight math style+={...}}

我没找到任何一个

  • 一种方法来做到这一点,或者
  • 作为一种 hack,关于默认值的文档highlight math style(据称没有默认值,但显然\tcbhighmath不同于\tcboxmath),或者
  • 作为一种黑客手段,提供有关如何打印这些默认值的文档。

我唯一可行的办法就是 \tcbhighmath传递我的自定义设置。这样可以防止使用其他tcbhighmath选项。

我确信这些文档存在于 tikz/tcolorbox 手册的某个地方,但它们总共约 1800 页,而且我不是 tikz 专家,所以大约 1 小时后我就宣布失败了。即使

\pgfkeys{/tcb/highlight math style/.show code}

仅显示以下内容,不显示默认颜色:

> \pgfkeysshower=\long macro:
#1\pgfeov ->\pgfkeysalso {highlight math/.style={notitle,nophantom,#1}}.
\pgfkeys@code ...keysshower }\show \pgfkeysshower

\renewcommand请参阅下面的 MWE。移动/\tcbset超出框架时问题不会消失;这只是为了说明。

\documentclass[14pt]{beamer}
\usepackage[theorems]{tcolorbox}
\begin{document}

\newcommand\hl[1]{\tcbhighmath{#1}}
\begin{frame}[fragile]{Test}
  \begin{align*}
    \hl{1}+1={}&2 
  \end{align*}

  % I want to tweak the settings for tcbhighmath.
  % Works:
  \renewcommand\hl[1]{\tcbhighmath[left=0mm,right=0mm,top=0mm,bottom=0mm]{#1}}

  \begin{align*}
    \hl{1}+1={}&2 
  \end{align*}

  % Doesn't work — it also resets the color for tcbhighmath:
  \renewcommand\hl[1]{\tcbhighmath{#1}}
  \tcbset{highlight math style={left=0mm,right=0mm,top=0mm,bottom=0mm}}

  \begin{align*}
    \hl{1}+1={}&2 
  \end{align*}
\end{frame}
\end{document}

渲染输出

答案1

从源代码来看,highlight math style定义为

\tcbset{
  highlight math style/.style={highlight math/.style={notitle,nophantom,#1}}
}

并初始化为

\tcbset{
  highlight math style={colframe=red,colback=yellow!25!white}
}

这相当于

\tcbset{
  highlight math/.style={notitle,nophantom,colframe=red,colback=yellow!25!white}
}

当您使用 时\tcbset{highlight math style={left=0mm,right=0mm,top=0mm,bottom=0mm}},样式highlight math会被重新定义,初始colframe=red,colback=yellow!25!white部分会丢失,因此结果会有所不同。

您可以复制并粘贴colframe=red,colback=yellow!25!whitehighlight math style={...}

\documentclass[14pt]{beamer}
\usepackage[theorems]{tcolorbox}
\begin{document}

\newcommand\hl[1]{\tcbhighmath{#1}}
\begin{frame}[fragile]{Test}
  \begin{align*}
    \hl{1}+1={}&2 
  \end{align*}

  % I want to tweak the settings for tcbhighmath.
  % Works:
  \renewcommand\hl[1]{\tcbhighmath[left=0mm,right=0mm,top=0mm,bottom=0mm]{#1}}

  \begin{align*}
    \hl{1}+1={}&2 
  \end{align*}

  % Works as well:
  \renewcommand\hl[1]{\tcbhighmath{#1}}
  \tcbset{highlight math style={
    colframe=red, colback=yellow!25!white,
    left=0mm, right=0mm, top=0mm, bottom=0mm
  }}

  \begin{align*}
    \hl{1}+1={}&2 
  \end{align*}
\end{frame}
\end{document}

在此处输入图片描述

更新:

您还可以定义一个新的选项

\tcbset{
  highlight math style app/.style={highlight math/.append style={#1}}
}

然后使用

\tcbset{highlight math style app={
  left=0mm, right=0mm, top=0mm, bottom=0mm
}}

相关内容