定理环境 (amsthm) 前的间距错误

定理环境 (amsthm) 前的间距错误

我正在使用该amsthm包来获得环境。我还使用它 \usepackage[onehalfspacing]{setspace}来获得 1.5 倍行距。

但是,当我使用定理环境时,之前的间距不正确。它给我一个正常的行距,而不是 1.5 行距。假设我有:

First paragraph

Second paragraph

Third paragraph

\begin{theorem} Bla bla. \end{theorem}

我得到了这样的信息:

第一段

第二段

第三段
定理1。Bla bla。

你知道我该如何改变这种状况吗?

答案1

我实际上通过 ECM 路线找到了我的问题的答案。

导致问题的原因是我使用了带有 parfill 选项的 parskip 包,因此段落不是以空白缩进开头,而是以无缩进开头,但由空白行分隔。ECM:

\documentclass{article}
\usepackage{amsthm}
\newtheorem{theorem}{Theorem} % <-- Note this line?
\usepackage[onehalfspacing]{setspace}
\usepackage[parfill]{parskip}
\begin{document}
First paragraph

Second paragraph

Third paragraph
\begin{theorem}
  1+1=2
\end{theorem}

\end{document}

我发现我不是第一个遇到这个问题的人。解决办法是添加:

\begingroup
    \makeatletter
    \@for\theoremstyle:=definition,remark,plain\do{%
        \expandafter\g@addto@macro\csname th@\theoremstyle\endcsname{%
            \addtolength\thm@preskip\parskip
            }%
        }
\endgroup

在调用 amsthm 包后,在序言中。它将通过在开头添加必要的额外空间来重新定义定理环境(或任何用户定义的环境)。额外的空间不是硬编码的,因此如果您从序言中删除 parskip 包,所有内容都会恢复为默认间距:很好!

希望这可以帮助!

答案2

我使用了以下文件(test.tex)...

\documentclass{article}
\usepackage{amsthm}
\newtheorem{theorem}{Theorem} % <-- Note this line?
\usepackage[onehalfspacing]{setspace}
\begin{document}
First paragraph

Second paragraph

Third paragraph
\begin{theorem}
  1+1=2
\end{theorem}

\end{document}

...然后跑了

latex test.tex

获取文件 test.dvi。所有间距都应位于定理环境的上方和下方

相关内容