
我想定義一個這樣的環境:
\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*
選項,可以使用相同類型和級別的前面列表的參數,並且 for 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}
查看結果這裡。