% \iffalse meta-comment
%
% Copyright (C) 2010-2014 by Ulrich M. Schwarz
% Copyright (C) 2019      by Frank Mittelbach
% Copyright (C) 2020-     by Yukai Chou
%
% This file may be distributed and/or modified under the conditions of
% the LaTeX Project Public License, version 1.3c.
% The license can be obtained from
% http://www.latex-project.org/lppl/lppl-1-3c.txt
%
%\fi
%
%\iffalse (hide this from DocInput)
%<*ntheorem>
%\fi
%    \begin{macrocode}

\providecommand\thmt@space{ }

% actually, ntheorem's so-called style is nothing like a style at all...
\def\thmt@declaretheoremstyle@setup{}
\def\thmt@declaretheoremstyle#1{%
  \ifcsname th@#1\endcsname\else
    \@xa\let\csname th@#1\endcsname\th@plain
  \fi
}

\def\thmt@notsupported#1#2{%
  \PackageWarning{thmtools}{Key `#2' not supported by #1}{}%
}

\define@key{thmstyle}{spaceabove}{%
  \setlength\theorempreskipamount{#1}%
}
\define@key{thmstyle}{spacebelow}{%
  \setlength\theorempostskipamount{#1}%
}
\define@key{thmstyle}{headfont}{%
  \theoremheaderfont{#1}%
}
\define@key{thmstyle}{bodyfont}{%
  \theorembodyfont{#1}%
}
% not supported in ntheorem.
\define@key{thmstyle}{notefont}{%
  \thmt@notsupported{ntheorem}{notefont}%
}
\define@key{thmstyle}{headpunct}{%
  \theoremseparator{#1}%
}
% not supported in ntheorem.
\define@key{thmstyle}{notebraces}{%
  \thmt@notsupported{ntheorem}{notebraces}%
}
\define@key{thmstyle}{break}{%
  \theoremstyle{break}%
}
% not supported in ntheorem...
\define@key{thmstyle}{postheadspace}{%
  %\def\thmt@style@postheadspace{#1}%
  \@xa\g@addto@macro\csname thmt@style \thmt@style @defaultkeys\endcsname{%
      postheadhook={\hspace{-\labelsep}\hspace*{#1}},%
  }%
}

% not supported in ntheorem
\define@key{thmstyle}{headindent}{%
  \thmt@notsupported{ntheorem}{headindent}%
}
% sorry, only style, not def with ntheorem.
\define@key{thmstyle}{qed}[\qedsymbol]{%
  \@ifpackagewith{ntheorem}{thmmarks}{%
    \theoremsymbol{#1}%
  }{%
    \thmt@notsupported
      {ntheorem without thmmarks option}%
      {headindent}%
  }%
}

\let\@upn=\textup
\define@key{thmstyle}{headformat}[]{%
  \def\thmt@tmp{#1}%
  \@onelevel@sanitize\thmt@tmp
  %\tracingall
  \ifcsname thmt@headstyle@\thmt@tmp\endcsname
    \newtheoremstyle{\thmt@style}{%
      \item[\hskip\labelsep\theorem@headerfont%
        \def\NAME{\theorem@headerfont ####1}%
        \def\NUMBER{\bgroup\@upn{####2}\egroup}%
        \def\NOTE{}%
        \csname thmt@headstyle@#1\endcsname
        \theorem@separator
      ]
    }{%
      \item[\hskip\labelsep\theorem@headerfont%
        \def\NAME{\theorem@headerfont ####1}%
        \def\NUMBER{\bgroup\@upn{####2}\egroup}%
        \def\NOTE{\if=####3=\else\bgroup\thmt@space(####3)\egroup\fi}%
        \csname thmt@headstyle@#1\endcsname
        \theorem@separator
      ]
    }
  \else
    \newtheoremstyle{\thmt@style}{%
      \item[\hskip\labelsep\theorem@headerfont%
        \def\NAME{\the\thm@headfont ####1}%
        \def\NUMBER{\bgroup\@upn{####2}\egroup}%
        \def\NOTE{}%
        #1%
        \theorem@separator
      ]
    }{%
      \item[\hskip\labelsep\theorem@headerfont%
        \def\NAME{\the\thm@headfont ####1}%
        \def\NUMBER{\bgroup\@upn{####2}\egroup}%
        \def\NOTE{\if=####3=\else\bgroup\thmt@space(####3)\egroup\fi}%
        #1%
        \theorem@separator
      ]
    }
  \fi
}

\def\thmt@headstyle@margin{%
  \makebox[0pt][r]{\NUMBER\ }\NAME\NOTE
}
\def\thmt@headstyle@swapnumber{%
  \NUMBER\ \NAME\NOTE
}



%    \end{macrocode}
%\iffalse (hide this from DocInput)
%</ntheorem>
%\fi