Tive ajuda para fazer uma macro para processar uma lista de argumentos separados por ;
em um itemize
ambiente. Para conseguir isso, xparse
foi 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 itemize
lista 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 longtable
ambiente 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
é \someStuff
que 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}
Vocêestão decidindo quando expandir o argumento ou não, com a variante *.