상위 환경 정의에서 중첩 환경의 콘텐츠에 어떻게 액세스할 수 있나요?

상위 환경 정의에서 중첩 환경의 콘텐츠에 어떻게 액세스할 수 있나요?

다음과 같이 세 가지 하위 환경을 포함하는 환경을 갖고 싶습니다.

\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\InnerCBodyOuter\end{Outer}

관련 정보