我想将注释 \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}