親環境の定義でネストされた環境の内容にアクセスするにはどうすればよいですか?

親環境の定義でネストされた環境の内容にアクセスするにはどうすればよいですか?

次のように、3 つのサブ環境を含む環境を作成したいと思います。

\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、 、InnerBInnerC環境の内容をそれぞれマクロ\InnerABody\InnerBBody、に取り込むことです\InnerCBody。次に、 を閉じるときにOuter( の一部として\end{Outer})、それぞれの内部環境本体の表示順序をフォーマットしたり変更したりできます。

関連情報