我正在写我的学士论文,遇到了一些与 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}