15 LaTeX 如何修改定理环境中的具体的定理名不由小括号包裹并后接冒号?

发布于 2024-09-24 23:50:32

在使用 LaTeX 中的原生定理环境时,具体的定理名会由小括号包裹,希望在保持包括但不限于字体、间距等要素与 LaTeX 的原生定理环境不变的情况下,将具体的定理名不由小括号包裹并后接冒号。

LaTeX 中的原生定理环境:

\newtheorem{dfn}{定义}[section]
\begin{dfn}[光速]
    真空中光速为 \qty{299792458}{m/s}。
\end{dfn}

效果为:
image.png

希望在不使用 amsthm 宏包的情况下,在导言区通过统一修改,使得相同的代码得到大致为如下的效果:
image.png

查看更多

关注者
1
被浏览
481
Sagittarius Rover
Sagittarius Rover 2024-09-25
我要成为TikZ糕手/(ㄒoㄒ)/~~

本弹性强迫症也来给一个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}

image.png

方案二

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

image.png

方案三

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

image.png

2 个回答
(〈@~_~@〉)lhr
(〈@~_~@〉)lhr 2024-09-25
这家伙很懒,什么也没写!

在 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

效果:
image.png

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览