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
괜찮을 것 같습니다(파란색 텍스트):
노트:
- 두 번째 수준은 재개되지 않으며 문제가 없습니다. 따라서 해당 부분을 테스트하던 코드를 제거했습니다.
- 내 질문은 목록에 색상을 지정하는 방법이 아니라
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}