Развернуть макрос в макрос xparse \SplitList

Развернуть макрос в макрос xparse \SplitList

Мне помогли сделать макрос для обработки списка аргументов, разделенных на ;в itemizeокружении. Для достижения этого xparseбыл использован.

Когда я попытался обернуть списки аргументов в макрос, ничего не произошло. Как это исправить?

МВЭ:

\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}

В \myList{One; two; three}результате получается желаемый itemizeсписок и d. Последний пример \myList{\someStuff}не работает. Я считаю, что решение моей проблемы, вероятно, кроется где-то в вопросеПередача нескольких аргументов из ProcessList (xparse) в макрос. Результат для использования в табличном виде, но я пока не могу понять где...

EDIT: предполагаемое использование для хранения аргументов в макросе в основном для того, чтобы немного облегчить мне жизнь. Я сделал шаблонную структуру для плана прогресса по предметам, которые я преподаю, где мне нужно распечатать, например, желаемые основные компетенции, которые мои студенты должны были достичь в течение запланированного периода. Поскольку эти компетенции (и многое другое) упакованы в беспорядочную longtableсреду, и я планирую сделать шаблон в классе, когда у меня будет время научиться, как это делать, для меня было бы очень удобно иметь блок в начале документа, который выглядит примерно так:

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

решение1

TeX не расширяет аргументы, когда поглощает их. Так что во втором случае передается аргумент, \SplitArgumentкоторый \someStuffне содержит точек с запятой.

Можно было бы принудительно расширить первый токен в аргументе, но это может создать другие проблемы.

Решение более низкого уровня.

\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}

введите описание изображения здесь

Тырешают, расширять аргумент или нет, с помощью *-варианта.

Связанный контент