Создайте ToC (оглавление) для теорем книги bookdown

Я хотел бы создать список, похожий на ToC (оглавление), для всех теорем в книге в формате PDF. Кажется, вопрос похож на то, как создать указатель определений. / теоремы в конце книжной книги, но я хочу вставить оглавление теорем сразу после оглавления глав и перед основной частью. Кроме того, нужны номера страниц.

В сообществе TeX есть несколько подсказок:

Используя ближайший ответ среди них, я мог получить несовершенный список теорем, похожий на ToC. Мой воспроизводимый мини-пример выглядит следующим образом и включает три файла.

индекс.Rmd:

--- 
title: "A Minimal Book Example"
site: bookdown::bookdown_site
documentclass: book
output:
  bookdown::pdf_book:
    includes:
      in_header: preamble.tex
      before_body: before_body.tex
    latex_engine: xelatex
    keep_tex: yes
---

# Prerequisites

```{block, type='tip', name = 'My Important Tip'}
This is Tip One.
```

```{lemma}
This is Lemma One.
```

```{example}
This is Example One.
```

preamble.tex:

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


\theoremstyle{mystyle}
\newtheorem{tip}{Tip}[chapter]

% toc of tips
\makeatletter
\newcommand\tipname{Tip}
\newcommand\listtipname{List of Tips}
\newcommand\listoftips{
    \section*{\listtipname}\@starttoc{def}}
\makeatother

перед_телом.tex:

\listoftips

После того, как книга была создана, я был рад увидеть список советов с номерами страниц в формате pdf:

введите здесь описание изображения

Однако возникли две проблемы:

  1. В таблице были перечислены не только блоки-концы, но и леммы в моей книге. Как я мог исключить леммы из таблицы?

  2. Заголовок должен быть Tip 1.1: My Important Tip. Как я могу отобразить заголовок My Important Tip в списке?

Еще один неважный вопрос: у меня есть среда «Пример» в мини-примере. Почему лемма 1 в списке советов, а пример 1 нет? Что мне делать, если я хочу создать список советов, список лемм и список примеров по отдельности?

Я думаю, что я довольно близок к решению, но я просто не знаю, как сделать шаг вперед.

Обновлять:

Я только что обнаружил, что следующие коды в файле .tex могут передавать заголовок подсказки «Мой важный совет» в ToC:

\begin{tip}[My Important Tip]
This is Tip One.
\end{tip}

Это приведет к Tip 1.1 (My Important Tip) в оглавлении советов. Как я могу указать это в блоке вязания? name = 'My Important Tip' не работает.


person pzhao    schedule 01.11.2017    source источник