La clave tabularx falla dentro de un cuadro declarado newtcolorbox

La clave tabularx falla dentro de un cuadro declarado newtcolorbox

Considere el siguiente código:

\documentclass{article}
\usepackage{tabularx}
\usepackage{colortbl}
\usepackage{array}
\usepackage{tcolorbox}

\newtcolorbox{testbox}{
    width=.5\textwidth
}

\begin{document}
% \begin{testbox}                      %compilation fails when this is uncommented
%    \begin{tcolorbox}[tabularx={l},width=4cm]
%       test1 \\\hline
%       test2
%   \end{tcolorbox}
% \end{testbox}

\begin{tcolorbox}[width=.5\textwidth]
    \begin{tcolorbox}[tabularx={l},width=4cm]
        test1 \\\hline
        test2
    \end{tcolorbox}
\end{tcolorbox}
\end{document}

la testboxvía declarada newtcolorboxes exactamente la misma que la de tcolorbox con la opción width=.5\textwidthagregada manualmente.

Sin embargo, si coloco otro cuadro con opción tabularxen este último, funciona como se esperaba, si coloco el mismo cuadro en mi testboxya no se compila.

¿Alguna pista sobre lo que está pasando aquí?

Respuesta1

El motivo del error en el primer caso es que el truco tabularxobtiene el nombre de entorno incorrecto. Este nombre se almacena mediante la savedelimiteropción y el cuadro exterior lo establece testboxautomáticamente. Para los cuadros internos, casi todas las opciones se restablecen a sus valores predeterminados; savedelimiteres una de las pocas opciones que permanece en el valor actual (documentado para la resetclave).

El ejemplo se repara usando savedelimiterdirectamente:

\documentclass{article}
\usepackage{tabularx}
\usepackage{colortbl}
\usepackage{array}
\usepackage{tcolorbox}

\newtcolorbox{testbox}{
    width=.5\textwidth
}

\begin{document}
 \begin{testbox}                      
    \begin{tcolorbox}[tabularx={l},width=4cm,savedelimiter=tcolorbox]
       test1 \\\hline
       test2
   \end{tcolorbox}
 \end{testbox}

\begin{tcolorbox}[width=.5\textwidth]
    \begin{tcolorbox}[tabularx={l},width=4cm]
        test1 \\\hline
        test2
    \end{tcolorbox}
\end{tcolorbox}
\end{document}

Como escribió David Carlisle: Anidar tabularxes un poco complicado. Aquí, anidamos tabularxdentro de un tcolorboxdentro de un tcolorbox...

información relacionada