Определение среды, которая оставляет окружающую среду

Определение среды, которая оставляет окружающую среду

Я хотел бы определить среду следующим образом:

\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 and \endantiitemizeвместо \begin{antiitemize}and \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}

введите описание изображения здесь

Посмотреть результатыздесь.

Связанный контент