这个问题是关于如何摆脱定理中的空白,以定理标题和第一项之间的列表开头:
\documentclass{article}
\usepackage{amsthm}
\usepackage{enumitem}
\theoremstyle{plain}
\newtheorem{theorem}{Theorem}
\begin{document}
\begin{theorem}
\begin{enumerate}
\item First item.
\item Second item.
\item Third item.
\end{enumerate}
\end{theorem}
\end{document}
该行为在文档中描述amsthm
:
最终的输出看起来符合我的要求(这里我添加了一些其他的自定义设置来产生接近我想要在实际文档中使用的输出):
\documentclass{article}
\usepackage{amsthm}
\usepackage{enumitem}
\theoremstyle{plain}
\newtheorem{theorem}{Theorem}
\newcommand{\firstitem}{\hangindent\leftmargini
\textup{(\romannumeral1)}\hspace{\labelsep}\ignorespaces}
\setlist[enumerate]{label=\textup{(\roman{*})},itemsep=0pt,topsep=\smallskipamount}
\begin{document}
\begin{theorem}
\firstitem First item with more than one line. This is some blindtext to include a line break.
\begin{enumerate}
\setcounter{enumi}{1}
\item Second item.
\item Third item.
\end{enumerate}
\end{theorem}
\end{document}
然而,我并不认为这种方法可以接受,原因如下:
- 手动输入项目和设置计数器会破坏我的工作流程。
- 它不能轻松地实现列表的全局自定义,例如从阿拉伯数字更改为罗马数字,或更改
itemsep
。 - 未经进一步的工作,它不允许将
\label
第一个列表项按顺序排列\ref
在文本中。
那么,有没有什么解决方案可以获得理想的格式,而且没有刚才描述的任何负面影响呢?
答案1
只需使用键wide=0pt
。我添加了一些其他格式,特别是,我认为枚举标签应该是向上的,并且项目之间的垂直跳跃应该更小 - 但这只是我的观点。
\documentclass{article}
\usepackage{amsthm}
\usepackage{enumitem}
\theoremstyle{plain}
\newtheorem{theorem}{Theorem}
\newlist{thmenumerate}{enumerate}{1}
\setlist[thmenumerate, 1]{label=(\roman*), itemsep=0pt, widest=(iii), font=\upshape}
\begin{document}
\begin{theorem}
\begin{thmenumerate}[wide=-0.5pt, leftmargin=*, labelsep=0em]
\item \mbox{}\hspace*{-1em}First item with more than one line. This is some blindtext to include a line break.
\end{thmenumerate}
\begin{thmenumerate}[resume, topsep = 0pt, align = right]
\item Second item. Second item. Second item. Second item. Second item. Second item. Second item. Second item.
\item Third item.
\end{thmenumerate}
\end{theorem}
\end{document}
另一个满足您要求的代码:
我在序言中定义了一个列表,并且在第一个具有不同格式的项目后thmenumerate
使用键:resume
\documentclass{article}
\usepackage{amsthm}
\usepackage{enumitem}
\theoremstyle{plain}
\newtheorem{theorem}{Theorem}
\newlist{thmenumerate}{enumerate}{1}
\setlist[thmenumerate, 1]{label = (\roman*), itemsep = 0pt, font=\upshape}
\begin{document}
\begin{theorem}
\begin{thmenumerate}[wide=0pt, leftmargin=*, widest=(iii), labelsep=-0.5em]
\item First item with more than one line. This is some blindtext to include a line break.
\end{thmenumerate}
\begin{thmenumerate}[resume*, topsep = 0pt ]
\item Second item. Second item. Second item. Second item. Second item. Second item. Second item. Second item.
\item Third item.
\end{thmenumerate}
\end{theorem}
\end{document}