我正在尝试创建一个新环境所谓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}