TOC에서 [newfloat] 목록 제거

TOC에서 [newfloat] 목록 제거

newfloat 패키지를 사용하고 있으며 새 그림을 추가했습니다.

\DeclareFloatingEnvironment{dirfigure}

이제 사용하면 \listofdirfigures목록이 목차에 추가됩니다.

일반 수치에서는 \listoffigures*​​(with *)를 사용하여 TOC에 나열하지 않을 수 있지만 \listofdirfigures*작동하지 않습니다.

TOC에 DirFigure 목록을 나열하지 않는 방법은 무엇입니까?

최소한의 예:

\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(또는 이라는 대체 버전을 재정의하는 것이 더 좋습니다 ) ; 이 경우에는 후크에 추가하므로 TeX는 결국 다음을 보게 될 것입니다.\listofdirfigure*\append@star

\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년이 걸렸습니다.)

관련 정보