任务包中的扩展问题

任务包中的扩展问题

我正在尝试从enumitem列表切换到tasks列表,但以下在普通enumerate环境中有效的操作会在环境中生成“出现问题 - 可能缺少 \item”错误tasks

\documentclass{article}
\usepackage{tasks}
\newcommand{\itemexpansion}{\item test \item test \item test \item test}
\newcommand{\taskexpansion}{\task test \task test \task test \task test}

\begin{document}
% OK
\begin{enumerate}
    \itemexpansion
\end{enumerate}
% Error
\begin{tasks}
    \taskexpansion
\end{tasks}
\end{document}

我可以说这里有一个扩展问题,但我的理解能力仅限于此。它似乎与手册中警告的情况不符。有没有一种解决方法可以让我将宏的结果(其内容在其他地方收集)转储到环境中tasks

答案1

tasks需要明确地看到\task

您可以添加以下“命令”形式tasks

\documentclass{article}
\usepackage{tasks}

\ExplSyntaxOn
\NewDocumentCommand{\dotasks}{O{}d()m}
 {
  \hagen_tasks:Vnn { #3 } { #1 } { #2 }
 }
\cs_new_protected:Nn \hagen_tasks:nnn
 {
  \tl_if_novalue:nTF { #3 }
   {
    \begin{tasks}[#2]#1\end{tasks}
   }
   {
    \begin{tasks}[#2](#3)#1\end{tasks}
   }
 }
\cs_generate_variant:Nn \hagen_tasks:nnn { V }
\ExplSyntaxOff


\newcommand{\itemexpansion}{\item test \item test \item test \item test}
\newcommand{\taskexpansion}{\task test \task test \task test \task test}

\begin{document}

\begin{enumerate}
    \itemexpansion
\end{enumerate}

\dotasks{\taskexpansion}

\dotasks(2){\taskexpansion}

\dotasks[counter-format=(tsk[r]),label-width=4ex](2){\taskexpansion}

\end{document}

在此处输入图片描述

答案2

我创建了一个Tasks调用的新环境tasks,同时扩展第一个参数(在本例中为\taskexpansion)。

\documentclass{article}
\usepackage{tasks,environ}
\newcommand{\itemexpansion}{\item test \item test \item test \item test}
\newcommand{\taskexpansion}{\task test \task test \task test \task test}
\NewEnviron{Tasks}{%
  \def\tmp{\begin{tasks}}%
  \expandafter\expandafter\expandafter\tmp\BODY%
  \end{tasks}%
}
\begin{document}
% OK
\begin{enumerate}
    \itemexpansion
\end{enumerate}
% No longer Error
\begin{Tasks}
    \taskexpansion
\end{Tasks}
\end{document}

在此处输入图片描述

相关内容