我想创建一种自定义定理样式,使其包含条件。
更具体地说,当我的定理环境中有一个可选参数时,标题应该从中取材,否则不做任何变化。
我一直尝试做以下事情,但尝试失败了。
\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}