如何为目录定义自定义环境标题?

如何为目录定义自定义环境标题?

我想定义一个自定义环境例子。这根本不是问题,我唯一需要注意的是标题(元素下方的简称)及其在目录中的列表,或者更确切地说是“示例列表”。我想要得到这样的标题:

例如<normal-counter>:我的标题

附录中有一个“示例列表”。换句话说,将整个图形内容复制到我的示例环境中。我确信有一个解决方案,并且 tex SE 中也有一个答案,但我找不到它 :-( 谢谢!

附言:我总是喜欢避免使用额外的软件包:-)

答案1

以下是一个执行以下操作的解决方案:

  • 它启动一个新文件,,\jobname.exs用于存储示例的标题;这使用命令\@starttoc
  • 它创建了一个新的环境,example可以用作

    \begin{example}{goes into the list of examples}
        \lipsum[1]
    \end{example}
    

    在这种情况下,参数将写入文件\jobname.exs;或者,您可以使用

    \begin{example}[optional caption]{goes into the list of examples}
    \lipsum[1]
    \end{example}
    

    在这种情况下,遗嘱optional caption写给\jobname.exs

您要求不使用任何包,因此我使用了一个简单的list环境来帮助定义example环境的外观(请参阅琐事清单终极指南),你会注意到有一个检查来判断是否#1为空,使用\ifx\\#1\\详细说明检查空的宏参数以及其中的链接。

example如果你稍后改变主意并想要加载一个包来帮助它,可以很容易地调整环境,例如ntheoremamsthmmdframedtcolorbox等等,但目前它看起来是这样的:

截屏

这是完整的代码 - 使用 编译两次pdflatex,或者使用 运行一次arara它为您完成双重编译。

% arara: pdflatex
% arara: pdflatex
\documentclass{article}
\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

\newcounter{example}
\newenvironment{example}[2][]{\refstepcounter{example}%
            \ifx\\#1\\ % if #1 is empty
      \addcontentsline{exs}{subsection}{\theexample~#2}%
            \else
            \addcontentsline{exs}{subsection}{\theexample~#1}%
            \fi
            \begin{list}{}{% options
        \setlength{\leftmargin}{0mm}%     leftmargin
        \parsep\parskip%                  space between paragraphs within an item
        \setlength{\itemsep}{-\parsep}%   space between items
   }
   \item {\bfseries Example \theexample: ~#2}
   \item}{\end{list}}

\begin{document}

\begin{example}{goes into the list of examples}
\lipsum[1]
\end{example}

\begin{example}[optional caption]{goes into the list of examples}
\lipsum[1]
\end{example}

\appendix
\listofexamples


\end{document}

相关内容