Liste von [newfloat] aus dem Inhaltsverzeichnis entfernen

Liste von [newfloat] aus dem Inhaltsverzeichnis entfernen

Ich verwende das Paket newfloat und habe eine neue Abbildung hinzugefügt:

\DeclareFloatingEnvironment{dirfigure}

Wenn ich jetzt \listofdirfigures- verwende, wird die Liste zum Inhaltsverzeichnis hinzugefügt.

Bei normalen Abbildungen kann ich \listoffigures*(mit *) verwenden, um sie nicht im Inhaltsverzeichnis aufzuführen. \listofdirfigures*Das funktioniert jedoch nicht.

Wie kann ich die Liste der Verzeichnisfiguren nicht im Inhaltsverzeichnis auflisten?

Minimalbeispiel:

\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}

Danke

Antwort1

Als Referenz, der memoireinzige Weg:

\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}

Antwort2

Wenn Sie dies mit tun möchten \newfloat, gibt es hier eine Möglichkeit, die gleiche Funktionalität wie die Listendruckmakros von zu erhalten 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}

Wenn Sie \listofdirfigureses ohne verwenden *, wird die Liste in das Inhaltsverzeichnis aufgenommen.

Dies funktioniert, indem die Tatsache ausgenutzt wird, dass die letzten Befehle, die ausgeführt werden, wenn \listofdirfiguresaufgerufen wird, (in einer Gruppe) sind.

\newfloat@listofdirfigure@hook\listoffigures

aber das newfloatPaket achtet darauf, die Dinge neu zu definieren, damit \listoffiguresdas Richtige passiert. Der Hook ist normalerweise leer, aber das ist irrelevant. Ich definiere \listofdirfigures(oder besser die alternative Version, die aufgerufen wird \listofdirfigure) neu, um nach einem folgenden zu suchen *; in diesem Fall füge ich \append@staran den Hook an, damit TeX schließlich sieht

\append@star\listoffigures

Falls \listofdirfigures*aufgerufen wird, wird dies \listoffigures*wie gewünscht durchgeführt. Falls kein *angezeigt wird, wird nichts geändert.

Ich habe ein \AdjustForMemoirMakro bereitgestellt, sodass jeder neue Befehl zum Erstellen einer Float-Liste auf diese Weise geändert werden kann.

Antwort3

Mit Commit behobenhttps://gitlab.com/axelsommerfeldt/caption/commit/5584091f13a4d63c5245b4d8b0e9ac0171c85436

Ich werde heute eine neue Version des "Caption Package Bundle" auf CTAN hochladen. In der Zwischenzeit verwenden Sie bittehttps://gitlab.com/axelsommerfeldt/caption/raw/master/tex/newfloat.styals Ersatz für das alte newfloat.sty.

Übrigens: Bitte melden Sie mir solche Probleme/Codes, damit ich die Chance habe, sie rechtzeitig zu beheben. (Ich habe 5 Jahre gebraucht, um dieses Problem zufällig zu entdecken.)

verwandte Informationen