Я хотел бы создать список, похожий на ToC (оглавление), для всех теорем в книге в формате PDF. Кажется, вопрос похож на то, как создать указатель определений. / теоремы в конце книжной книги, но я хочу вставить оглавление теорем сразу после оглавления глав и перед основной частью. Кроме того, нужны номера страниц.
В сообществе TeX есть несколько подсказок:
- Создание списка для \newtheoremstyle
- ToC-подобный список определений (с использованием среды теоремы)
- Автоматическое создание списка определений (определяемых пользователем среда теоремы) в приложении
Используя ближайший ответ среди них, я мог получить несовершенный список теорем, похожий на 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:
Однако возникли две проблемы:
В таблице были перечислены не только блоки-концы, но и леммы в моей книге. Как я мог исключить леммы из таблицы?
Заголовок должен быть
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'
не работает.