去掉定理编号后面的点
文本排版
2020-02-04 17:42 浏览 :5704
经常看到有人询问要如何去掉定理编号后面的点。这里查到了两种方法,分享出来。注意这里只谈论 `amsthm` 的情况。
先明确概念。那个点叫 punctuation,在 `amsthm` 中用 `\thm@headpunct` 来标识它。
这里我们给出一个不做任何处理的例子。
```tex
\documentclass{article}
\usepackage{amsthm}
\newtheorem{thm}{Theorem}[section]
\begin{document}
\section{A section here}
\begin{thm}
A theorem here.
\end{thm}
\end{document}
```
大家自行运行,可以看到 punctuation 存在。
接下来我们调整定理的 punctuation。由于默认的定理样式 `theoremstyle` 是 `plain`,因此我们需要改动 `\th@plain`。
```tex
\documentclass{article}
\usepackage{amsthm}
\newtheorem{thm}{Theorem}[section]
%https://latex.org/forum/viewtopic.php?t=14755
\makeatletter
\g@addto@macro\th@plain{\thm@headpunct{}}
\makeatother
\begin{document}
\section{A section here}
\begin{thm}
A theorem here.
\end{thm}
\end{document}
```
在上述代码中给出了参考链接,大家可以学习。
这样的做法需要用户自行了解定理样式,不太方便。因此我们可以调用 `xpatch` 来帮助我们解决这个问题。
```tex
\documentclass{article}
\usepackage{amsthm}
\newtheorem{thm}{Theorem}[section]
%https://tex.stackexchange.com/questions/338209/remove-dot-after-theorem-with-amsthm-and-hyperref
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\@thm}{\thm@headpunct{.}}{\thm@headpunct{}}{}{}
\makeatother
\begin{document}
\section{A section here}
\begin{thm}
A theorem here.
\end{thm}
\end{document}
```
同样,我们也给出了相关链接。
希望本文能对用户提供一些帮助。
感谢大佬,找了好久才找到,暴风感动!