vspace 变得非常大

vspace 变得非常大

我正在写我的学士论文,遇到了一些与 vspace 相关的问题。为了将定义、定理等与文本的其余部分分开,我定义了以下环境:

\newenvironment{myblock}{%
\vspace{.5\baselineskip}
\hrule\nopagebreak\vspace*{.5\baselineskip}\nopagebreak}
{\nopagebreak\vspace*{.5\baselineskip}\nopagebreak\hrule\vspace*{.5\baselineskip}}

以及这个定义的环境:

\newcounter{definition}[section]
\renewcommand*\thedefinition{\thesection.\arabic{definition}}
\newenvironment{definition}{%
\refstepcounter{definition}
\begin{myblock}
\textbf{Definition \thedefinition}
}
{\end{myblock}}

在某些情况下,s 前后的 vspacehrule会变得非常大。由于我不知道这种行为的原因,我无法创建 MWE。但是,我尝试删除命令\nopagebreak并用精确的 pt 数替换 \baselineskip。这些都无法解决问题。

这里有人知道原因吗,或者是否有更好的办法解决这个问题?

编辑:这是一个示例图片,hrule 和线之间的空间应该是.5\baselineskip

示例图片

答案1

我认为您应该使用它mdframed来代替那个手工制作的版本。

\documentclass{article}
\usepackage{amsthm,mdframed}
\usepackage{lipsum}

\mdfdefinestyle{ruledtheorem}{
  topline=true,
  bottomline=true,
  leftline=false,
  rightline=false,
  innertopmargin=0pt,
  innerbottommargin=.5\baselineskip,
  innerleftmargin=0pt,
  innerrightmargin=0pt,
}

\newmdtheoremenv[
  style=ruledtheorem,
]{lemma}{Lemma}

\theoremstyle{definition}
\newmdtheoremenv[
  style=ruledtheorem,
]{definition}[lemma]{Definition}

\begin{document}

\lipsum[2]

\begin{definition}
A pig is called a \emph{flypig} if it can fly.
\end{definition}

\lipsum[3]

\begin{lemma}
Flypigs exist.
\end{lemma}

\lipsum[4]

\end{document}

在此处输入图片描述

相关内容