Comando detallar con número variable de elementos

Comando detallar con número variable de elementos

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}

\mystrangeitemizeTambié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 \itemse genere el primer comando).

En ambos casos, si desea poder declarar elementos que contengan varios párrafos ( \parlos tokens deben ser aceptables en el argumento de \mystrangeitemize), reemplácelo mcon +min \NewDocumentCommand \mystrangeitemize { m }.

Captura de pantalla

etoolbox's \docsvlisttambién se pueden utilizar para este propósito, y es posible que también veas a alguien publicar una solución basada en listofitems. :-)

información relacionada