환경을 열거하기 위한 확장 가능한 선택적 매개변수

환경을 열거하기 위한 확장 가능한 선택적 매개변수

아래 MWE는 패키지를 사용하여 "어떤 방식으로든" 유연한 위치 를 paralist허용하도록 되어 있습니다 ( 위의 s에서 상속됨).\begin{enumerate}[...]...enumerate

\documentclass[a4paper,10pt]{report}

\usepackage{paralist,xargs}

\newcommand\mwe[2]{[{\ref{#1}.}.#2]}

\begin{document}

\newenvironmentx{enumwe}[2][2=1]{%
  \begin{enumerate}\mwe{#1}{#2}%
  %\expandafter\begin\expandafter{\expandafter enumerate\expandafter}\mwe{#1}{#2}%
  \ignorespaces%
}{\end{enumerate}%
  \ignorespacesafterend%
}

\begin{enumerate}[{A}1]

\item \label{one} {\bfseries~Appendix One}

  \begin{enumwe}{one}
    \item text
  \end{enumwe}

\end{enumerate}

\end{document}

그러나 주석 처리된 행은 잘못된 시도인 것처럼 보이며 MWE의 조판이 잘못되었습니다.

예상되는 확장 결과는 다음과 같습니다.

\begin{enumerate}[{A}1]
\item \label{one} {\bfseries~Appendix One}
  \begin{enumerate}[{A1.}1.]
    \item text
  \end{enumerate}
\end{enumerate}

도움이나 제안에 감사드립니다.

추신: 실제로 선택적 매개변수의 매크로를 enumerate환경(예: ) 으로 확장해야 \begin{enumerate}[\mwe{...}1.]하지만 작동하지 않습니다( ??모든 곳에서 발생함). 이 MWE가 내 접근 방식이지만 이상한 오류가 발생했습니다.

! LaTeX Error: \begin{enumerate} on input line 21 ended by \end{enumerate}.

답변1

\expandafter중괄호 그룹이 아닌 단일 토큰만 단계적으로 수행하므로 가장 간단한 방법은 단계적으로 수행하려는 모든 것을 단일 토큰에 넣는 것입니다.

\documentclass[a4paper,10pt]{report}

\usepackage{paralist,xargs}

\newcommand\mwe[2]{[{\ref{#1}.}.#2]}

\begin{document}

\newenvironmentx{enumwe}[2][2=1]{%
  \def\temp{\begin{enumerate}}%
  \expandafter\temp\mwe{#1}{#2}%
  \ignorespaces%
}{\end{enumerate}%
  \ignorespacesafterend%
}

\begin{enumerate}[{A}1]

\item \label{one} {\bfseries~Appendix One}

  \begin{enumwe}{one}
    \item text
  \end{enumwe}

\end{enumerate}

\end{document}

관련 정보