可扩展可选参数来枚举环境

可扩展可选参数来枚举环境

下面的 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}

我感谢任何帮助或建议。

PS:我实际上需要将可选参数中的宏扩展为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}

相关内容