¿Cómo puedo acceder al contenido de entornos anidados en la definición del entorno principal?

¿Cómo puedo acceder al contenido de entornos anidados en la definición del entorno principal?

Me gustaría tener un entorno que contenga tres subambientes, así:

\begin{Outer}
    \begin{InnerA}
        Content A.
    \end{InnerA}
    \begin{InnerB}
        Content B.
    \end{InnerB}
    \begin{InnerC}
        Content C.
    \end{InnerC}
\end{Outer}

¿Cómo puedo acceder al contenido de los entornos internos en la definición del entorno externo? Por ejemplo, es posible que desee que el entorno exterior muestre el contenido de los entornos internos en un orden particular, con un formato distinto.

Respuesta1

La siguiente es una implementación elemental de lo que podría estar buscando:

ingrese la descripción de la imagen aquí

\documentclass{article}

\usepackage{xcolor}

\NewDocumentEnvironment{Outer}{ }{%
  % Ensure that inner body macros are defined.
  \def\InnerABody{}%
  \def\InnerBBody{}%
  \def\InnerCBody{}%
}{%
  % Format/re-order inner bodies.
  {\color{red}\bfseries\InnerABody\par}%
  {\color{blue}\large\InnerCBody\par}%
  {\color{green}\ttfamily\InnerBBody\par}%
}

\NewDocumentEnvironment{InnerA}{ b }{}{%
  \gdef\InnerABody{#1}}
\NewDocumentEnvironment{InnerB}{ b }{}{%
  \gdef\InnerBBody{#1}}
\NewDocumentEnvironment{InnerC}{ b }{}{%
  \gdef\InnerCBody{#1}}

\begin{document}

\begin{Outer}
  \begin{InnerA}
    Content A.
  \end{InnerA}
  \begin{InnerB}
    Content B.
  \end{InnerB}
  \begin{InnerC}
    Content C.
  \end{InnerC}
\end{Outer}

\end{document}

La idea es capturar el contenido de InnerAy InnerBlos InnerCentornos en macros \InnerABodyy \InnerBBodyrespectivamente \InnerCBody. Luego, al cerrar Outer(como parte de \end{Outer}), puede formatear y/o cambiar el orden en el que se muestran los respectivos cuerpos del entorno interno.

información relacionada