在列表中使用基于定理的环境

在列表中使用基于定理的环境

当我在列表项开始后立即包含基于定理的环境时,会插入一个看起来有点奇怪的换行符。

\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}

相关内容