以下 MWE
\documentclass[10pt,a4paper]{amsbook}
\usepackage{amsthm}
\usepackage{parskip}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\newtheoremstyle{pcap} % name
{\topsep} % Space above
{\topsep} % Space below
{\upshape} % Body font
{} % Indent amount
{\scshape} % Theorem head font
{.} % Punctuation after theorem head
{.2em} % Space after theorem head
{} % Theorem head spec (can be left empty, meaning ‘normal’)
\theoremstyle{pcap}
\newtheorem{definition}{Definition}[chapter]
\newtheorem{thm}[definition]{Theorem}
\newtheorem{lemmaen}[definition]{Lemma}
\newtheorem{corollary}[definition]{Corollary}
\newtheorem{proposition}[definition]{Proposition}
\begin{document}
\chapter{Appendix}
foo
bar
\begin{proposition}foo
\end{proposition}
bar
\begin{definition}foo
\end{definition}
\begin{proof}bar
\end{proof}
foo
\begin{definition}bar
\end{definition}
\end{document}
在定理和定义之前不产生垂直间距。为什么会发生这种情况?如果使用 \theoremstyle{plain},间距就没问题(除了上下不完全相同)。我怎样才能使这种新样式起作用?
答案1
该parskip
包裹设置\topsep
为零,因此您可以得到您所要求的东西。;-)
图片中的输出是使用 生成的\theoremstyle{pcap}
,而不是使用\theoremstyle{plain}
。
也许你想要这样的东西:
\documentclass[10pt,a4paper]{amsbook}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{amsthm}
\usepackage{parskip}
\newtheoremstyle{pcap} % name
{\glueexpr\parskip*2\relax} % Space above
{\parskip} % Space below
{\upshape} % Body font
{} % Indent amount
{\scshape} % Theorem head font
{.} % Punctuation after theorem head
{.2em} % Space after theorem head
{} % Theorem head spec (can be left empty, meaning ‘normal’)
\theoremstyle{pcap}
\newtheorem{definition}{Definition}[chapter]
\newtheorem{thm}[definition]{Theorem}
\newtheorem{lemmaen}[definition]{Lemma}
\newtheorem{corollary}[definition]{Corollary}
\newtheorem{proposition}[definition]{Proposition}
\begin{document}
\chapter{Appendix}
foo
bar
\begin{proposition}foo
\end{proposition}
bar
\begin{definition}foo
\end{definition}
\begin{proof}bar
\end{proof}
foo
\begin{definition}bar
\end{definition}
\end{document}
然而,我的建议是放弃parskip
这项业务。在我看来,你只会在页面上看到丑陋的白色条纹,对读者没有任何好处。