如何在重新定义的证明环境中在标题后立即开始列表?

如何在重新定义的证明环境中在标题后立即开始列表?

我重新定义了证明环境,通过改编代码使标题变为粗体amsthm 文档(第 11 页)。实际上我只是删除了内容\itshape并输入了内容\bfseries,其他内容没有改变。

笔记:甚至无论将斜体改为粗体都无关紧要,将提供的代码从文档直接复制到文档中时也会出现同样的问题。)

遗憾的是,列表现在从第二行开始,而不是从标题后立即开始。可以修复这个问题吗?

\documentclass[]{article}
\usepackage{amsthm, lipsum}

\makeatletter
\renewenvironment{proof}[1][\proofname]{\par
    \pushQED{\qed}%
    \normalfont \topsep6\p@\@plus6\p@\relax
    \trivlist
    \item\relax
    {\bfseries
        #1\@addpunct{.}}\hspace\labelsep\ignorespaces
}{%
\popQED\endtrivlist\@endpefalse
}
\makeatother

\begin{document}
\begin{proof}
    \begin{enumerate}
        \item \lipsum[66]
        \item \lipsum[66]
    \end{enumerate}
\end{proof}
\end{document}

答案1

您有两个错误:

  1. [...]之后应该有\item,而你有{...}
  2. \hskip\labelsep应该放在可选参数内
\makeatletter
\renewenvironment{proof}[1][\proofname]{\par
    \pushQED{\qed}%
    \normalfont \topsep6\p@\@plus6\p@\relax
    \trivlist
    \item[\hskip\labelsep\bfseries#1\@addpunct{.}]\ignorespaces
}{%
\popQED\endtrivlist\@endpefalse
}
\makeatother

不幸的是,文档中显示的代码是错误的。:(

这是原始定义amsthm.sty

\newenvironment{proof}[1][\proofname]{\par
  \pushQED{\qed}%
  \normalfont \topsep6\p@\@plus6\p@\relax
  \trivlist
  \item[\hskip\labelsep
        \itshape
    #1\@addpunct{.}]\ignorespaces
}{%
  \popQED\endtrivlist\@endpefalse
}

你可能想做

\usepackage{amsthm}
\usepackage{xpatch}

\xpatchcmd{\proof}{\itshape}{\bfseries}{}{}

这样就无需查找代码。

相关内容