将“mdtheorem”(即带有 frametitle)添加到定理列表中

将“mdtheorem”(即带有 frametitle)添加到定理列表中

newmdtheoremenv我在格式化环境或将mdtheorem环境添加到定理表时遇到了麻烦,这取决于您如何看待它。

我的 MWE:

\documentclass{article}
\usepackage{amsthm,thmtools}
\usepackage{mdframed}
\usepackage{xcolor}

\usepackage{mdframed}
\mdfdefinestyle{guidelinestyle}{% 
  linecolor=black,
  linewidth=1pt,
  frametitlerule=true,
  frametitlefont=\sffamily\bfseries,
  frametitlebackgroundcolor=gray!20,
  innertopmargin=\topskip,
} 
% \newmdenv[style=guidelinestyle]{asEnv}{asEnv}[section]
\newmdtheoremenv[style=guidelinestyle]{asTheoremEnv}{asTheoremEnv}[section]
\mdtheorem[style=guidelinestyle]{asTheorem}{asTheorem}[section]

\begin{document}
\expandafter\csname [email protected]\endcsname

%\listoftheorems[ignoreall,show=xxx]  % this is how I actually display it in my document
\listoftheorems

\section{My section}

% \begin{asEnv}[As environment, it appears in ToTh]
%   But it doesn't look like what I want.
% \end{asEnv}

\begin{asTheoremEnv}[As theoremEnv, it appears in ToTh]
  But it doesn't look like what I want.
\end{asTheoremEnv}

\begin{asTheorem}[As theorem, it does not appear in ToTh]
 But it looks a lot better!
\end{asTheorem}

\end{document}

这将生成如下文档:

数学公式 PDF

我已经发现这个问题描述了同样的问题,但由于它可以追溯到 2012 年 4 月,而我的版本mdframed是 2013 年的,所以我认为它不适用(而且我看不出它应该在哪个版本中得到解决)。

我想要的是,环境看起来像文档中的后者,但出现在定理表中。

有人能帮我实现这个功能吗?我不太关心具体用了什么包,如果

  • 它出现在定理列表中,并且
  • 定理有边框和某种突出显示的标题栏

答案1

您可以教导thmtools\mdtheorem其用作\newtheorem命令。文档中有一个提示,thmtools说明它如何处理该thmbox选项。

如果你引入一个新mdthm密钥:

\makeatletter
\define@key{thmdef}{mdthm}[{}]{%
\thmt@trytwice{\def\thmt@theoremdefiner{\mdtheorem[#1]}}{}}
\makeatother

那么你可以写

\declaretheorem[mdthm={style=guidelinestyle},numberwithin=section]{theorem}

mdframed将选项作为参数传递给mdthm。这将产生您请求的定理样式和定理列表中的条目:

示例输出

\documentclass{article}

\usepackage{mdframed}
\usepackage{amsthm,thmtools}
\usepackage{xcolor}

\usepackage{mdframed}
\mdfdefinestyle{guidelinestyle}{% 
  linecolor=black,
  linewidth=1pt,
  frametitlerule=true,
  frametitlefont=\sffamily\bfseries,
  frametitlebackgroundcolor=gray!20,
  innertopmargin=\topskip,
} 

\makeatletter
\define@key{thmdef}{mdthm}[{}]{%
\thmt@trytwice{\def\thmt@theoremdefiner{\mdtheorem[#1]}}{}}
\makeatother
\declaretheorem[mdthm={style=guidelinestyle},numberwithin=section]{theorem}

\begin{document}

\listoftheorems

\section{My section}

\begin{theorem}[Is in list of theorems!]
  Text.
\end{theorem}

\end{document}

相关内容