Wie kann ich in der Definition der übergeordneten Umgebung auf den Inhalt verschachtelter Umgebungen zugreifen?

Wie kann ich in der Definition der übergeordneten Umgebung auf den Inhalt verschachtelter Umgebungen zugreifen?

Ich hätte gerne eine Umgebung, die drei Unterumgebungen enthält, etwa so:

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

Wie kann ich in der Definition der äußeren Umgebung auf den Inhalt der inneren Umgebungen zugreifen? Ich möchte beispielsweise, dass die äußere Umgebung den Inhalt der inneren Umgebungen in einer bestimmten Reihenfolge und mit eindeutiger Formatierung anzeigt.

Antwort1

Das Folgende ist eine elementare Implementierung dessen, was Sie möglicherweise suchen:

Bildbeschreibung hier eingeben

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

Die Idee besteht darin , den Inhalt von und InnerAUmgebungen in den Makros , bzw. zu erfassen . Anschließend können Sie beim Schließen von (als Teil von ) die Reihenfolge, in der die jeweiligen inneren Umgebungskörper angezeigt werden, formatieren und/oder ändern.InnerBInnerC\InnerABody\InnerBBody\InnerCBodyOuter\end{Outer}

verwandte Informationen