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