amsthm,thmtools:将定理注释放入索引中,而不是

amsthm,thmtools:将定理注释放入索引中,而不是

我想将注释 \begin{defi}[<note>] 默认放入索引中,但在某些情况下不行。

所以我想使用类似的变速器\noindex,这意味着
\begin{defi}[<note> \noindex]

我尝试了 newif

\newif\ifToIndex
\ToIndextrue % Default

但这不管用。我该怎么办?

% arara: pdflatex
% arara: makeindex
% arara: pdflatex

\documentclass{scrartcl}
\usepackage{amsthm}
\usepackage{thmtools}

\makeatletter
\newif\ifToIndex
\ToIndextrue % Default

\declaretheoremstyle[
notebraces={}{},
headpunct={\normalfont.\hspace{1.5em}\NOTE},
%notefont=\normalfont,
headformat={\NAME\,%
\NUMBER\,{\let\thmt@space\@empty{\normalfont(\NOTE)}%
 \ifToIndex\index{\NOTE}\fi}% <-------!!!!  
},
%preheadhook=\vspace{\baselineskip}\begin{leftbar}, postfoothook=\end{leftbar}, % optional 2/2
]{mystyle}
\makeatother

\declaretheorem[title=Definition, within=section, style=mystyle]{defi}

\usepackage{makeidx}
\makeindex
\usepackage{lipsum} % Dummy-Text
\begin{document}
\section{Definitions in the First Section}
\noindent Here comes a definition. 
\begin{defi}[Definition to Index]
\lipsum[66]
\end{defi}

% Does not work
%\begin{defi}[Definition not to Index \ToIndexfalse]
%\lipsum[66]
%\end{defi}

\printindex
\end{document}

答案1

您应该知道,它\NOTE不仅包含注释文本,还包含其他几个标记。

我建议采用不同的方法。环境被定义为使用内部定理类环境;因此它可以检查可选参数;如果它以 开头*,则不会对条目进行索引。

我还修复了你对定理风格的定义。

\documentclass{scrartcl}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{xparse}
\usepackage{makeidx}
\usepackage{lipsum} % Dummy-Text

\makeindex

\makeatletter
\newcommand{\emptythmtspace}{\let\thmt@space\@empty}
\makeatother

\declaretheoremstyle[
  notebraces={(}{)},
  headpunct={\normalfont.\hspace{1.5em}},
  notefont=\normalfont,
  headformat=\NAME\ \NUMBER\NOTE,
]{mystyle}

\declaretheorem[title=Definition, within=section, style=mystyle]{defiinner}

\ExplSyntaxOn
\NewDocumentEnvironment{defi}{o}
 {
  \IfNoValueTF{#1}
   {
    \defiinner
   }
   {
    \str_if_eq:eeTF { \tl_head:n { #1 } } { * }
     {
      \defiinner[\tl_tail:n { #1 }]
     }
     {
      \defiinner[#1]\index{#1}
     }
   }
 }
 {\enddefiinner}

\ExplSyntaxOff

\begin{document}
\section{Definitions in the First Section}

\begin{defi}[Definition to Index]
\lipsum[66]
\end{defi}

\begin{defi}[*Definition not to Index]
\lipsum[66]
\end{defi}

\begin{defi}
\lipsum[66]
\end{defi}

\printindex
\end{document}

在此处输入图片描述

生成的.idx文件仅包含

\indexentry{Definition to Index}{1}

相关内容