该thmtools
包提供了一个\listoftheorems
生成定理/定义/等的列表的命令。
以下是 MWE:
\documentclass[12pt]{article}
\usepackage{amsthm,thmtools}
\newtheorem{thm}{Theorem}[section]
\newtheorem{defn}{Definition}[section]
\renewcommand{\listtheoremname}{List of definitions}
\begin{document}
\listoftheorems[ignoreall,show={defn}]
\section{First Section}
\begin{defn}[Some definition]
definition text
\end{defn}
\section{Second Section}
\begin{thm}[Some Theorem]
theorem text
\end{thm}
\section{Third Section}
\begin{defn}[Another definition]
definition text
\end{defn}
\begin{defn}
definition without title
\end{defn}
\begin{thm}
theorem without title
\end{thm}
\end{document}
问题:我想在定义列表。期望的效果大致如下:
1. 第一部分
1.1 定义(一些定义)..................................... 1
3. 第三部分
3.1 定义(另一种定义)..................................... 1
3.2 定义................................................................ 1
我一直在尝试采纳这个优秀的答案,但收效甚微。建议的解决方案是对注释文件中章节分隔符的命令etoolbox
进行修补(通过);困难在于没有用于注释章节的等效命令。查看\thmtlo
thmtools
.loe
\thmtools
\thmtools
文档,相关命令定义在第 29 页第 770 行。我天真的尝试模拟 MWE 序言中的那块代码,其中我基本上只是用“section”替换每个出现的“chapter”;即包括以下代码:
\makeatletter
\def\thmtlo@oldsection{0}%
\newcommand\thmtlo@sectionvspacehack{}
\ifcsname c@section\endcsname
\ifx\c@section\relax\else
\def\thmtlo@sectionvspacehack{%
\ifnum \value{section}=\thmtlo@oldsection\relax\else
\addtocontents{loe}{\protect\thmlopatch@endsection\protect\thmlopatch@section{\thesection}}%
\xdef\thmtlo@oldsection{\arabic{section}}%
\fi
}%
\fi
\fi
\makeatother
遗憾的是,这根本不起作用,因为.loe
文件保持不变。
答案1
如果您仍在尝试解决这个问题,我找到了一种方法。
首先,在 thm-listof.sty 文件中,您必须注释掉此行:
\addtocontents{loe}{\protect\addvspace{10\p@}}%
然后,使用 etoolbox(可能还有一些我忘记的其他包),将其添加到 .tex 文件的标题中:
\makeatletter
\def\thischaptertitle{}\def\thischapternumber{}
\newtoggle{nothms}
\apptocmd{\@chapter}%
{\gdef\thischaptertitle{#1}\gdef\thischapternumber{\thechapter}%
\global\toggletrue{nothms}}{}{}
\AtBeginDocument{%
\AtBeginEnvironment{definition}{%
\iftoggle{nothms}{
\addtocontents{lof}{\protect\contentsline {chapter}%
{\protect\numberline {\thischapternumber} {\thischaptertitle}}{}{} }
\global\togglefalse{nothms}
}{}
}%
}
\makeatother
只要章节中的第一个条目是定义,这种方法就行得通。一旦我写完论文,我可能会添加一个可行的示例。