Las opciones no funcionan después de algunas otras opciones en tcolorbox

Las opciones no funcionan después de algunas otras opciones en tcolorbox

Quiero escribir algo por tcolorbox. De forma predeterminada, el cuadro no debe tener color de fondo (según la opción blank). Luego, en Exp 2, se necesita un cuadro con color de fondo rojo, pero la opción colback=redno funciona. ¿Esta última opción no tiene prioridad sobre la primera?

¿Por qué? ¿Y cómo hacerlo funcionar?

\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}

Respuesta1

La colbackclave solo define un color, pero como cuando blankdas la instrucción de no dibujar un fondo, el color no se usa. En su lugar debes cambiar 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}

ingrese la descripción de la imagen aquí

Respuesta2

En el doc de tbcolorbox

ingrese la descripción de la imagen aquí

Con espacio en blanco opcional funciona

\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}

Respuesta3

Creo que es mejor definir dos cuadros diferentes, uno blanky no blank, pero si insistes en testel comando, puedes definir dos estilos diferentes y usar el conveniente en cualquier caso.

\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}

ingrese la descripción de la imagen aquí

información relacionada