如何将不是表格或图形的浮点数移动到文档末尾(列表的 endfloat)?

如何将不是表格或图形的浮点数移动到文档末尾(列表的 endfloat)?

我用endfloat将所有图形和表格移至文档末尾。我想将相同的操作应用于文档中的其他浮点数,例如listing环境。

我可以使用一些技巧来endfloat为他们工作吗?或者我可以使用其他东西吗?

编辑

根据第 8.3 条endfloat 包文档,

诀窍是使用命令

\DeclareDelayedFloat{⟨float⟩}[⟨file extension⟩]{⟨heading⟩}

这使得 endfloat 包知道新的浮动环境

lstlisting但这似乎对浮点数不起作用。

答案1

我认为我已经找到了一个可能的解决方案

首先解释一下:

\DeclareDelayedFloat{⟨float⟩}[⟨文件扩展名⟩]{⟨heading⟩}

这个来自包的命令为除标准环境以外endfloat的浮动环境准备包,例如figuretable

\DeclareDelayedFloat{exercise}{fexe}{List of Exercises}

它要求(参见 的第 350 行及后续行endfloat.sty)有一个listofexercises命令。

嗯,这就是

\DeclaredDelayedFloat{lstlisting}{flol}{List of Listings}

失败:

没有\listoflstlistings命令;-)

它被称为lstlistoflistings。线索就是说

\newcommand\listoflstlistings}{\lstlistoflistings}%

\documentclass[12pt]{book}

\usepackage{listings}
\usepackage{blindtext} % Just for dummy content
% use \usepackage[nomarkers]{endfloat} to drop the markers in the text
\usepackage{endfloat}  

%%% \DeclareDelayedFloat looks for the \listoflstlistings command
%%% since it is assumed, that there is an associate command for the list of listings
%%% 'environment' lstlistings as given to \DeclareDelayedFloat ---> listoflstlistings.
%%% However, `listings` uses \lstlistoflistings, so define this new command
%%% to make \DeclareDelayedFloat happy. 
\newcommand{\listoflstlistings}{\lstlistoflistings}%

% Change `List of Listings` as third argument at will.
\DeclareDelayedFloat{lstlisting}[flol]{\textbf{List of Listings}}

\begin{document}

\chapter{First content}


\blindtext

\begin{lstlisting}[language=C,float=t,caption={Hello World - a famous example}]
#include <stdio.h>

int main(int argc, char **argv)
{
  printf("Hello World\n");
  return(EXIT_SUCCESS);
}
\end{lstlisting}

\blindtext

\begin{lstlisting}[language=C++,float=t,caption={Hello World - a famous example, again}]
#include <iostream>

int main(int argc, char **argv)
{
  cout << "Hello World" << std::endl;
  return(EXIT_SUCCESS);
}
\end{lstlisting}

\end{document}

在此处输入图片描述

如果您现在对\listof和感到困惑\lstlisting\listoflstlistings......我知道您的意思;-)

文件版本:

末端浮动:

\def\filename{endfloat}
\def\fileversion{v2.5d}
\def\filedate{2011/12/25}
\def\docdate{2011/12/05}

列表:

\def\filedate{2014/03/04}
\def\fileversion{1.5c}

所以,listings是相当新的。

答案2

当依赖 lstlisting 的浮动命令时,Christians 的解决方案非常棒。

但我想使用标题和浮动包来更改我的所有浮动。表格、图形、列表等等。

因此基于和基督徒的杰出发现我得出了以下结论:

\documentclass[12pt]{scrbook}

\usepackage{listings}
\usepackage{blindtext} % Just for dummy content
\usepackage{endfloat}  
\usepackage{tocloft}
\usepackage{float}

%%% Declare new float environment for Listings
\newcommand{\listofsnippetname}{List of Listings}
\newlistof{snippet}{lol}{\listofsnippetname}
\newfloat{snippet}{thp}{lol}[chapter]
\floatname{snippet}{Listing}
\newcommand{\snippetautorefname}{Listing}
\renewcommand{\thesnippet}{\thechapter.\arabic{snippet}}

%%% \DeclareDelayedFloat looks for the \listofsnippets command
\newcommand{\listofsnippets}{\listofsnippet}

%%% This makes endfloat aware of the snippet floats
\DeclareDelayedFloat{snippet}[flol]{List of Listings}

\begin{document}

\chapter{First content}

\blindtext

\begin{snippet}
\begin{lstlisting}[language=C]
#include <stdio.h>

int main(int argc, char **argv)
{
  printf("Hello World\n");
    return(EXIT_SUCCESS);
    }
\end{lstlisting}
\caption[Hello World]{The usual example.}
\label{lst:helloworld}
\end{snippet}

\end{document}

相关内容