如何在基于 xcolor 和 tcolorbox 的 \newenvironment 中正确使用 \pgfkeys?

如何在基于 xcolor 和 tcolorbox 的 \newenvironment 中正确使用 \pgfkeys?

我正在尝试创建一个新环境所谓noteframe基于tcolorbox

据推测,noteframe环境应该允许用户使用包中的颜色名称来更改盒子的主题颜色xcolor

但是,使用下面的代码会在图片中产生不良结果红色的

理想的结果被框起来绿色的

我正在尝试使用以下新定义的环境来实现tcolorbox结果绿色的下图中的框,而它产生的结果红色的盒子:

\begin{noteframe}[color = cyan] %%% if I don't write [color = cyan], the default color should be black
content
\end{noteframe}

有人能帮我修改代码以实现所需的结果吗? 我还在图片下方附加了创建环境的代码

提前致谢!!! 图片


我创建环境的方式是:

\usepackage[margin=1in]{geometry}
\usepackage[dvipsnames]{xcolor} % color
\usepackage[most]{tcolorbox} % colored box
\usepackage{tikz}
\linespread{1.15}

\pgfkeys{
    /noteframe/.is family, /noteframe, 
    default/.style = {color = cyan},
    color/.store in = \boxcolor
}

\newenvironment{noteframe}[2]{
    \pgfkeys{/noteframe, default, #1}
    \begin{tcolorbox}[
        enhanced,
        boxrule=0pt,
        frame hidden,
        borderline west={3pt}{0pt}{\boxcolor!85!black},
        colback=\boxcolor!10!white,
        sharp corners
    ]
    #2
    \end{tcolorbox}
}


\begin{document}
\pagestyle{empty}
\begin{noteframe}
    What happened here?
\end{noteframe}

\end{document}

答案1

定义环境的语法是错误的。它需要两个参数:第一个参数是开始代码,第二个参数是结束代码。

\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage[dvipsnames]{xcolor} % color
\usepackage[most]{tcolorbox} % colored box
\usepackage{tikz}
\linespread{1.15}

\pgfkeys{
    /noteframe/.is family, /noteframe, 
    default/.style = {color = cyan},
    color/.store in = \boxcolor
}

\newenvironment{noteframe}[1][]{
    \pgfkeys{/noteframe, default, #1}
    \begin{tcolorbox}[
        enhanced,
        boxrule=0pt,
        frame hidden,
        borderline west={3pt}{0pt}{\boxcolor!85!black},
        colback=\boxcolor!10!white,
        sharp corners
    ]}
{\end{tcolorbox}}


\begin{document}
\pagestyle{empty}
\begin{noteframe}
    What happened here?
\end{noteframe}

\begin{noteframe}[color=red]
    What happened here?
\end{noteframe}

\end{document}

在此处输入图片描述

相关内容