thmtools 定理中的每个环境标题

thmtools 定理中的每个环境标题

我有一个自定义的定义样式,但我想每次都自定义标题:

\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{thmtools}

\declaretheoremstyle[
    spaceabove=\topsep,
    spacebelow=\topsep,
    bodyfont=\normalfont,
    numbered=no,
]{defsty}
\declaretheorem[style=defsty]{defn}

\documentclass{article}
\begin{document}
\begin{defn}[Open set]
Open set definition here.
\end{defn}
\end{document}

上述代码应导致
開啟集。在这里打开集合定义。

结果是
定义(开放集)。此处为开放集定义。

我尝试将自定义名称参数传递给环境defn,但它不起作用:

\begin{defn}[name=Open set]
...
\end{defn}

问题是,我有很多定义,所以我无法为每一个定义都声明一个定理。

答案1

这是一个解决方案。请注意,这样做会更简单,ntheorem因为它定义了一个empty定理样式,该样式只有一个可选参数。

\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage[showframe]{geometry}

\declaretheoremstyle[
    spaceabove=\topsep,
    spacebelow=\topsep,
    name=\hspace*{-\fontdimen2\font},
    notefont=\bfseries,
    notebraces={}{},
    bodyfont=\normalfont,
    numbered=no,
]{defsty}
\declaretheorem[style=defsty]{defn}

\begin{document}

\begin{defn}[Open set]
Open set definition here.
\end{defn}

\end{document} 

在此处输入图片描述

添加:

使用ntheorem包 代替amsthm,前言应该只包含这些行(theoremtools对于这个问题来说是不必要的):

\usepackage[amsmath, thref, thmmarks]{ntheorem} \theoremstyle{empty} \theorembodyfont{\normalfont} \newtheorem{defn}{}

相关内容