我想使用该enumitem
包定义一个自定义enumerate
列表,以便标签占据其自己的行。例如:
\documentclass{article}
\usepackage[shortlabels]{enumitem}
\setlength{\parindent}{0pt}
\setlength{\parskip}{1ex}
\begin{document}
\begin{center}
{\Large\sc Assignment 1}\\[2ex]
\end{center}
\begin{enumerate}[label={\large\bf Problem \arabic*.},wide]
\item
\begin{enumerate}[(a)]
\item First question.
\item Second question.
\end{enumerate}
\item
\begin{enumerate}[(a)]
\item First question.
\item Second question.
\end{enumerate}
\end{enumerate}
\end{document}
我希望标签(问题 1、问题 2)出现在它们自己的行上,即在标签后强制换行。
根据这个帖子放在\mbox{}\\
之后是\item
可行的,但我认为可以使用 的功能来避免这种情况enumitem
。
答案1
我在文档中没有找到类似的东西enumitem
,并且我还建议使用定理来回答 daleif 的问题。
但是我能够通过\item
在第一级 enumerate
环境之前重新定义并在环境之后将其重新定义回其原始定义来回答您的问题。它也适用于简单的~
,您不需要\mbox{}
(也许\mbox{}
有一些优势?)。
我知道这个解决方案有点肮脏,但它可以达到预期的结果。请记住,它会影响全部第一级枚举!或者,您可以创建一个新列表(参见enumitem
文档)。
\documentclass{article}
\usepackage[shortlabels]{enumitem}
\setlength{\parindent}{0pt}
\setlength{\parskip}{1ex}
\let\itemorig\item % Create a copy of the original \item
\setlist[enumerate, 1]{%
before=\renewcommand{\item}{\itemorig~}, % Append '~' to \item
after=\renewcommand{\item}{\itemorig} % Restore original \item
}
\begin{document}
\begin{center}
{\Large\sc Assignment 1}\\[2ex]
\end{center}
\begin{enumerate}[label={\large\bf Problem \arabic*.},wide]
\item
\begin{enumerate}[(a)]
\item First question.
\item Second question.
\end{enumerate}
\item
\begin{enumerate}[(a)]
\item First question.
\item Second question.
\end{enumerate}
\end{enumerate}
\end{document}
答案2
我认为最好不要列出Problem ...
清单,而是列出定理。这样你就不必添加那些“空”项了。
我们还可以使用ntheorem
列表配置构建到周围环境中:
\documentclass[a4paper]{memoir}
\usepackage{enumitem}
\usepackage{ntheorem}
\theoremstyle{break}
\theorembodyfont{\normalfont}
\theoremseparator{.}
\theoremprework{
\setlist*[enumerate]{label=(\alph*)}
}
\newtheorem{problem}{Problem}
\begin{document}
\begin{problem}
\begin{enumerate}
\item First question.
\item Second question.
\end{enumerate}
\end{problem}
\begin{problem}
\begin{enumerate}
\item First question.
\item Second question.
\end{enumerate}
\end{problem}
\end{document}
答案3
这是一个使用enumitem
和 的解决方案etoolbox
。我还使用包将居中的“作业”(手动编号)更改为sections
自动编号且可引用的titlesec
。
\documentclass{article}
\usepackage[shortlabels]{enumitem}
\setlength{\parindent}{0pt}
\setlength{\parskip}{1ex}
\usepackage{etoolbox}
\newenvironment{problems}{%
\apptocmd{\item}{\mbox{}}{}{}
\setlist[enumerate, 2]{wide}
%\vspace{0.5\baselineskip}
\AtEndEnvironment{enumerate}{\vskip 1\baselineskip}
\begin{enumerate}[label={\large\bf Problem \arabic*.},wide]}%
{\end{enumerate}}
\usepackage[explicit]{titlesec}
\titleformat{\section}[block]{\filcenter\Large\scshape}{Assignment~\thesection}{0em}{\ifstrempty{#1}{}{: #1}}
\titlespacing{\section}{0pt}{2\baselineskip}{2.5\baselineskip}%{}
\begin{document}
\section{}
\begin{problems}
\item
\begin{enumerate}
\item First question.
\item Second question.
\end{enumerate}
\item
\begin{enumerate}
\item First question.
\item Second question.
\end{enumerate}
\end{problems}
\section{}
\begin{problems}
\item
\begin{enumerate}
\item First question.
\item Second question.
\end{enumerate}
\item
\begin{enumerate}
\item First question.
\item Second question.
\end{enumerate}
\end{problems}
\end{document}
答案4
启动第二级 列表使用一个空项\item[]
([]
非常重要)或定义一个新的列表来执行此操作
\newenvironment{mylist}[1][]{\begin{enumerate}[#1]\item[]}{\end{enumerate}}
因此,列表的正常空间不会改变,并且enumitem
可以使用该包的选项。
\begin{mylist}[<enumitem options>]
\item First question.
\item Second question.
\end{mylist}
我的代码
\documentclass{article}
\usepackage[shortlabels]{enumitem}
\setlength{\parindent}{0pt}
\setlength{\parskip}{1ex}
\begin{document}
\newenvironment{mylist}[1][]{\begin{enumerate}[#1]\item[]}{\end{enumerate}}
\begin{enumerate}[label={\large\bf Problem \arabic*.},wide]
\item
\begin{mylist}[(i)]
\item First question.
\item Second question.
\end{mylist}
\end{enumerate}
\end{document}
生成