![enumitem 文档](https://linux22.com/image/296264/enumitem%20%E6%96%87%E6%A1%A3.png)
我使用该enumitem
包来控制列表的外观。因为我想保留默认enumerate
列表,所以我定义了一个新列表edulist
并对其进行了配置。
该列表应在环境中使用edulistvar
,这使用户能够使用itemsep
可选参数进行更改。
我希望此列表继续,直到到达文档中的几个点(见\exercise
下面的示例)。重置我想要执行的列表的计数器\restartlist<list-name>}
似乎正是出于这个原因:
enumitem 文档
目前,
\setlist[enumerate]{resume}
您可以通过文档获得连续的编号。添加了一个新命令,用于在文档中间重新启动计数器:
\restartlist{<list-name>}
它完全基于列表名称,而不是列表类型,这意味着
enumerate*
用包选项 inline 定义的与 不一样enumerate
,因为其名称不同。
不幸的是,我无法在接下来的 MWE 中让它发挥作用。
代码
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{enumitem}
\usepackage{xparse}
\DeclareDocumentEnvironment {edulistvar} { O{0pt} } {
\begin{edulist}[itemsep=#1]
}{
\end{edulist}
}
\DeclareDocumentCommand \exercise { } {%
\bigskip
\textsf{\bfseries\Large Exercise}
\medskip
\par
\restartlist{edulist}
}
\newlist{edulist}{enumerate}{1}
\setlist[edulist]{%
label=\alph*),
format=\sffamily,
resume=edulist,
partopsep=0ex,
topsep=0.5\baselineskip,
parsep=\parskip,
}
\begin{document}
\exercise
Bli Bla Blub
\begin{edulist}
\item One
\item Two
\item Three
\end{edulist}
Bli Bla Blub
\begin{edulist}
\item One
\item Two
\item Three
\end{edulist}
\exercise
Bli Bla Blub
\begin{edulistvar}[\baselineskip]
\item One
\item Two
\item Three
\end{edulistvar}
\end{document}
文档
知道如何重置列表的计数器吗?手动重置 ( \setcounter{edulisti}{0}
) 也不起作用。
答案1
我也不确定我是否理解了你的问题,但如果我理解正确的话,修改 MWE 来做你想要做的事情似乎很简单,而不需要最终用户的干预:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{enumitem}
\usepackage{xparse}
\DeclareDocumentEnvironment {edulistvar} { O{0pt} } {
\begin{edulist}[itemsep=#1, resume=edulist]
}{
\end{edulist}
}
\DeclareDocumentCommand \exercise { } {%
\bigskip
\textsf{\bfseries\Large Exercise}
\medskip
\par
\restartlist{edulist}
}
\newlist{edulist}{enumerate}{1}
\setlist[edulist]{%
label=\alph*),
format=\sffamily,
partopsep=0ex,
topsep=0.5\baselineskip,
parsep=\parskip,
resume}
\begin{document}
\exercise
Bli Bla Blub
\begin{edulist}
\item One
\item Two
\item Three
\end{edulist}
Bli Bla Blub
\begin{edulist}
\item One
\item Two
\item Three
\end{edulist}
\exercise
Bli Bla Blub
\begin{edulistvar}[\baselineskip]
\item One
\item Two
\item Three
\end{edulistvar}
\begin{edulistvar}[\baselineskip]
\item One
\item Two
\item Three
\end{edulistvar}
\end{document}
答案2
不确定我是否理解你的问题到底是什么,但series
即使在另一个环境中也可以工作:
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{enumitem}
\begin{document}
\begin{center}
\begin{enumerate}[label=\alph*), series=edu]
\item One
\item Two
\item Three
\end{enumerate}
\end{center}
Bli Bla Blub.
\begin{center}
\begin{enumerate}[resume*=edu]
\item One
\item Two
\item Three
\end{enumerate}
\end{center}
Blibli Blabla Blubblub.
\begin{center}
\begin{enumerate}[resume*=edu, start = 1]
\item One
\item Two
\item Three
\end{enumerate}
\end{center}
\end{document}
答案3
最好的解决方案当然是创建一个命令来插入“练习”,以重置“枚举”列表计数器。必须将“枚举”列表配置为遵循编号。然后是“练习”,它允许您重新开始编号。当然,命令“练习”可以与计数器相关联。
\documentclass{scrartcl}
\usepackage[french]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{enumitem}
\newcommand{\Exercice}{{\noindent\Large\bfseries Exercice : }\par\vspace{0.2cm}\restartlist{enumerate}}
\setlist[enumerate]{label=\alph*),resume}
\begin{document}
\Exercice
\begin{enumerate}
\item One
\item Two
\item Three
\end{enumerate}
Bli Bla Blub.
\begin{enumerate}
\item One
\item Two
\item Three
\end{enumerate}
\Exercice
Blibli Blabla Blubblub
\begin{enumerate}
\item One
\item Two
\item Three
\end{enumerate}
\end{document}
另一个解决方案是使用全局命令。
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{enumitem}
\usepackage{xparse}
\usepackage{etoolbox}
\NewDocumentCommand\currentname{}{}
\NewDocumentEnvironment {edulistvarstart} { O{0pt} } {
\RenewDocumentCommand\currentname{}{enum-\theexercise}
\begin{edulist}[itemsep=#1,series=\currentname]
}{
\end{edulist}
}
\DeclareDocumentEnvironment {edulistvar} { O{0pt} } {
\RenewDocumentCommand\currentname{}{enum-\theexercise}
%don't know why this line is necessary
\begin{edulist}[itemsep=#1, resume=\currentname]
}{
\end{edulist}
}
\newcounter{exercise}
\DeclareDocumentCommand \exercise { } {%
\bigskip
\textsf{\bfseries\Large Exercise}
\medskip
\par
%\restartlist{edulist}
\stepcounter{exercise}
}
\newlist{edulist}{enumerate}{1}
\setlist[edulist]{%
label=\alph*),
format=\sffamily,
partopsep=0ex,
topsep=0.5\baselineskip,
parsep=\parskip,
}
\begin{document}
\exercise
Bli Bla Blub
\begin{edulistvarstart}
\item enum-\theexercise
\item \currentname
\item Three
\end{edulistvarstart}
Bli Bla Blub \currentname
\begin{edulistvar}
\item enum-\theexercise
\item \currentname
\item Three
\end{edulistvar}
\exercise
Bli Bla Blub\currentname
\begin{edulistvarstart}[\baselineskip]
\item enum-\theexercise
\item \currentname
\item Three
\end{edulistvarstart}
qsd qsdqs dqsd qsdqsdqsdd \currentname
\begin{edulistvar}[\baselineskip]
\item enum-\theexercise
\item \currentname
\item Three
\end{edulistvar}
\exercise
Bli Bla Blub\currentname
\begin{edulistvarstart}[\baselineskip]
\item enum-\theexercise
\item \currentname
\item Three
\end{edulistvarstart}
qsd qsd qsdsqq dqsd qds \currentname
\begin{edulistvar}[\baselineskip]
\item enum-\theexercise
\item \currentname
\item Three
\end{edulistvar}
\end{document}