我用endfloat
将所有图形和表格移至文档末尾。我想将相同的操作应用于文档中的其他浮点数,例如listing
环境。
我可以使用一些技巧来endfloat
为他们工作吗?或者我可以使用其他东西吗?
编辑
根据第 8.3 条endfloat 包文档,
诀窍是使用命令
\DeclareDelayedFloat{⟨float⟩}[⟨file extension⟩]{⟨heading⟩}
这使得 endfloat 包知道新的浮动环境
lstlisting
但这似乎对浮点数不起作用。
答案1
我认为我已经找到了一个可能的解决方案
首先解释一下:
\DeclareDelayedFloat{⟨float⟩}[⟨文件扩展名⟩]{⟨heading⟩}
这个来自包的命令为除标准环境以外endfloat
的浮动环境准备包,例如figure
table
\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}