Expanda a macro na macro xparse \SplitList

Expanda a macro na macro xparse \SplitList

Tive ajuda para fazer uma macro para processar uma lista de argumentos separados por ;em um itemizeambiente. Para conseguir isso, xparsefoi usado.

Quando tentei agrupar as listas de argumentos em uma macro, nada aconteceu. Como posso corrigir isso?

MWE:

\documentclass{article}
\usepackage{xparse}
\newcommand\insertitem[1]{\item #1}

% xparse-command I had help with
\NewDocumentCommand\myList{>{\SplitList{;}}m}
  {\vspace*{-\baselineskip}
    \begin{itemize}
      \ProcessList{#1}{ \insertitem }
    \end{itemize}
  }

\newcommand\someStuff{One; two; three}

\begin{document}

\myList{One; two; three}

Now trying to expand macro content

\myList{\someStuff}

\end{document}

No \myList{One; two; three}resultado fica como desejado, uma itemizelista d. O último exemplo \myList{\someStuff}não está funcionando. Acredito que a solução para o meu problema provavelmente está em algum lugar da questãoPassando vários argumentos de ProcessList (xparse) para uma macro. Resultado a ser usado em tabela, mas atualmente não consigo entender onde ...

EDIT: o uso pretendido para armazenar argumentos em uma macro é basicamente facilitar um pouco minha vida. Fiz um modelo de estrutura para um plano de progressão nas disciplinas que leciono, onde preciso imprimir, por exemplo, as principais competências desejadas que meus alunos deverão ter alcançado durante o período planejado. Como essas competências (e mais) estão envolvidas em um longtableambiente confuso, e estou planejando transformar o modelo em uma aula quando tiver tempo para aprender como fazer exatamente isso, seria muito conveniente para mim ter um bloco no o início do documento parece um pouco com isto:

\maincompetences{Competence one; competence two, etc.}
\learninggoals{Main goal one; main goal two; etc.}

Responder1

O TeX não expande argumentos quando os absorve. Portanto, no segundo caso, o argumento passado \SplitArgumenté \someStuffque não contém ponto e vírgula.

Poderíamos forçar a expansão do primeiro token no argumento, mas isso poderia criar outros problemas.

Uma solução de nível inferior.

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\myList}{sm}
 {
  \begin{itemize}
  \IfBooleanTF{#1}
   {
    \holene_mylist:o { #2 } % expand the argument (once)
   }
   {
    \holene_mylist:n { #2 }
   }
   \end{itemize}
 }

\seq_new:N \l_holene_mylist_input_seq

\cs_new_protected:Npn \holene_mylist:n #1
 {
  \seq_set_split:Nnn \l_holene_mylist_input_seq { ; } { #1 }
  \seq_map_inline:Nn \l_holene_mylist_input_seq
   {
    \item ##1
   }
 }
\cs_generate_variant:Nn \holene_mylist:n { o }

\ExplSyntaxOff

\newcommand\someStuff{One; two; three}

\begin{document}

\myList{One; two; three}

Now trying to expand macro content

\myList*{\someStuff}

\end{document}

insira a descrição da imagem aqui

Vocêestão decidindo quando expandir o argumento ou não, com a variante *.

informação relacionada