NewDocumentEnvironment 与枚举之间的冲突

NewDocumentEnvironment 与枚举之间的冲突

我有以下文件:

\documentclass{article}
\usepackage{enumerate}
\usepackage{xparse}

\newcounter{probctr}

\NewDocumentEnvironment{prob}{o}
 {%
  \par
  \addvspace{.15in}%
  \addtocounter{probctr}{1}%
  \noindent\textbf{Problem \theprobctr}%
  \IfNoValueF{#1}{ (#1 points)}%
  \par\nopagebreak\smallskip\noindent\ignorespaces%
 }
 {\addvspace{.15in}}

 \begin{document}
     \begin{prob}[15]
       \begin{enumerate}[(a)]
       \item Item 1
       \item Item 2
     \end{enumerate}

      Consider this ...
   \end{prob}

 \end{document}

如果我注释掉“考虑一下...”这一行,文档就可以正常编译。但是我得到这一行,LaTeX Error: Something's wrong--perhaps a missing \item.有人能告诉我这里出了什么问题吗?

答案1

正如 egreg 在评论中指出的那样:

\addvspace必须以垂直模式发出!

\NewDocumentCommandenumerate等 或之间没有冲突enumitem。错误的解决方法是\addvspace必须跟在显式 之后。对于too\par也会发生错误(请参阅环境)。\newenvironmentprobtrad

我建议使用\refstepcounter{probctr}而不是\addtocounter。前者允许使用\label和引用它。

请注意,我最初的版本是有效的(使用\vskip 0.15in而不是\par\addvspace{0.15in})只是因为\vskip暗示\par)。当时它并不是真正正确的。Joe Cocker 唱道:With a little help from my friends我采用了 的评论(经 许可egreg)来在此处应用它。

\documentclass{article}
\usepackage{enumerate}
\usepackage{etoolbox}
%\usepackage[shortlabels]{enumitem} % as an alternative to enumerate
\usepackage{xparse}

\newcounter{probctr}

\NewDocumentEnvironment{prob}{o}
{%
  \par
  \addvspace{.15in}%
  \refstepcounter{probctr}%
  \noindent\textbf{Problem \theprobctr}%
  \IfNoValueF{#1}{ (#1 points)}%
  \par\nopagebreak\smallskip\noindent\ignorespaces%
}{%
  \par\addvspace{.15in}% egreg's suggestion
}



\newenvironment{probtrad}[1][]{%
 \par
 \addvspace{.15in}%
  \refstepcounter{probctr}%
  \noindent\textbf{Problem \theprobctr}%
  \ifblank{#1}{}{ (#1 points)}%
  \par\nopagebreak\smallskip\noindent\ignorespaces%
}{%
  \par\addvspace{.15in}% egreg's suggestion
}

\begin{document}
 \begin{prob}[15]
   \begin{enumerate}[(a)]
   \item Item 1
   \item Item 2
   \end{enumerate}
   Consider this ...
 \end{prob}

 \begin{probtrad}[20]
   \begin{enumerate}[(a)]
   \item Item 3
   \item Item 4
   \end{enumerate}
   Now consider this ...
 \end{probtrad}


\end{document}

在此处输入图片描述

相关内容