定義一個離開周遭環境的環境

定義一個離開周遭環境的環境

我想定義一個這樣的環境:

\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}

在此輸入影像描述

查看結果這裡

相關內容