Remover lista de [newfloat] do sumário

Remover lista de [newfloat] do sumário

Estou usando o pacote newfloat e adicionei uma nova figura:

\DeclareFloatingEnvironment{dirfigure}

Agora, quando eu uso \listofdirfigures- a lista é adicionada ao Índice.

Com números normais, posso usar \listoffigures*(with *) para não listá-lo no TOC, porém \listofdirfigures*não funciona.

Como não listar a lista de Dirfigures no TOC?

Exemplo mínimo:

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

Obrigado

Responder1

Para referência, a memoirúnica maneira:

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

Responder2

Se você quiser fazer isso \newfloat, aqui está uma maneira de obter a mesma funcionalidade das macros de impressão de lista de 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}

Se você usar \listofdirfiguressem o *, a lista irá para o TOC.

Isso funciona explorando o fato de que os últimos comandos executados quando \listofdirfiguresé chamado são (em um grupo)

\newfloat@listofdirfigure@hook\listoffigures

mas o newfloatpacote tem o cuidado de redefinir as coisas para que \listoffiguresfaça a coisa certa. O gancho geralmente está vazio, mas é irrelevante. Eu redefino \listofdirfigures(ou melhor, a versão alternativa que é chamada \listofdirfigure) para procurar o seguinte *; neste caso eu acrescento \append@starao gancho, então o TeX eventualmente verá

\append@star\listoffigures

caso \listofdirfigures*seja chamado; isso ficará \listoffigures*como desejado. Caso não *apareça, nada é alterado.

Forneci uma \AdjustForMemoirmacro para que cada novo comando de criação de lista flutuante possa ser modificado dessa forma.

Responder3

Corrigido com commithttps://gitlab.com/axelsommerfeldt/caption/commit/5584091f13a4d63c5245b4d8b0e9ac0171c85436

Enviarei uma nova versão do "pacote de pacotes de legendas" para o CTAN hoje; enquanto isso, por favor usehttps://gitlab.com/axelsommerfeldt/caption/raw/master/tex/newfloat.stycomo substituto do antigo newfloat.sty.

BTW: Por favor, relate esses problemas/código para mim para que eu tenha a chance de corrigi-lo a tempo. (Levei 5 anos para encontrar esse problema por acidente.)

informação relacionada