来自 paralist 包的 compactenum 行为不一致

来自 paralist 包的 compactenum 行为不一致

我设置了一个宏,compactEnumAlphi使用包compactenum中的环境来调用它paralist.sty。我希望它生成如下列表:

a) first
b) second

等等。但是,宏的执行方式取决于它是嵌入在itemize环境中还是enumerate环境。如下例所示,它在后一种情况下按预期工作,但在前一种情况下则不然。在环境内部itemize,添加了一个附加项),产生

 a)) first
 b)) second

有人可以给出建议吗?

\documentclass{amsart}
\usepackage{paralist}
\newenvironment{compactEnumAlphi}{
    \parskip=0pt
    \parindent=0pt
    \begin{compactenum}[$\quad$a) ]
    \renewcommand{\theenumi}{\alph{enumi})}
    }
    {\end{compactenum} 
     {\parskip=12 pt plus 0 pt minus 0 pt}}

\begin{document}
\begin{enumerate}
    \item Hullo world
    \begin{compactEnumAlphi}
        \item two Hullo worlds
    \end{compactEnumAlphi}
\end{enumerate}
\begin{itemize}
    \item Hullo world
    \begin{compactEnumAlphi}
        \item two Hullo worlds
    \end{compactEnumAlphi}
\end{itemize}
\end{document}

答案1

在第一种情况下,该指令\renewcommand{\theenumi}{\alph{enumi})}没有效果,因为compactenum环境是第二级枚举;在第二种情况下,它确实有效,但是paralist功能会对标签机制进行重新定义,而您的重新定义会使编译器感到困惑。

\documentclass{amsart}
\usepackage{paralist}

\newenvironment{compactEnumAlphi}
  {\begin{compactenum}[\quad a) ]}
  {\end{compactenum}}

\begin{document}
\begin{enumerate}
    \item Hullo world
    \begin{compactEnumAlphi}
        \item two Hullo worlds
    \end{compactEnumAlphi}
\end{enumerate}
\begin{itemize}
    \item Hullo world
    \begin{compactEnumAlphi}
        \item two Hullo worlds
    \end{compactEnumAlphi}
\end{itemize}
\end{document}

请注意,重置\parindent基本上没有效果;您的代码

{\end{compactenum} 
  {\parskip=12 pt plus 0 pt minus 0 pt}}

之后什么都不做\end{compactenum}:设置组中的参数是一种不执行任何操作的复杂方法。

如果您已\parskip在外层进行设置(我从不推荐这样做),您可以在环境中重置它compactEnumAlphi。环境结束后,这种重置将被撤消。

\documentclass{amsart}
\usepackage{paralist}

\newenvironment{compactEnumAlphi}
  {%\setlength{\parskip}{0pt plus 0.1pt}% uncomment if you need it
   \begin{compactenum}[\quad a) ]}
  {\end{compactenum}}

\begin{document}
\begin{enumerate}
    \item Hullo world
    \begin{compactEnumAlphi}
        \item two Hullo worlds
    \end{compactEnumAlphi}
\end{enumerate}
\begin{itemize}
    \item Hullo world
    \begin{compactEnumAlphi}
        \item two Hullo worlds
    \end{compactEnumAlphi}
\end{itemize}
\end{document}

在此处输入图片描述

答案2

当您嵌套enumerates 时,第一级采用enumi,第二级使用enumii(您的定义未对其进行修改)。在第二个示例中,您处于枚举的第一级,因此使用的计数器为enumicompactenum环境的可选参数给出指令以打印空格(\quad),然后以字母形式( )获取当前级别的枚举的当前值a,然后打印括号。在第一种情况下,当前枚举的值由计数器给出enumii\theenumii仅打印计数器的值;在第二个示例中,使用的计数器为enumi,修改后的计数器\theenumi将打印计数器的值加上括号。

相关内容