我不知道如何生成列表tasks
包生成列表使用宏。
如果您交换下面 MWE 中已标识的三行,您应该会收到以下错误消息:输入行 25 上的 \begin{tasks} 以 \end{document} 结束
请注意,使用enumitem
和xparse
包(以及花哨的宏定义)似乎对问题没有任何影响(我尝试过不使用这两个包,只使用 LaTeX2e 的\newcommand
)。
任何想法如何解决这个问题(例如制作一个宏生成tasks
)?关于为什么发生这样的事也会受到赞赏!
\documentclass[letterpaper, 12pt]{article}
\usepackage{enumitem}
\usepackage{tasks}
\usepackage{xparse}
\NewDocumentCommand{\macone}{s O{} +g +g}{%
\begin{enumerate}
%\begin{tasks}% %% <-- USE THIS INSTEAD OF LINE ABOVE
}
\NewDocumentCommand{\mactwo}{s O{} +g +g}{%
\item #3
%\task #3% %% <-- USE THIS INSTEAD OF LINE ABOVE
}
\NewDocumentCommand{\macthree}{s O{} +g +g}{%
\end{enumerate}
%\end{tasks}% %% <-- USE THIS INSTEAD OF LINE ABOVE
}
\begin{document}
\macone
\mactwo{Testing 123}
\macthree
\end{document}
答案1
解决方案似乎简单得多:
\documentclass[letterpaper, 12pt]{article}
\usepackage{tasks}
\NewTask{subquestions}[\subquestion]
\begin{document}
\begin{enumerate}
\item First question
\begin{subquestions}
\subquestion First subquestion
\subquestion Second subquestion
\end{subquestions}
\item Second question
\item Third question
\begin{subquestions}[2]
\subquestion First subquestion
\subquestion Second subquestion
\subquestion Third subquestion
\end{subquestions}
\end{enumerate}
\end{document}
答案2
如果有人有更好的方法,请发表您的答案!!!
根据 @Werner 关于
tasks
用于environ
定义tasks
环境的包的评论(我已经验证了这一点,并且它使用 LaTeX3 语法来实现),我想出了以下解决方法。虽然这不是最理想的,但似乎有效:
- 首先通过将代码写入外部文件(在宏或环境中)来构建列表;
- 一旦整个列表结构完成,将文件重新输入到主文档中。
梅威瑟:
\documentclass[letterpaper, 12pt]{article}
\usepackage{enumitem}
\usepackage{newfile}
\usepackage{tasks}
\usepackage{xparse}
\newoutputstream{exfile}
\NewDocumentCommand{\startsubquestions}{s o +g +g}{%
\addtostream{exfile}{\protect\begin{tasks}\IfNoValueF{#2}{(#2)}}%
}
\NewDocumentCommand{\subquestion}{s O{} +g +g}{%
\addtostream{exfile}{\protect\task\space #3}%
}
\NewDocumentCommand{\endsubquestions}{s O{} +g +g}{%
\addtostream{exfile}{\protect\end{tasks}}%
}
\begin{document}
\openoutputfile{\jobname.ex}{exfile}%
\addtostream{exfile}{\protect\begin{enumerate}}
\addtostream{exfile}{\protect\item\space First question}
\startsubquestions
\subquestion{First subquestion}
\subquestion{Second subquestion}
\endsubquestions
\addtostream{exfile}{\protect\item\space Second question}
\addtostream{exfile}{\protect\item\space Third question}
\startsubquestions[2]
\subquestion{First subquestion}
\subquestion{Second subquestion}
\subquestion{Third subquestion}
\endsubquestions
\addtostream{exfile}{\protect\end{enumerate}}
\closeoutputstream{exfile}%
\InputIfFileExists{\jobname.ex}{}{``RECOMPILE (or file simply does not exist)''}%
\end{document}
文件中生成的代码\jobname.ex
是:
\begin{enumerate}
\item First question
\begin{tasks}
\task First subquestion
\task Second subquestion
\end{tasks}
\item Second question
\item Third question
\begin{tasks}(2)
\task First subquestion
\task Second subquestion
\task Third subquestion
\end{tasks}
\end{enumerate}
输出为: