
Estoy buscando crear un comando al que pueda dar una cantidad variable de entradas y las colocará en una lista detallada. Algo como
\myitemize{First item}{Second item}{Third item}
produciría
Mientras algo como
\myitemize{First item}{Second item}
produciría
Tampoco soy exigente con el formato. Podría ser algo como
\myitemize[First item, second item, third item]{3}
Simplemente no quiero tener que cambiar manualmente \begin{itemize} \end{itemize}
para incluir otra línea y otra \item
. ¡Gracias!
Respuesta1
El primer enfoque se implementa enMacro que toma un número variable de argumentos y crea una tabla con una fila por argumento.. Asegúrate de leer todos los comentarios allí. En particular, esto es posiblementeno es un gran estilo de marcado.
El segundo enfoque es fácil de implementar expl3
(ni siquiera necesita especificar el número de elementos), por ejemplo así:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\seq_new:N \l__ryanj_tmp_seq
\cs_new_protected:Npn \ryanj_output_items:n #1
{
\seq_set_from_clist:Nn \l__ryanj_tmp_seq {#1}
\seq_use:Nn \l__ryanj_tmp_seq { \item }
}
\NewDocumentCommand \mystrangeitemize { m }
{
\begin{itemize}
\item
\ryanj_output_items:n {#1}
\end{itemize}
}
\ExplSyntaxOff
\begin{document}
\mystrangeitemize{First item, Second item, Third item,
{Item, containing, commas.}}
\end{document}
\mystrangeitemize
También podría implementarse de esta manera:
\NewDocumentCommand \mystrangeitemize { m }
{
\begin{itemize}
\ryanj_output_items:n { {}, #1 }
\end{itemize}
}
(el elemento vacío agregado hace que \item
se genere el primer comando).
En ambos casos, si desea poder declarar elementos que contengan varios párrafos ( \par
los tokens deben ser aceptables en el argumento de \mystrangeitemize
), reemplácelo m
con +m
in \NewDocumentCommand \mystrangeitemize { m }
.
etoolbox
's \docsvlist
también se pueden utilizar para este propósito, y es posible que también veas a alguien publicar una solución basada en listofitems
. :-)