MyList
es una lista siempre reanudada enumitem
:
\newlist{MyList}{enumerate}{2}
\setlist[MyList,1]{label={\arabic*.}, resume}% ALWAYS resumed
pero parece romperse si elprimeroel uso de MyList
es desde otro entorno (texto naranja). En MWE, este entorno agrega un color a la lista y luego invoca \begin{MyList}
:
\newenvironment{MyColoredList}[2][]{%
\color{#2}%
\begin{MyList}[#1]
}{%
\end{MyList}%
}%
Pero el mismo entorno utilizadodespuésel uso directo de MyList
parece correcto (texto azul):
Notas:
- El segundo nivel no se reanuda y no hay ningún problema con él. Así eliminé el código que estaba probando esa parte.
- Mi pregunta no es cómo colorear una lista, sino cómo numerarla
resume
cuando se invoca desde un entorno.
Referencias:
Código:
\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}
Respuesta1
Puedes hacerlo de la manera más difícil:
\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}
Respuesta2
La resume
opción es siempre local, es decir, sólo dentro del grupo actual. Usar una lista dentro de algún entorno e intentar reanudar la lista en otro entorno más adelante fallará en el sentido de que se perderá la información.
La solución es resume*
, que debe especificarse localmente; sin embargo, no se puede dar como opción a la \setlist
macro.
\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}
Se puede lograr una mejor manera con la series=
clave:
\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}
Respuesta3
Puedes probar esto
\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}