在 beamer 中的样式定理中出现额外的括号

在 beamer 中的样式定理中出现额外的括号

这是我的代码:

\documentclass[slidescentered]{beamer}
\usepackage{amsthm,thmtools,xparse}
\makeatletter
\newif\if@namespace\@namespacefalse
\newcommand{\contrel}[2]{
\if@namespace
    Continua da
\else
    #1~--~continua da
\fi
\ #2
}
\thmt@define@thmuse@key{continued}{%
  \thmt@suspendcounter{\thmt@envname}{\thmt@trivialref{#1}{??}}%
  \g@addto@macro\thmt@newoptarg{{}%
    \thm@continues{#1}%
    \@iden}%
}
\newcommand\thm@continues[1]{%
  \ifcsname hyperref\endcsname
    \hyperref[#1]
  \else
    {}
  \fi
  {\contrel{\nameref*{#1}}{\cont@from}}%
}
\makeatother
\declaretheoremstyle[
spaceabove=\topsep, spacebelow=\topsep,
headfont=\normalfont\bfseries,
notefont=\bfseries, notebraces={}{},
bodyfont=\normalfont\itshape,
postheadspace=.5em,
name={\ignorespaces},
numbered=no,
headpunct=.]
{mystyle}
\declaretheorem[style=mystyle]{@thmattr}
\NewDocumentEnvironment{teorspec}{O{Teorema}moo}
    {\IfValueTF{#4}
        {\gdef\cont@from{#4}
        \begin{@thmattr}[name={\protect\nameref*{#3}},continued=#3]}
        {\IfValueTF{#3}
            {\begin{@thmattr}[name=#1\ #2,label=#3]}
            {\begin{@thmattr}[name=#1\ #2]}
        }
    }
    {\end{@thmattr}}

\begin{document}
\begin{frame}
\begin{teorspec}[Principio]{di D'Alembert}
Foobar.
\end{teorspec}
\end{frame}
\end{document}

输出:

在此处输入图片描述

一切都很好,只是那些括号显然放错了位置。事实上,我说了notebraces={}{},应该会抑制它们,而且确实抑制了它们report,这是我过去一年多来一直在利用的。那么为什么beamer要把那些括号放回去呢?我该如何摆脱它们呢?

更新

我添加了这个\makeatletter部分。那\if@namespace是出于一个我不太记得的目的,但它似乎在这个特定定理中没用。让它保留包中的代码。也许我会研究如何摆脱它。

更新 2

我接受了 egreg 的回答,因为他提供的代码解决了我的问题。但是,我仍然想知道问题最初出现的原因。beamer 做了什么与我的代码冲突?更重要的是,我应该就此提出新问题吗?

答案1

我认为你误解了name定理选项中的作用。由于我不明白它continued的用途和作用\nameref*{#3},我仅介绍基础知识:

\documentclass[notheorems,slidescentered]{beamer}
\usepackage{amsthm,thmtools,xparse}

\protected\def\thistheoremname{}
\declaretheoremstyle[
  spaceabove=\topsep, spacebelow=\topsep,
  headfont=\normalfont\bfseries,
  bodyfont=\normalfont\itshape,
  postheadspace=.5em,
  name={\thistheoremname},
  numbered=no,
  headpunct=.]
{mystyle}
\declaretheorem[style=mystyle]{@thmattr}
\NewDocumentEnvironment{teorspec}{O{Teorema}m}
 {\def\thistheoremname{#1 #2}\begin{@thmattr}}
 {\end{@thmattr}}

\begin{document}
\begin{frame}
\begin{teorspec}[Principio]{di D'Alembert}
Foobar.
\end{teorspec}
\end{frame}
\end{document}

在此处输入图片描述

相关内容