Параметры не работают после некоторых других параметров в tcolorbox

Параметры не работают после некоторых других параметров в tcolorbox

Я хочу что-то набрать с помощью tcolorbox. По умолчанию у блока не должно быть цвета фона (опцией blank). Затем в Exp 2 требуется блок с красным цветом фона, но опция colback=redне работает. Последняя опция не имеет приоритета над первой?

Почему? И как это сделать?

\documentclass{article}
\usepackage{geometry}
\geometry{showframe}
\usepackage[most]{tcolorbox}

\newcommand\test[2][]{
  \begin{tcolorbox}[blank,#1]
    #2
  \end{tcolorbox}
}

\begin{document}
% Exp 1.
\test{no backgroud color as expected}
% Exp 2.
\test[colback=red]{backgroud color of red is wanted, but not work}
\end{document}

решение1

Ключ colbackопределяет только цвет, но так как blankвы даете указание не рисовать фон, цвет не используется. Вместо этого вы должны изменить interior style:

\documentclass{article}
\usepackage{geometry}
\geometry{showframe}
\usepackage[most]{tcolorbox}

\newcommand\test[2][]{
  \begin{tcolorbox}[blank,#1]
    #2
  \end{tcolorbox}
}

\begin{document}
% Exp 1.
\test{no background color as expected}
% Exp 2.
\test[interior style={fill=red}]{background color of red is wanted}
\end{document}

введите описание изображения здесь

решение2

В документе tbcolorbox

введите описание изображения здесь

С дополнительной заглушкой это работает

\documentclass{article}
\usepackage{geometry}
\geometry{showframe}
\usepackage[most]{tcolorbox}
\ExplSyntaxOn
\NewDocumentCommand \test { O{blank} +m}
{
    \begin{tcolorbox}[#1]
        #2
    \end{tcolorbox}
}
\ExplSyntaxOff

\begin{document}
% Exp 1.
\test{no backgroud color as expected}
% Exp 2.
\test[colback=red]{backgroud color of red is wanted, but not work}
\end{document}

решение3

Я думаю, что лучше определить два разных поля, одно blankи то же blank, но если вы настаиваете на testсвоем, вы можете определить два разных стиля и использовать удобный в любом случае.

\documentclass{article}
\usepackage{geometry}
\geometry{showframe}
\usepackage[most]{tcolorbox}

\tcbset{
    blankbox/.style={
        blank, #1},
    redbox/.style={
        colback=red!80, #1}
}

\newcommand\test[2][]{
  \begin{tcolorbox}[#1]
    #2
  \end{tcolorbox}
}

\begin{document}
% Exp 1.
\test[blankbox]{no backgroud color as expected}
% Exp 2.
\test[redbox={colframe=blue}]{backgroud color of red is wanted, but not work}
\end{document}

введите описание изображения здесь

Связанный контент