去掉定理编号后面的点

发布于 2021-05-06 18:34:34

经常看到有人询问要如何去掉定理编号后面的点。这里查到了两种方法,分享出来。注意这里只谈论 amsthm 的情况。

先明确概念。那个点叫 punctuation,在 amsthm 中用 \thm@headpunct 来标识它。

这里我们给出一个不做任何处理的例子。

\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。由于默认的定理样式 theoremstyleplain,因此我们需要改动 \th@plain

\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 来帮助我们解决这个问题。

\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}

同样,我们也给出了相关链接。

希望本文能对用户提供一些帮助。

0 条评论

发布
问题