在使用 LaTeX 中的原生定理环境时,具体的定理名会由小括号包裹,希望在保持包括但不限于字体、间距等要素与 LaTeX 的原生定理环境不变的情况下,将具体的定理名不由小括号包裹并后接冒号。
LaTeX 中的原生定理环境:
\newtheorem{dfn}{定义}[section]
\begin{dfn}[光速]
真空中光速为 \qty{299792458}{m/s}。
\end{dfn}
效果为:
希望在不使用 amsthm
宏包的情况下,在导言区通过统一修改,使得相同的代码得到大致为如下的效果:
本弹性强迫症也来给一个briefly summary:
参考自tse上的另一个回答,大致有以下三种方案:
amsthm
宏包ntheorem
宏包thmtools
宏包方案一:
\documentclass{ctexart}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{lipsum,zhlipsum}
\newtheoremstyle{no-bracket}
{\topsep}
{\topsep}
{\normalfont\itshape}
{0pt}
{\bfseries}
{} %{:}
{\newline}
%{\thmname{#1}~\thmnumber{#2}\thmnote{ \textlangle#3\textrangle}}
{\thmname{#1}~\thmnumber{#2}\thmnote{ #3: }}
\theoremstyle{no-bracket}
\newtheorem{theorem}{定理}[section]
\begin{document}
\noindent 使用\verb|amsthm|宏包的\verb|\newtheoremstyle|修改参数\verb|<CUSTOM-HEAD-SPEC>|实现
\section{这是一个章节}
\begin{theorem}[Fundamental Theorem of Algebra]
\lipsum[2]
\end{theorem}
\begin{theorem}[代数学基本定理]
Fundamental Theorem of Algebra
\end{theorem}
\begin{theorem}[代数学基本定理]
\zhlipsum[1]
\end{theorem}
\end{document}
方案二:
\documentclass[12pt]{ctexart}
\usepackage{amsmath}
\usepackage{lipsum,zhlipsum}
\usepackage{ntheorem}
\makeatletter
\newtheoremstyle{no-bracket}
{
\item[
\rlap{\vbox{\hbox{\hskip\labelsep
\theorem@headerfont ##1\ ##2\theorem@separator}
\hbox{\strut}}}
]
}%
{
\item[
\rlap{\vbox{\hbox{\hskip\labelsep
\theorem@headerfont ##1\ ##2\ ##3: \theorem@separator}\hbox{\strut}}}
%冒号加在这里不会有空格
]
}
\makeatother
\theoremstyle{no-bracket}
%\theoremseparator{:} %出现空格
\newtheorem{theorem}{Theorem}
\begin{document}
\noindent 使用\verb|ntheorem|宏包的\verb|\newtheoremstyle|命令
\section{这是一个章节}
\begin{theorem}[Fundamental Theorem of Algebra]
\lipsum[2]
\end{theorem}
\begin{theorem}[代数学基本定理]
Fundamental Theorem of Algebra
\end{theorem}
\begin{theorem}[代数学基本定理]
\zhlipsum[1]
\end{theorem}
\end{document}
方案三:
\documentclass[10pt,a4paper]{ctexart}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{lipsum,zhlipsum}
\usepackage{thmtools} %
\declaretheoremstyle[
spaceabove=\topsep,
spacebelow=\topsep,
headfont=\normalfont\bfseries,
notefont=\bfseries,
notebraces={}{},
bodyfont=\normalfont\itshape,
postheadspace=\newline,
headpunct={:},
]{no-bracket}
\declaretheorem[style=no-bracket,name=Theorem]{theorem}
\begin{document}
\noindent 使用\verb|thmtools|宏包的\verb|\declaretheoremstyle|命令设置
\section{这是一个章节}
\begin{theorem}[Fundamental Theorem of Algebra]
\lipsum[2]
\end{theorem}
\begin{theorem}[代数学基本定理]
Fundamental Theorem of Algebra
\end{theorem}
\begin{theorem}[代数学基本定理]
\zhlipsum[1]
\end{theorem}
\end{document}
在 tse 上找到了答案:Remove parentheses from theorem without amsthm package
但是还要使用 ntheorem
宏包,并且在使用中文冒号的时候后面会多出来一小块空白,懒得具体看了直接用 \!
调整了一下。
\makeatletter
\gdef\th@plain{\normalfont\itshape
\def\@begintheorem##1##2{%
\item[\hskip\labelsep \theorem@headerfont ##1\ ##2]}%
\def\@opargbegintheorem##1##2##3{%
\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\ ##3:\!\!]}}
\makeatother
效果: