我正在使用\begin{proof}
该包。我想更改开头添加的单词amsthm
的样式。默认情况下它是斜体,我想将其变为粗体。我该怎么做?Proof
答案1
怎么样:
\renewenvironment{proof}{{\bfseries Proof}}{*something*}
*something* - 处理环境参数后要执行的某些操作(可能为空)。
更多内容请见:http://en.wikibooks.org/wiki/LaTeX/Customizing_LaTeX。
答案2
如果您不介意更改环境的名称,只需使用以下代码的变体。更改\ttfamily \scshape \large #1 (yes, "#1")
为更合理的内容:#1
表示“证明”一词。
\newenvironment{myproof}[1][\proofname]{%
\proof[\ttfamily \scshape \large #1 (yes, ``#1'')]%
}{\endproof}
\begin{myproof}
Hi.
\end{myproof}
proof 环境接受一个参数并将其以斜体显示(默认情况下,此参数为Proof
英文)。我们的新环境也接受一个参数,标记为#1
(使用相同的默认值),并proof
在对其进行一些(或大量)转换后将其提供给环境。在这里,我决定用打字机小写字母大写“proof”一词,我甚至将其写了两次:“Proof,(是的,‘Proof’)”。它可以做任何事情。
如果你想重新定义proof
环境本身,你可以这样做
\documentclass{article}
\usepackage{amsthm}
\expandafter\let\expandafter\oldproof\csname\string\proof\endcsname
\let\oldendproof\endproof
\renewenvironment{proof}[1][\proofname]{%
\oldproof[\ttfamily \scshape \large #1 (yes, ``#1'')]%
}{\oldendproof}
\begin{document}
\begin{proof}[Foobar]
Some example text.
\end{proof}
\end{document}
当我们重新定义proof
环境时,我们实际上是在定义\proof
和\endproof
。原始值\let
变成\oldproof
了最初表示的精确副本\\proof
,因此我们可以使用它来定义\proof
。否则,\proof
将扩展为\proof[...]
,这将扩展为\proof[...]
,等等,无限循环。
编辑:修改了最后一段代码片段,该代码片段完全是错误的。
答案3
一个更好更简单的解决方案是重新定义\proofname
:
\usepackage{amsthm}
\let\oldproofname=\proofname
\renewcommand{\proofname}{\rm\bf{\oldproofname}}
这比重新定义环境要好,proof
因为环境会花很大力气来\qed
正确定位标记,并遵守定理中使用的缩进样式(不一定与普通段落相同)。它还可以与软件包配合使用,babel
如果您使用多种语言,或者正在编写可能用于多种语言的样式文件,这将很有帮助。
答案4
如果您能够并且乐意修改您的 amsthm.sty,那么找到开始的命令\newenvironment{proof}
(接近文件末尾),然后更改itshape
为bfseries
。
或者,只需将以下内容粘贴到文档的前言中:
\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
然后,证明环境在间距、可选参数、\qedhere 等方面的行为将与以前完全相同,但您将使用粗体而不是斜体。