下面的代码产生了一个我觉得很奇怪的结果:
\documentclass{article}
\let\origenumerate\enumerate
\renewenvironment{enumerate}{\begin{origenumerate}}{\end{origenumerate}}
\begin{document}
\begin{enumerate}
\item{First}
\begin{enumerate}
\item{First-1}
\item{First-2}
\end{enumerate}
\item{Second}
\end{enumerate}
\end{document}
实际结果:
1. First
(a) First-1
(b) First-2
2. Second
预期结果(代码中没有第三行):
1. First
(a) First-1
(b) First-2
2. Second
为什么会这样?我怎样才能重新定义 \enurate 以使用自定义 \parskip 和 \itemsep 而不会收到这种(糟糕的)笑话?
编辑:我正在使用 pdfTeX 3.1415926-2.3-1.40.12(TeX Live 2011)
答案1
通常在这些情况下,您需要使用环境的较低级别的内部命令,并且还要记住一个\end...
。尝试
\documentclass{article}
\let\origenumerate\enumerate
\let\origendenumerate\endenumerate
\renewenvironment{enumerate}{\origenumerate}{\origendenumerate}
\begin{document}
\begin{enumerate}
\item{First}
\begin{enumerate}
\item{First-1}
\item{First-2}
\end{enumerate}
\item{Second}
\end{enumerate}
\end{document}
答案2
如果你只想改变间距,可以使用类似enumitem
可能比这种低级黑客攻击更安全。