定理后的缩进

定理后的缩进

考虑以下 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} 

在此处输入图片描述

相关内容