考虑以下 MWE:
\documentclass[11pt]{report}
\usepackage{framed}
\usepackage{pstricks}
\usepackage{color}
\usepackage[framed,thmmarks,thref, hyperref]{ntheorem}
\usepackage{etoolbox}
\definecolor{proofback}{rgb}{0.95,0.95,0.95}
\theoremheaderfont{\sc}
\theorembodyfont{\upshape}
\theoremstyle{nonumberplain}
\theoremsymbol{\raisebox{-5mm}{ \rule{1ex}{1ex} }}
\shadecolor{proofback}
\newshadedtheorem{proof}{Proof}
\begin{document}
\begin{proof}
test test
\end{proof}
some normal text
\end{document}
根据标题,我想删除证明结束后的缩进。作为解决方案,我认为我可以使用类似
\let\oldendproof\endproof
\def\endproof{\oldendproof \leavevmode\vspace{-\baselineskip} \\ \noindent}
添加这两行,实际上会导致
然而,问题在于,如果证明后面直接跟着定理,那么这个解决方案会产生不必要的空间:
\begin{proof}
test test
\end{proof}
\begin{proof}
another test
\end{proof}
而如果没有我的 hack,渲染后的 PDF 看起来就像
我怀疑这是因为我离开了垂直模式,但我对 latex 内部的工作原理知之甚少。有没有什么想法可以在没有这种副作用的情况下删除校样后的缩进?我知道我可以\noindent
在校样结束后简单地添加一个,但我正在寻找一些不强迫我这样做的“自动”和通用解决方案。我正在使用 xelatex 进行编译。
答案1
您可以重新使用标题代码后的抑制功能:
\documentclass[11pt]{report}
\usepackage{framed}
\usepackage{pstricks}
\usepackage{color}
\usepackage[framed,thmmarks,thref, hyperref]{ntheorem}
\usepackage{etoolbox}
\definecolor{proofback}{rgb}{0.95,0.95,0.95}
\theoremheaderfont{\sc}
\theorembodyfont{\upshape}
\theoremstyle{nonumberplain}
\theoremsymbol{\raisebox{-5mm}{ \rule{1ex}{1ex} }}
\shadecolor{proofback}
\newshadedtheorem{proof}{Proof}
\makeatletter
\let\oldendproof\endproof
\def\endproof{\oldendproof\aftergroup\@afterindentfalse\aftergroup\@afterheading}
\makeatother
\begin{document}
\begin{proof}
test test
\end{proof}
some normal text
\begin{proof}
test test
\end{proof}
some normal text
\end{document}
答案2
这是一个解决方案\theorempostwork
。我认为你不需要 pstricks for shaded theorems: using
\fcolorbox` 就可以了。此外,我修改了一些参数的值以获得更好的垂直间距(在我看来)。
\documentclass[11pt]{report}
\usepackage[showframe]{geometry}%
\usepackage{framed}
\usepackage{xcolor}%
\usepackage[framed,thmmarks,thref, hyperref]{ntheorem}
\definecolor{proofback}{rgb}{0.95,0.95,0.95}
\theoremheaderfont{\scshape}
\theorembodyfont{\upshape}
\theoremstyle{nonumberplain}
\theoremsymbol{\raisebox{-5mm}{ \rule{1ex}{1ex} }}
\colorlet{shadecolor}{proofback}
\def\theoremframecommand{\colorbox{shadecolor}}
\theoremframepostskip{2ex}
\theoreminframepostskip{0.6ex}
\theorempostwork{\noindent\hspace*{-\fontdimen2\font}}
\newshadedtheorem{proof}{Proof}
\usepackage{hyperref}%
\begin{document}
\begin{proof}
test test
\end{proof}
Some normal text
\end{document}