Как получить доступ к содержимому вложенных сред в определении родительской среды?

Как получить доступ к содержимому вложенных сред в определении родительской среды?

Мне бы хотелось иметь среду, содержащую три подсреды, например:

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

Как получить доступ к содержимому внутренних сред в определении для внешней среды? Например, я могу захотеть, чтобы внешняя среда отображала содержимое внутренних сред в определенном порядке с различным форматированием.

решение1

Ниже приведена элементарная реализация того, что вам может понадобиться:

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

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

Идея состоит в том, чтобы захватить содержимое InnerA, InnerBи InnerCсред в макросах \InnerABody, \InnerBBodyи \InnerCBody, соответственно. Затем, при закрытии Outer(как части \end{Outer}), вы можете отформатировать и/или изменить порядок, в котором отображаются соответствующие внутренние тела среды.

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