定制的‘...列表’

定制的‘...列表’

我正在使用科文顿包裹管理我的示例。我现在想在图表列表之后创建示例列表。有什么方法可以做到吗?

例子的例子:

\begin{examples}
\item blabla
\end{examples}

答案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唯一其他命令的重新定义。covingtonequation

最后,记得对这样的文件运行两次 latex 以获得示例列表中的正确编号。

答案2

这是一个解决方案,它使用 来\@starttoc启动一个新文件\jobname.exs,该文件存储contentsline有关exampleexamples环境的信息。我借鉴了一些想法为 \newtheoremstyle 创建列表

我用过etoolbox附加\item关于 的关键部分\addcontentsline,但只有当它在exampleexamples环境中时(我们不希望它发生在另一个列表内,例如enumerateitemize等),因为两者都是根据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}

相关内容