为 \newtheoremstyle 创建列表

为 \newtheoremstyle 创建列表

我想创建一个类似于图列表的定理列表,但找不到解决我的问题的包或教程。我试过这个http://texblog.org/2008/07/13/define-your-own-list-of/但无法让它工作:-/

这是“我的”定理风格:

\usepackage{amsthm}
\newtheoremstyle{mystyle}
  {\topsep}
  {\topsep}
  {}
  {}
  {\bfseries}
  {:}
  {\newline}
  {\thmname{#1}\thmnumber{ #2}\thmnote{ (#3)}}
\theoremstyle{mystyle}
\newtheorem{mydef}{Definition}

答案1

下面是使用内核命令的不同方法\@starttoc(新列表中的条目格式化为中的标准子部分article,但可以轻松修改):

\documentclass{article}
\usepackage{amsthm}
\usepackage{etoolbox}
\usepackage{lipsum}% just to generate text

\usepackage{amsthm}
\newtheoremstyle{mystyle}
  {\topsep}{\topsep}{}{}{\bfseries}{:}{\newline}
  {\thmname{#1}\thmnumber{ #2}\thmnote{ (#3)}%
     \ifstrempty{#3}%
      {\addcontentsline{def}{subsection}{#1~\themydef}}%
      {\addcontentsline{def}{subsection}{#1~\themydef~(#3)}}}

\theoremstyle{mystyle}
\newtheorem{mydef}{Definition}

\makeatletter
\newcommand\definitionname{Definition}
\newcommand\listdefinitionname{List of Definitions}
\newcommand\listofdefinitions{%
  \section*{\listdefinitionname}\@starttoc{def}}
\makeatother

\begin{document}

\listofdefinitions

\begin{mydef}[A note]
\lipsum[2]
\end{mydef}

\begin{mydef}
\lipsum[2]
\end{mydef}

\begin{mydef}
\lipsum[2]
\end{mydef}

\end{document}

在此处输入图片描述

答案2

这是一个解决方案,基本上

  • contents在文件中添加一行\jobname.prb
  • 使用命令读取该文件\listmytheorems

我使用这个扩展.prb只是因为我在以前的工作中使用过

自定义环境列表(每个部分)

我使用了etoolbox提供许多命令的命令 - 唯一与我的代码相关的命令是\ifstrempty

在此处输入图片描述

\documentclass{article}

\usepackage{amsthm}     % for theorems
\usepackage{lipsum}     % for sample text
\usepackage{etoolbox}   % \ifstrempty (and more)

% enable the \jobname.prb file
% (hacked from the ntheorem package)
\makeatletter%
\def\prb@enablelistofproblems{%
\begingroup%
\if@filesw%
\expandafter\newwrite\csname tf@prb\endcsname%
\immediate\openout \csname tf@prb\endcsname \jobname.prb\relax%
\fi%
\@nobreakfalse%
\endgroup}%

% enable the \jobname.prb files at the end
% of the document
\AtEndDocument{\prb@enablelistofproblems}%
\makeatother%

\newread\File
\def\listmytheorems{%
% open the \jobname.prb and read the contents
\par%
\openin\File=\jobname.prb%
\loop\unless\ifeof\File%
\read\File to\fileline%
\fileline%
\repeat%
\closein\File%
}%

% your theorem- with some tweaks
\newtheoremstyle{mystyle}
  {\topsep}
  {\topsep}
  {}
  {}
  {\bfseries}
  {:}
  {\newline}
  {\thmname{#1}\thmnumber{ #2}\thmnote{ (#3)}%
        \ifstrempty{#3}{\addcontentsline{prb}{section}{#1 \themydef}}{\addcontentsline{prb}{section}{#1 \themydef~(#3)}}
            }
\theoremstyle{mystyle}
\newtheorem{mydef}{Definition}

\begin{document}

\subsection*{List of my definitions}
\listmytheorems

\begin{mydef}[description goes here]
\lipsum[1]
\end{mydef}

\begin{mydef}
\lipsum[1]
\end{mydef}

\begin{mydef}
\lipsum[1]
\end{mydef}

\begin{mydef}
\lipsum[1]
\end{mydef}

\begin{mydef}
\lipsum[1]
\end{mydef}

\begin{mydef}
\lipsum[1]
\end{mydef}

\end{document}

相关内容