![Удалить список [newfloat] из TOC](https://rvso.com/image/290208/%D0%A3%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA%20%5Bnewfloat%5D%20%D0%B8%D0%B7%20TOC.png)
Я использую пакет newfloat и добавил новую фигуру:
\DeclareFloatingEnvironment{dirfigure}
Теперь, когда я использую \listofdirfigures
- список добавляется в Оглавление.
С обычными цифрами я могу использовать \listoffigures*
(с *
), чтобы не указывать их в оглавлении, однако \listofdirfigures*
это не работает.
Как не указывать список цифр в оглавлении?
Минимальный пример:
\documentclass[a4paper,twoside]{memoir}
\usepackage{newfloat}
\DeclareFloatingEnvironment{dirfigure}
\begin{document}
\tableofcontents*
\listoffigures*
\listofdirfigures
\chapter{bah}
\begin{dirfigure}
bah
\caption{bah}
\end{dirfigure}
\begin{figure}
bah
\caption{bah}
\end{figure}
\end{document}
Спасибо
решение1
Для справки, memoir
единственный способ:
\documentclass[a4paper,twoside]{memoir}
\newfloat[chapter]{dirfigure}{dirf}{Dirfigure}
\newlistof{listofdirfigures}{dirf}{List of Dirfigures}
\newlistentry[chapter]{dirfigure}{dirf}{0}
\cftsetindents{dirfigure}{0em}{2.3em}
\begin{document}
\tableofcontents*
\listoffigures*
\listofdirfigures*
\chapter{bah}
\begin{dirfigure}
bah
\caption{bah}
\end{dirfigure}
\begin{figure}
bah
\caption{bah}
\end{figure}
\end{document}
решение2
Если вы хотите сделать это с помощью \newfloat
, вот способ получить ту же функциональность, что и макросы печати списка memoir
:
\documentclass[a4paper,twoside]{memoir}
\usepackage{etoolbox}
\usepackage{newfloat}
\makeatletter
%% we define a helper macro for adjusting lists of new floats to
%% accept a * behind them for not being shown in the TOC, like
%% the other list printing commands in memoir
\newcommand{\AdjustForMemoir}[1]{%
\csletcs{kept@listof#1}{listof#1}%
\csdef{listof#1}{%
\@ifstar
{\csappto{newfloat@listof#1@hook}{\append@star}%
\csuse{kept@listof#1}}%
{\csuse{kept@listof#1}}%
}
}
\def\append@star#1{#1*}
\makeatother
\DeclareFloatingEnvironment{dirfigure}
\AdjustForMemoir{dirfigure} % prepare `\listofdirfigures` so it accepts a *
\begin{document}
\tableofcontents*
\listoffigures*
\listofdirfigures*
\chapter{bah}
\begin{dirfigure}
bah
\caption{bah}
\end{dirfigure}
\begin{figure}
bah
\caption{bah}
\end{figure}
\end{document}
Если вы используете \listofdirfigures
без *
, список будет добавлен в оглавление.
Это работает, используя тот факт, что последние команды, выполненные при \listofdirfigures
вызове, находятся (в группе)
\newfloat@listofdirfigure@hook\listoffigures
но newfloat
пакет заботится о том, чтобы переопределить вещи так, чтобы они \listoffigures
делали правильно. Хук обычно пуст, но это не имеет значения. Я переопределяю \listofdirfigures
(или лучше, альтернативную версию, которая называется \listofdirfigure
) для поиска следующего *
; в этом случае я добавляю \append@star
к хуку, так что TeX в конечном итоге увидит
\append@star\listoffigures
в случае \listofdirfigures*
вызова; это станет \listoffigures*
желаемым. В случае *
появления no ничего не меняется.
Я предоставил \AdjustForMemoir
макрос, чтобы каждая новая команда создания списка с плавающей точкой могла быть изменена таким образом.
решение3
Исправлено с помощью коммитаhttps://gitlab.com/axelsommerfeldt/caption/commit/5584091f13a4d63c5245b4d8b0e9ac0171c85436
Сегодня я выложу новую версию «пакета субтитров» на CTAN; а пока, пожалуйста, используйтеhttps://gitlab.com/axelsommerfeldt/caption/raw/master/tex/newfloat.styкак замена старому newfloat.sty.
Кстати: Пожалуйста, сообщайте мне о таких проблемах/коде, чтобы у меня была возможность исправить их вовремя. (Мне потребовалось 5 лет, чтобы случайно обнаружить эту проблему.)