On this question accepted answer How can I stop this useless empty line popping up in the middle of my lists?, it is defined a new enumitem
list environment called enumitemoptional
.
I have been using it so far and no problems, except, when I tried to call \setlist*[enumerateoptional]{nosep}
, after defining the list initially:
test2.tex:24: Illegal parameter number in definition of \enit@c
TeX STOPPED: fatal errors occurred. Check the TeX log file for details
I am calling setlist*
and not setlist
because setlist
erases all previous settings for the list while setlist*
keeps them while adding new ones.
I would like to call setlist*
because I am writing a document class and the enumerateoptional
is defined inside my document class. Then, later, the users can call setlist*
to add custom behaviors as nosep
.
This is a minimal example, where I am calling \setlist*[enumerateoptional]{nosep}
after defining the list, and it is throwing the Illegal parameter number in definition of \enit@c
:
\documentclass[10pt]{article}
\usepackage[shortlabels]{enumitem}
\usepackage{etoolbox}
\makeatletter
\let\user@item\@item
\patchcmd\user@item{\if@noitemarg}{\iftrue}{}{\FAILED}
\enitkv@key{}{formatarg}{\def\enit@format##1{#1}}
% Compatibility with older enumitem.sty:
\@ifundefined{enitkv@enumitem@formatarg}
{\enitkv@key{enumitem}{formatarg}{\def\enit@format##1{#1}}}{}
\newlist{enumerateoptional}{enumerate}{1}
\setlist[enumerateoptional]{%
before=\let\@item\user@item,
formatarg=\textbf{########1~\@itemlabel},
align=left,
leftmargin=*,
}
\makeatother
\usepackage[colorlinks]{hyperref}
\setlist*[enumerateoptional]{nosep}
\begin{document}
\begin{enumerateoptional}[1.]
\item[test\_duplicatedContext] Detecção de contextos duplicados e
emissão de um erro semântico.
\item[test\_duplicatedIncludes] Detecção de inclusões duplicadas e
emissão de um erro semântico.
\item[test\_invalidRegexInput] Detecção de expressões regulares
inválidas e emissão de um erro semântico.
\item[test\_missingIncludeDetection]\label{this} Detecção da inclusão um bloco
inexistente.
\item[test\_duplicatedGlobalNames] Detecção de múltiplas definições
do nome da gramática e
emissão de um erro semântico.
\item[test\_missingScopeGlobalName] Detecção da falta da definição do
nome do escopo global da gramática e emissão de um erro semântico. Ver item~\ref{this}.
\end{enumerateoptional}
\end{document}