![恢复自定义列表](https://linux22.com/image/384447/%E6%81%A2%E5%A4%8D%E8%87%AA%E5%AE%9A%E4%B9%89%E5%88%97%E8%A1%A8.png)
我使用了一个只包含偶数项的列表来列出我的学生正在做的练习。我遇到了一些问题:
通常,问题以一小部分的说明开始,但如果我用一些文本而不是“项目”来开始列表,我就会收到错误。
如果我打破列表,将文本放在两组问题之间,我无法使用该
[resume]
选项自动恢复。此外,尽管使用了\noindent
我的列表的最后一项没有对齐,但我不知道为什么。
\documentclass[a4paper,11pt]{report} \usepackage{enumitem} \newlist{evenenumerate}{enumerate}{1} \setlist[evenenumerate]{label=Question \theevenenumeratei.} \makeatletter \renewcommand\theevenenumeratei{\@arabic{\numexpr2*% \value{evenenumeratei}}} %I broke this line to make it fit in this text area \makeatother \newcommand{\evenquestions}{\evenenumerate} \newcommand{\question}{\item} \begin{document} \noindent In Exercises 1–6, bla bla. \begin{evenquestions} \question foo 2 \\ \question foo 4 \\ \question foo 6 \end{evenquestions} \noindent In Exercises 8-16, bla bla bla \begin{evenquestions}[resume] \question foo 8 \\ \question foo 10 \\ \question foo 12 \\ \question foo 14 \\ \question foo 16 \end{evenquestions} \end{document}
我想我可以将后续部分的说明放在两个项目之间,但是它给我的对齐效果非常奇怪,而且它与第一部分的对齐不匹配。
答案1
问题的说明需要前列表。
如果您删除
%\newcommand{\evenquestions}{\evenenumerate}
而是evenenumerate
直接使用环境并包含align=left
在内以\setlist
解决对齐问题。
笔记:
- 该
showframe
包用于显示边距。最终文档中不需要它。
代码:
\documentclass[a4paper,11pt]{report}
\usepackage{enumitem}
\usepackage{showframe}
\newlist{evenenumerate}{enumerate}{1}
\setlist[evenenumerate]{label={Question \theevenenumeratei.}, align=left}
\makeatletter
\renewcommand\theevenenumeratei{\@arabic{\numexpr2*\value{evenenumeratei}}}
\makeatother
%\newcommand{\evenquestions}{\evenenumerate}
\newcommand{\question}{\item}
\begin{document}
\noindent
In Exercises 1--6, bla bla.
\begin{evenenumerate}
\question foo 2
\question foo 4
\question foo 6
\end{evenenumerate}
\noindent In Exercises 8--16, bla bla bla
\begin{evenenumerate}[resume]
\question foo 8
\question foo 10
\question foo 12
\question foo 14
\question foo 16
\end{evenenumerate}
\end{document}
答案2
您可以在evenquestions
环境中插入带有适当命令的指令。
\documentclass[a4paper,11pt]{report}
\usepackage{enumitem}
\usepackage{showframe} % just for debugging, remove for production
\makeatletter
\newcommand{\doublearabic}[1]{\expandafter\@doublearabic\csname c@#1\endcsname}
\newcommand{\@doublearabic}[1]{\the\numexpr2*#1\relax}
\AddEnumerateCounter{\doublearabic}{\@doublearabic}{99}
\makeatother
\newlist{evenquestions}{enumerate}{1}
\setlist[evenquestions]{label=Question \doublearabic*,align=left}
\newcommand{\question}{\item}
\newcommand{\instr}{\item[]\hspace*{-\leftmargin}}
\begin{document}
\begin{evenquestions}
\instr In Exercises 1–6, bla bla.
\question foo 2
\question foo 4
\question foo 6
\instr In Exercises 8-16, bla bla bla
\question foo 8
\question foo 10
\question foo 12
\question foo 14
\question foo 16
\end{evenquestions}
We can also resume lists
\begin{evenquestions}[resume]
\question foo 18
\question foo 20
\question foo 22
\end{evenquestions}
\end{document}