MyList
常に再開されるenumitem
リストです:
\newlist{MyList}{enumerate}{2}
\setlist[MyList,1]{label={\arabic*.}, resume}% ALWAYS resumed
しかし、初めの使用はMyList
別の環境内から行われます (オレンジ色のテキスト)。MWE では、この環境はリストに色を追加し、 を呼び出します\begin{MyList}
。
\newenvironment{MyColoredList}[2][]{%
\color{#2}%
\begin{MyList}[#1]
}{%
\end{MyList}%
}%
しかし、同じ環境が後直接使用してもMyList
問題ないようです(青いテキスト):
ノート:
- 2 番目のレベルは再開されず、問題もありません。そのため、その部分をテストしていたコードを削除しました。
- 私の質問は、リストに色を付ける方法ではなく、
resume
環境内から呼び出されたときにリストに番号を付ける方法です。
参考文献:
コード:
\documentclass{article}
\usepackage{enumitem}
\usepackage{xcolor}
\newlist{MyList}{enumerate}{2}
\setlist[MyList,1]{label={\arabic*.}, resume}% ALWAYS resumed
\setlist[MyList,2]{label={\alph*)}}% NOT resumed
\newenvironment{MyColoredList}[2][]{%
\color{#2}%
\begin{MyList}[#1]
}{%
\end{MyList}%
}%
\begin{document}
\begin{MyColoredList}{red}
\item First Item
\end{MyColoredList}
Some text
\begin{MyColoredList}{orange}% <--- This should be number 2
\item First Item
\end{MyColoredList}
Some text
\begin{MyList}% <--- This should be number 3
\item Second Item
\end{MyList}
Some text
\begin{MyList}
\item Third Item
\end{MyList}
Some text
\begin{MyColoredList}{blue}
\item Fourth Item (this works!!)
\end{MyColoredList}
\end{document}
答え1
難しい方法もあります:
\documentclass{article}
\usepackage{enumitem}
\usepackage{xcolor}
\newlist{MyList}{enumerate}{2}
\setlist[MyList,1]{
label=\arabic*.,
before=\setcounter{MyListi}{\value{MyList}},
after=\setcounter{MyList}{\value{MyListi}},
}% ALWAYS resumed
\setlist[MyList,2]{label=\alph*)}% NOT resumed
\newcounter{MyList}
\newenvironment{MyColoredList}[2][]{%
\color{#2}\begin{MyList}[#1]
}{%
\end{MyList}%
}%
\begin{document}
\begin{MyColoredList}{red}
\item First Item
\end{MyColoredList}
Some text
\begin{MyColoredList}{orange}% <--- This should be number 2
\item First Item
\end{MyColoredList}
Some text
\begin{MyList}% <--- This should be number 3
\item Second Item
\end{MyList}
Some text
\begin{MyList}
\item Third Item
\end{MyList}
Some text
\begin{MyColoredList}{blue}
\item Fourth Item (this works!!)
\end{MyColoredList}
\end{document}
答え2
このresume
オプションは常にローカル、つまり現在のグループ内でのみ有効です。ある環境内でリストを使用し、後で別の環境でリストを再開しようとすると、情報が失われるため失敗します。
解決策は ですがresume*
、これはローカルで指定する必要があり、\setlist
マクロのオプションとして指定することはできません。
\documentclass{article}
\usepackage{enumitem}
\usepackage{xcolor}
\newlist{MyList}{enumerate}{2}
\setlist[MyList,1]{label={\arabic*.},resume}% ALWAYS resumed
\setlist[MyList,2]{label={\alph*)}}% NOT resumed
\newenvironment{MyColoredList}[2][]{%
\color{#2}%
\MyList[#1]
}{%
\endMyList%
}%
\begin{document}
\begin{MyColoredList}{red}
\item First Item
\end{MyColoredList}
Some text
\begin{MyColoredList}[resume*]{orange}% <--- This should be number 2
\item First Item
\end{MyColoredList}
Some text
\begin{MyList}% <--- This should be number 3
\item Second Item
\end{MyList}
Some text
\begin{MyList}
\item Third Item
\end{MyList}
Some text
\begin{MyColoredList}{blue}
\item Fourth Item (this works!!)
\begin{MyList}[resume*]
\item Inner Item
\end{MyList}
\end{MyColoredList}
\begin{MyColoredList}{violet}
\item Fifth Item (this works!!)
\begin{MyList}[resume*]
\item Inner Item
\end{MyList}
\end{MyColoredList}
\end{document}
次のキーを使用すると、より良い方法を実現できますseries=
。
\documentclass{article}
\usepackage{enumitem}
\usepackage{xcolor}
\newlist{MyList}{enumerate}{2}
\setlist[MyList,1]{label={\arabic*.},resume=foo}% ALWAYS resumed
\setlist[MyList,2]{label={\alph*)}}% NOT resumed
\newenvironment{MyColoredList}[2][]{%
\color{#2}%
\begin{MyList}[#1]
}{%
\end{MyList}%
}%
\begin{document}
\begin{MyColoredList}[series=foo]{red}
\item First Item
\end{MyColoredList}
Some text
\begin{MyColoredList}{orange}% <--- This should be number 2
\item First Item
\end{MyColoredList}
Some text
\begin{MyList}% <--- This should be number 3
\item Second Item
\end{MyList}
Some text
\begin{MyList}
\item Third Item
\end{MyList}
Some text
\begin{MyColoredList}{blue}
\item Fourth Item (this works!!)
\begin{MyList}[resume*]
\item Inner Item
\end{MyList}
\end{MyColoredList}
\begin{MyColoredList}{violet}
\item Fifth Item (this works!!)
\begin{MyList}[resume*]
\item Inner Item
\end{MyList}
\end{MyColoredList}
\end{document}
答え3
これを試すことができます
\documentclass{article}
\usepackage{enumitem}
\usepackage{xcolor}
\makeatletter
\newlist{MyList}{enumerate}{2}
\setlist[MyList,1]{label={\arabic*.},
after={\xdef\enit@resume@MyList{\noexpand\c@MyListi=\the\c@MyListi}},resume}% ALWAYS resumed
\setlist[MyList,2]{label={\alph*)}}% NOT resumed
\makeatother
\newenvironment{MyColoredList}[2][]{%
\color{#2}%
\begin{MyList}[#1]
}{%
\end{MyList}%
}%
\begin{document}
\begin{MyColoredList}{red}
\item First Item
\end{MyColoredList}
Some text
\begin{MyColoredList}{orange}% <--- This should be number 2
\item First Item
\end{MyColoredList}
Some text
\begin{MyList}% <--- This should be number 3
\item Second Item
\end{MyList}
Some text
\begin{MyList}
\item Third Item
\end{MyList}
Some text
\begin{MyColoredList}{blue}
\item Fourth Item (this works!!)
\end{MyColoredList}
\end{document}