
次のような環境を定義したいと思います。
\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
。
編集。私の質問に対して寄せられたコメントに応えて、この質問をした動機についていくつかメモしておきます。
\end{itemize}...\begin{itemize}
cgnieder は、は と同じ効果を持つだろうと指摘しています\begin{antiitemize}...\end{antiitemize}
。これは事実ですが、私の使用例では、ドキュメントをマークアップする方法としてはあまり「セマンティック」ではありません。私のantiitemize
環境では、これは「1 つのリストを終了して別のリストを開始する」というよりも、「リストの中断」として考える必要があります。元の質問ではこれを明確に述べませんでしたが、私が本当に答えてほしいのは次の点だと思います。なぜ私の
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}
結果を見るここ。