强制浮动至 PDF 末尾,但保留每章的编号(两个版本的 PDF 文档)

强制浮动至 PDF 末尾,但保留每章的编号(两个版本的 PDF 文档)

我有很多浮点型的图表,LaTeX 会将它们放在 PDF 中的合适位置。但是,如果我能制作同一篇文本的第二个 PDF 版本,文本中不包含图表,所有图表都放在单独的文档中,那么对我的学生来说,这真是太好了。为什么?

  • 图形是彩色的,因此学生可以使用质量更好的打印机打印这些图形。
  • 此外,在学习时,有些学生更喜欢将图表与正文分开,因为我经常引用比正文中第二或第三个引用早几页的图表。当然,编号(如“图 2.1”)应保持不变,因此文档的两个版本中的编号应保持不变。

我尝试使用 endfloat,将所有浮点数推到末尾,但这样所有数字都以最后一章的编号开头(例如 2.1,而原来的编号是 1.1)。在下面的例子中,生成了“第一个版本”(没问题):LaTeX 将图形放置在文本中,这种放置方式没问题。

我正在尝试制作第二个版本,只需取消注释示例中注释的两行即可。然后您会看到,图形实际上按预期被推到了末尾,但数字发生了变化(这是不希望的,因为与第一个版本不同)。

\documentclass[a4paper,oneside,dutch]{book} 

%\usepackage[nomarkers, nolists]{endfloat} %these two lines should be uncommented
%\renewcommand{\efloatseparator}{\mbox{}} %these two lines should be uncommented

\begin{document}
\chapter{first chapter}
\section{first section}
Some text referring to this figure, with a number that shows the figure belongs to chapter one: fig.~\ref{fig: 050}.
\begin{figure}
\begin{centering}
{\fboxsep 14pt\fbox{}}
\par\end{centering}
\caption{\label{fig: 050}figure in chapter one}
\end{figure}
\section{second section\label{sec:Graad-van-hyperstaticiteit}}
Some other text referring to another figure int the same chapter: fig.~\ref{fig: 052}
\begin{figure}
\begin{centering}
{\fboxsep 14pt\fbox{}}
\par\end{centering}
\caption{\label{fig: 052}another figure in chapter one}
\end{figure}
\chapter{second chapter}
Some text in chapter two, so referring to a fig. with numbering that shows the figure is part of chapter two: fig.~\ref{fig: 054}.
\begin{figure}
\begin{centering}
{\fboxsep 14pt\fbox{}}
\par\end{centering}
\caption{\label{fig: 054}this figure belongs to chapter two}
\end{figure}
\end{document}

有解决方法吗?或者有其他简单的方法来实现这一点?我曾建议使用“预览”,但这似乎并不能完全解决我的问题……或者只是一厢情愿地想要制作两个所需的版本?

答案1

您可以尝试这样的方法(它假定数字确实位于 endfloat 的末尾):

\documentclass{book}
\usepackage{etoolbox}
\usepackage[nomarkers]{endfloat}
\makeatletter
\@ifpackageloaded{endfloat}
{
 \efloat@condopen{fff}
 \pretocmd\@chapter{\immediate\write\efloat@postfff{\noexpand\stepcounter{chapter}}}{}{\fail}
 \AtBeginFigures{\setcounter{chapter}{0}}
}{}
\makeatother
\usepackage{hyperref}
\begin{document}
\chapter{A}
\begin{figure}
\caption{a figure in chapter 1}\label{fig:1}
\end{figure}

\begin{figure}
\caption{a second figure in chapter 1}
\end{figure}

see \ref{fig:1} and \ref{fig:2}

\chapter{B}
\begin{figure}
\caption{a figure in chapter 2}
\end{figure}

\begin{figure}
\caption{a second figure in chapter 2}\label{fig:2}
\end{figure}


\end{document}

相关内容