我有几个定理环境:
\newtheorem{theorem}{Theorem}
\newtheorem{definition}{Definition}
\newtheorem{proposition}{Proposition}
ETC。
我想更改它们,使它们都使用“小”字体大小。有没有办法重新定义所有这些环境的字体大小?
答案1
我不会这么做,但如果你真的需要的话......
如果你需要定理的头部和主体,
\small
你可以加载包etoolbox
并发出命令\AtBeginEnvironment{theorem}{\small}
即在序言部分增加如下内容:
\usepackage{etoolbox} \AtBeginEnvironment{theorem}{\small}
如果您只需要定理主体的大小,
\small
您可以theorem
按如下方式重新定义环境:\let\oldtheorem\theorem \let\oldendtheorem\endtheorem \renewenvironment{theorem} {\oldtheorem\small} {\oldendtheorem}
下面的MWEtheorem
既有头部大小,也有主体大小\small
,而definition
MWE只有主体,proposition
保持原来大小。
\documentclass{article}
\newtheorem{theorem}{Theorem}
\newtheorem{definition}{Definition}
\newtheorem{proposition}{Proposition}
\usepackage{etoolbox}
\AtBeginEnvironment{theorem}{\small}
\let\olddefinition\definition
\let\oldenddefinition\enddefinition
\renewenvironment{definition}
{\olddefinition\small}
{\oldenddefinition}
\begin{document}
\begin{theorem}
My theorem
\end{theorem}
\begin{definition}
My definition
\end{definition}
\begin{proposition}
My proposition
\end{proposition}
\end{document}
输出:
amsthm
请注意,它与和配合ntheorem
也很好。
答案2
您可以修补负责设置语句的命令。有两种不同的情况:(1) 未加载定理包时和 (2)加载amsthm
或时。我从不使用最后一个包,但总是使用。ntheorem
amsthm
但是,我不明白你为什么要这么做。
\documentclass{article}
\usepackage{lipsum} % just for the example
\usepackage{amsthm} % optional, but recommended
%\usepackage{ntheorem} % I don't recommend this one
\usepackage{etoolbox}
\makeatletter
\@tempswafalse
\@ifpackageloaded{amsthm}{\@tempswatrue}{}
\@ifpackageloaded{ntheorem}{\@tempswatrue}{}
\if@tempswa
\patchcmd\@thm{\trivlist}{\small\trivlist}{}{}
\else
\patchcmd\@begintheorem{\trivlist}{\small\trivlist}{}{}
\patchcmd\@opargbegintheorem{\trivlist}{\small\trivlist}{}{}
\fi
\makeatother
\newtheorem{thm}{Theorem}
\newtheorem{lem}{Lemma}
\begin{document}
\lipsum[2]
\begin{thm}
This statement will be small in type.
\end{thm}
\lipsum[2]
\begin{lem}
Also this one will have smaller type.
\end{lem}
\lipsum[3]
\end{document}
您还可以研究thmtools
并了解其preheadhook
定义新定理样式的关键。