自定义证明环境:给出可选参数时出现间距问题

自定义证明环境:给出可选参数时出现间距问题

考虑下面的代码,其目的是有一个证明环境,其中“证明。”位以粗体显示。

\documentclass{article}
\usepackage{amsthm} 
\renewenvironment{proof}[1][Proof]{\noindent{\bfseries #1.\ }}{\qed\\[2mm]}

\begin{document}
\begin{proof}
    $A = X$.
\end{proof}

\begin{proof}[Proof]
    $A = X$.
\end{proof}

\begin{proof}[Proof]%
    $A = X$.
\end{proof}
\end{document}

这会产生以下间距不一致的情况: 在此处输入图片描述 特别是,当提供可选参数时,即使给定的值与默认值 (Proof) 完全相同,句号后也会出现一个多余的空格。%在参数括号关闭后添加可以解决这个问题,但为什么会发生这种情况?如何编写环境以使其不需要这样做%

答案1

proof当环境可以工作时为什么还要重新定义环境amsthm

为了使它变得粗体,你可以使用

\usepackage{xpatch}
\xpatchcmd\proof{\itshape}{\bfseries}{}{\typeout{Patch of proof failed}}

最后\\[2mm]我会跳过,这不是一个好主意。

答案2

您可以\ignorespaces在定义中添加忽略环境开头的空格:

\documentclass{article}
\usepackage{amsthm} 
\renewenvironment{proof}[1][Proof]{\noindent{\bfseries #1.\ }\ignorespaces}{\qed\\[2mm]}

\begin{document}
\begin{proof}
    $A = X$.
\end{proof}

\begin{proof}[Proof]
    $A = X$.
\end{proof}

\begin{proof}[Proof]%
    $A = X$.
\end{proof}
\end{document}

但在我看来,使用这种方法\ignorespaces主要是一种解决方法。所以我建议使用类似@daleif 的解决方案回答反而。

相关内容