我想定义这样的环境:
\newenvironment{antiitemize}{\end{itemize}}{\begin{itemize}}
我之所以这样称呼它,antiitemize
是因为我打算在环境中使用它itemize
来暂时脱离列表,例如写一条实际上不属于列表的评论。例如,我想写
\documentclass{article}
\newenvironment{antiitemize}{\end{itemize}}{\begin{itemize}}
\parindent=0pt
\begin{document}
Donec aliquam quam sed enim bibendum, quis ultrices felis porttitor.
\begin{itemize}
\item Lorem ipsum dolor sit amet, consectetur adipiscing elit.
\item Quisque ac porttitor lectus.
\begin{antiitemize}
Mauris a libero laoreet, iaculis arcu et, tincidunt quam.
\end{antiitemize}
\item Suspendisse auctor leo ut felis lobortis commodo vel quis diam.
\end{itemize}
Morbi nec rhoncus ante.
\end{document}
但是,这不管用。LaTeX 似乎不喜欢嵌套不良的环境。我找到了一种解决方法,即定义一对命令来手动启动和结束环境antiitemize
,如下所示。
\documentclass{article}
\def\antiitemize{\end{itemize}}
\def\endantiitemize{\begin{itemize}}
\parindent=0pt
\begin{document}
Donec aliquam quam sed enim bibendum, quis ultrices felis porttitor.
\begin{itemize}
\item Lorem ipsum dolor sit amet, consectetur adipiscing elit.
\item Quisque ac porttitor lectus.
\antiitemize
Mauris a libero laoreet, iaculis arcu et, tincidunt quam.
\endantiitemize
\item Suspendisse auctor leo ut felis lobortis commodo vel quis diam.
\end{itemize}
Morbi nec rhoncus ante.
\end{document}
这是可以容忍的,但我真的很想知道为什么我不能antiitemize
使用来定义我的环境\newenvironment
。
编辑。为了回应我的问题收到的一些评论,以下是有关我提出这个问题的动机的几点说明。
cgnieder 指出
\end{itemize}...\begin{itemize}
会产生与 相同的效果\begin{antiitemize}...\end{antiitemize}
。确实如此,但在我的用例中,这不是一种非常“语义化”的文档标记方式。在我的antiitemize
环境中,应该将这些东西视为“列表中的中断”,而不是“结束一个列表并开始另一个列表”。我在最初的问题中没有把这一点说清楚,但我想我真正想要的答案是:为什么我的
antiitemize
环境被破坏了吗?
答案1
您已经可以很轻松地使用该enumitem
包来实现这一点:它有一个resume*
选项,可以使用相同类型和级别的前一个列表的参数,并且对于enumerate
,从前一个列表离开的位置启动计数器。演示:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amssymb}
\usepackage[svgnames]{xcolor}
\usepackage{enumitem}
\parindent=0pt
\begin{document}
Donec aliquam quam sed enim bibendum, quis ultrices felis porttitor.
\begin{itemize}[label =\color{VioletRed}$ \lozenge $]
\item Lorem ipsum dolor sit amet, consectetur adipiscing elit.
\item Quisque ac porttitor lectus.
\end{itemize}
Mauris a libero laoreet, iaculis arcu et, tincidunt quam.
\begin{itemize}[resume*]
\item Suspendisse auctor leo ut felis lobortis commodo vel quis diam.
\end{itemize}
Morbi nec rhoncus ante.
\begin{itemize}
\item Lorem ipsum dolor sit amet, consectetur adipiscing elit.
\item Quisque ac porttitor lectus.
\end{itemize}
\end{document}
答案2
您可以使用\antiitemize
和\endantiitemize
代替\begin{antiitemize}
和\end{antiitemize}
,并保留环境定义。
\documentclass{article}
\newenvironment{antiitemize}{\end{itemize}}{\begin{itemize}}
\parindent=0pt
\begin{document}
Donec aliquam quam sed enim bibendum, quis ultrices felis porttitor.
\begin{itemize}
\item Lorem ipsum dolor sit amet, consectetur adipiscing elit.
\item Quisque ac porttitor lectus.
\antiitemize
Mauris a libero laoreet, iaculis arcu et, tincidunt quam.
\endantiitemize
\item Suspendisse auctor leo ut felis lobortis commodo vel quis diam.
\end{itemize}
Morbi nec rhoncus ante.
\end{document}
查看结果这里。