我正在使用 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*
想要的样子。如果未*
出现,则不会发生任何变化。
我提供了一个\AdjustForMemoir
宏,以便每个新的浮点列表制作命令都可以通过这种方式进行修改。
答案3
已提交修复https://gitlab.com/axelsommerfeldt/caption/commit/5584091f13a4d63c5245b4d8b0e9ac0171c85436
我将于今天向 CTAN 推送新版本的“字幕包”;在此期间,请使用https://gitlab.com/axelsommerfeldt/caption/raw/master/tex/newfloat.sty替代旧的 newfloat.sty。
顺便说一句:请向我报告此类问题/代码,以便我有机会及时修复。(我花了 5 年时间才偶然发现这个问题。)