以名称作为参数的定理样式

以名称作为参数的定理样式

有没有办法获得一个定理类型,从而将名称作为参数传递,从而生成一个定理?换句话说,有没有办法定义“命名”,使得

\begin{named}[NAME]
text
\end{named}

将打印

姓名:文本”?

我尝试使用定义\newtheorem*{named}{},但结果却是

“(名称):文本”,这与我想要做的完全不同。

我知道我也可以\newtheorem为每个要使用的命名定理创建一个新的实例,但这很笨重且不方便。有没有更好的方法?

答案1

这是一个可能的解决方案thmtools作为前端amsthm

\documentclass{article}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{lipsum}

\declaretheoremstyle[
spaceabove=\topsep, spacebelow=\topsep,
headfont=\normalfont\bfseries,
notefont=\bfseries, notebraces={}{},
bodyfont=\normalfont\itshape,
postheadspace=0.5em,
name={\ignorespaces},
numbered=no,
headpunct=:]
{mystyle}
\declaretheorem[style=mystyle]{named}

\begin{document}

\begin{named}[NAME]
\lipsum[4]
\end{named}

\begin{named}[OTHERNAME]
\lipsum[4]
\end{named}

\end{document}

在此处输入图片描述

并且如果不使用thmtools,您可以这样说:

\documentclass{article}
\usepackage{amsthm}
\usepackage{lipsum}

\makeatletter
\newtheoremstyle{mystyle}%
{\topsep}{\topsep}
{\itshape}{}
{\bfseries}{:}
{0.5em}
{\thmname{\@ifempty{#3}{#1}\@ifnotempty{#3}{\MakeUppercase{#3}}}}
\makeatother

\theoremstyle{mystyle}
\newtheorem*{named}{NAME}% here the second argument is the default name

\begin{document}

\begin{named}
\lipsum[4]
\end{named}

\begin{named}[Othername]
\lipsum[4]
\end{named}

\end{document}

在此处输入图片描述

使用第二种方法,您可以在的第二个参数中设置结构的默认名称\newtheorem*

相关内容