答案1
example
软件包提供的环境是covington
一个列表环境,其中各个项目通过计数器进行标记equation
。这与此类问题的标准解决方案不太相符:例如thmtools
适用于定理类环境。
下面的代码使用托克洛夫特包。但是,标准设置涉及使用新计数器。我选择更改环境使用的计数器example
,因此这些现在的编号与方程不同。
\documentclass{article}
\usepackage{covington,tocloft}
\newcommand{\listofexamples}{List of Examples}
\newlistof{example}{lex}{\listofexamples}
\newcommand{\lentry}{\addcontentsline{lex}{example}{\protect\numberline{Example
\theexample}}}
\newcounter{examplesave}
\renewenvironment{examples}%
{%
\begin{list}{(\theexample\lentry)}%
{%
\setcounter{examplesave}{\arabic{example}}%
\usecounter{example}%
\setcounter{example}{\arabic{examplesave}}%
\setlength{\listparindent}{0pt}%
\def\makelabel##1{##1\hfil}%
}%
\raggedright}%
{\end{list}}
\renewcommand{\exampleno}{\refstepcounter{example}\theexample}
\begin{document}
\listofexample
\begin{examples}
\item An example
\item Another example
\end{examples}
\clearpage
\begin{example}
Last example
\end{example}
\end{document}
上述代码以标准方式设置示例列表机制tocloft
,然后提供新版本的example
环境,其中equation
计数器在每个实例处被计数器替换example
。标记命令被扩展以通过命令向示例表添加适当的行。我还包含了对包中使用计数器作为示例的 \lentry
唯一其他命令的重新定义。covington
equation
最后,记得对这样的文件运行两次 latex 以获得示例列表中的正确编号。
答案2
这是一个解决方案,它使用 来\@starttoc
启动一个新文件\jobname.exs
,该文件存储contentsline
有关example
和examples
环境的信息。我借鉴了一些想法为 \newtheoremstyle 创建列表
我用过etoolbox
附加\item
关于 的关键部分\addcontentsline
,但只有当它在example
或examples
环境中时(我们不希望它发生在另一个列表内,例如enumerate
、itemize
等),因为两者都是根据list
环境设置的;我已经设置了 来bool
检查我们是否在example
或内examples
。
\documentclass{article}
\usepackage{covington}
\usepackage{etoolbox}
\usepackage{lipsum}% just to generate text
% this sets up \jobname.exs which will store the
% contentslines added on each example or examples
\makeatletter
\newcommand\listexamplename{List of Examples}
\newcommand\listofexamples{%
\section*{\listexamplename}\@starttoc{exs}}
\makeatother
% Note that the example and examples environment are defined
% in terms of a list; we test if we're inside either environment
% by setting up a boolean; note that this boolean will only
% be local to the environment, and will be false outside of it
% so there's no need to make it false again
\newbool{inexamples}
\appto\examples{\setbool{inexamples}{true}}
% This adds a contents line to \jobname.exs
%
% this does it for each \item inside of an examples environment
\appto\item{%
\ifbool{inexamples}{%
% if the \item is inside \begin{examples}, then
% update the example list
\addcontentsline{exs}{subsection}{\theequation}%
}%
{%
% otherwise do nothing
}%
}
\begin{document}
\listofexamples
\begin{equation}
y=mx+c
\end{equation}
\begin{examples}
\item first
\item second
\end{examples}
\begin{example}
\lipsum[2]
\end{example}
\begin{example}
\lipsum[2]
\end{example}
\begin{example}
\lipsum[2]
\end{example}
\end{document}