当我在列表项开始后立即包含基于定理的环境时,会插入一个看起来有点奇怪的换行符。
\documentclass{article}
\usepackage{amsthm}
\newtheorem{claim}{Claim}
\begin{document}
Problem:
\begin{enumerate}
\item First part of problem
\item Second part of problem
\end{enumerate}
Solution:
\begin{enumerate}
\item First part of solution
\item
\begin{claim}
Result X holds
\end{claim}
By Result X, the second part follows.
\end{enumerate}
\end{document}
换行符出现在解决方案的第 2 项之后,因为定理环境总是以换行符开头。是否有我应该使用的定理环境替代方案?我正在寻找一种尽可能规范的解决方案,并且不需要手动调整大量设置。
编辑:在更新我的代码片段以使其成为 MWE 时,我意识到省略可以\usepackage{amsthm}
解决问题。但是,在我的实际 LaTeX 文档中,我更愿意继续使用 amsthm。
答案1
这是一个似乎有效的解决方法。只需将其替换\usepackage{amsthm}
为\usepackage[amsthm]{ntheorem}
。这样可以避免额外的换行符。
答案2
description
正如@Andrew所建议的,使用包将声明环境定义为特殊环境要简单得多enumitem
。这是一种方法。
实际上,我还claims
为一系列这样的“声明”定义了一个环境。它有一个计数器,因此可以通过cleveref
包进行智能引用。我根据部分重置此计数器,但是,假设您的问题或解决方案是编号环境(例如定理),您可以轻松地根据claimno
问题或解决方案重置。
\documentclass{article}
\usepackage{xcolor}
\usepackage{parskip}
\usepackage{enumitem}
\usepackage{cleveref}
\newenvironment{claim}{%
\def\claim{\item[\mdseries\em Claim: ]}%
\begin{description}[wide]}%
{\end{description}}
\newenvironment{claims}{%
\newcounter{claimno}[section]\def\claim{\refstepcounter{claimno}\item[\mdseries\em Claim \theclaimno: ]}%
\begin{description}[wide]}%
{\end{description}}
\crefname{claimno}{claim}{claims}
\Crefname{claimno}{Claim}{Claims}
\begin{document}
Problem:
\begin{enumerate}
\item First part of problem\label{part2}
\item Second part of problem
\end{enumerate}
Solution:
\begin{enumerate}
\item First part of solution
\item \begin{claims}
\claim\label{cl1} Result X holds. Some comments some comments some comments some comments some comments some comments some comments some comments some comments
\claim \mbox{}\\ Result Y holds.
\end{claims}
By \cref{cl1}, the second part follows.
\end{enumerate}
\end{document}
答案3
以下是一些调查工作,通过添加\showoutput
到您的序言中揭示:
\documentclass{article}
\usepackage{amsthm}
\newtheorem{claim}{Claim}
\showoutput
\begin{document}
Problem:
\begin{enumerate}
\item First part of problem
\item Second part of problem
\end{enumerate}
Solution:
\begin{enumerate}
\item First part of solution
\item
\begin{claim}
Result X holds
\end{claim}
By Result X, the second part follows.
\end{enumerate}
\end{document}
其中.log
包括以下信息:
...\glue 8.0 plus 2.0 minus 4.0
...\glue -8.0 plus -2.0 minus -4.0
...\glue 4.0 minus 3.0
...\glue(\parskip) 4.0 plus 2.0 minus 1.0
...\glue(\baselineskip) 5.05556
...\hbox(6.94444+0.0)x319.99997, glue set 209.07147fil, shifted 25.00003
....\OT1/cmr/bx/n/10 C
....\OT1/cmr/bx/n/10 l
....\OT1/cmr/bx/n/10 a
....\OT1/cmr/bx/n/10 i
....\OT1/cmr/bx/n/10 m
....\kern 0.0
....\glue 3.83331 plus 1.91666 minus 1.27777
....\OT1/cmr/bx/n/10 1
....\kern 0.0
....\OT1/cmr/bx/n/10 .
上面显示了权利要求1。。紧接着它前面的一些glue
被设置。特别是4.0 minus 3.0
,\parskip
和\baselineskip
。加在一起你可以反转垂直跳跃:
\documentclass{article}
\usepackage{amsthm}
\newtheorem{claim}{Claim}
\begin{document}
Problem:
\begin{enumerate}
\item First part of problem
\item Second part of problem
\end{enumerate}
Solution:
\begin{enumerate}
\item First part of solution
\item \leavevmode\par\vspace*{\dimexpr-4pt-\parskip-\baselineskip}%
\begin{claim}
Result X holds
\end{claim}
By Result X, the second part follows.
\end{enumerate}
\end{document}