如果在 \newtheoremstyle 中

如果在 \newtheoremstyle 中

我想创建一种自定义定理样式,使其包含条件。

更具体地说,当我的定理环境中有一个可选参数时,标题应该从中取材,否则不做任何变化。

我一直尝试做以下事情,但尝试失败了。

\newtheoremstyle{mytheorem}
  {\topsep}
  {\topsep}
  {}
  {1em}
  {\bfseries}
  {.}
  { }
  {
    \ifthenelse{#3}{
        \thmnote{#3}
    }{
        \thmname{#1}\thmnumber{ #2}\thmnote{ (#3)}
    }
  } 

答案1

amsthm的内部宏\@ifempty就是您所需要的。或者,您也可以使用\ifstrempty{<string>}{<true code>}{<false code>}来自etoolbox包的宏。

\documentclass{article}
\usepackage{amsthm}

\makeatletter
\newtheoremstyle{mytheorem}
  {\topsep}
  {\topsep}
  {}
  {1em}
  {\bfseries}
  {.}
  { }
  {%
    \@ifempty{#3}
      {\thmname{#1}\thmnumber{ #2}\thmnote{ (#3)}}
      {\thmname{#3}}%
  }
\makeatother

\theoremstyle{mytheorem}
\newtheorem{thm}{Theorem}

\begin{document}
\begin{thm}
  content
\end{thm}

\begin{thm}[Title]
  content
\end{thm}
\end{document}

在此处输入图片描述

相关内容