![避免在修改后的“证明”环境末尾出现额外的换行符](https://linux22.com/image/478915/%E9%81%BF%E5%85%8D%E5%9C%A8%E4%BF%AE%E6%94%B9%E5%90%8E%E7%9A%84%E2%80%9C%E8%AF%81%E6%98%8E%E2%80%9D%E7%8E%AF%E5%A2%83%E6%9C%AB%E5%B0%BE%E5%87%BA%E7%8E%B0%E9%A2%9D%E5%A4%96%E7%9A%84%E6%8D%A2%E8%A1%8C%E7%AC%A6.png)
这个问题与如何更改 proof 环境中的“Proof”一词?。我希望我的文档中的校样以“证明。---”,而不是默认的标准“证明。”但是,如果我尝试修改此设置,无论我尝试哪种解决方案,在证明的末尾都会出现一个额外的换行符(并且 \qed 放在额外的空白行上)。
以下是 MWE:
\documentclass[a4paper,11pt]{article}
\usepackage[french]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsthm}
\usepackage{enumitem}
\newtheorem{theo}{Theorem}[section]
\renewenvironment{proof}{{\noindent \itshape Proof. ---}}{\qed}
\begin{document}
\begin{theo}
My theorem.
\end{theo}
\begin{proof} In two steps:
\begin{enumerate}[label=(\roman*)]
\item The first step
\item The second step
\qedhere
\end{enumerate}
\end{proof}
\end{document}
正如您在本 MWE 中看到的,“证明。 - -“”设置正确,但我得到了一个额外的新行。我尝试了一些解决方案(在 SE 上找到)来删除额外的新行,但似乎它们都不兼容证明环境的“重命名”。我该如何同时做到这两点?
谢谢!
答案1
解决方案:使用xpatch
包仅修改\@addpunct
指令。这是可行的:
\documentclass[a4paper,11pt]{article}
\usepackage[french]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsthm}
\usepackage{enumitem}
\usepackage{xpatch}
\makeatletter
\xpatchcmd\proof{\@addpunct{.}}{\@addpunct{.} ---}{}{}
\makeatother
\newtheorem{theo}{Theorem}[section]
\begin{document}
\begin{theo}
My theorem.
\end{theo}
\begin{proof} In two steps:
\begin{enumerate}[label=(\roman*)]
\item The first step
\item The second step
\qedhere
\end{enumerate}
\end{proof}
\end{document}