考虑下面的代码,其目的是有一个证明环境,其中“证明。”位以粗体显示。
\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 的解决方案回答反而。