¿Cuál es la forma más sencilla de hacer que todos los flotadores aparezcan a la fuerza al final del documento, uno por página? El endfloat
paquete no es una opción, ver más abajo. Las siguientes preguntas están relacionadas pero no son útiles:
Cómo colocar todos los flotadores (tablas en particular) en un punto determinado del documento
Coloque todos los flotadores al final sin cambiar la numeración.
Detalles
En nuestro entorno disponemos de wrappers para crear figuras, tablas etc. Los wrappers se implementan como entornos para permitir el interior de "todo" y además aceptan, entre otros, el nombre del título largo y corto, la etiqueta y el contenido de la figura. La implementación de los contenedores se puede modificar para diferentes diseños de documentos (título arriba/abajo, figura separada por regla sí/no, ...).
Un diseño particular requiere que cada figura se coloque en una página separada después del documento principal.
Intentos propios
Me viene a la mente el endfloat
paquete. Sin embargo, no pude hacerlo funcionar, ya que las figuras se crean mediante un envoltorio.
Intenté implementar esto usando \gappto
: El comando de creación de figuras simplemente se agregaría a un enlace global que se ejecuta justo antes \end{document}
. Esto funcionó cuando el contenedor de creación de figuras era solo un comando, pero ahora es un entorno que permite que "todo" entre. Agregué mi intento al MnWE a continuación, pero esto genera el siguiente mensaje de error:
! Extra }, or forgotten \endgroup.
\environment_richfigure_end_aux:w ...gure}\egroup
l.39 \end{richfigure}
¿Cómo implementarías esto?
MnWE
\documentclass{scrartcl}
\pagestyle{empty}
\usepackage{caption}
\usepackage{xparse}
\usepackage{etoolbox}
\newcommand{\delayedfigures}{}
% Comment the following line to get working code
\newcommand{\dofigure}[1]{\gappto{\delayedfigures}{\clearpage#1}}
% The example works with the default implementation of \dofigure
\providecommand{\dofigure}[1]{#1}
%% \begin{richfigure}
%% [<placement>, e.g. htp (h=here, t=top, p=page)]
%% {<short caption>}
%% {<long caption>}
%% {<\label{label}>}
%% <\includegraphics[...]{figure}>
%% \end{richfigure}
\NewDocumentEnvironment{richfigure}{O{tbp} m m m}{%
\dofigure\bgroup%{%
\begin{figure}[#1]%
\caption[#2]{#3}#4%
}{% Here, the contents of the environment are placed
\end{figure}%
\egroup%{
}
\gpreto{\enddocument}{\delayedfigures}
% Usage example
\begin{document}
Main document contents.
\begin{richfigure}{Short caption}{Long caption}{\label{fig:1}}
Figure contents.
\end{richfigure}
All figures are to appear on separate pages, one per page.
\end{document}
Respuesta1
Aquí hay un ejemplo que modifica el floatcheck y usa [p] como ubicación. Las carrozas aparecen al final de las secciones, una por página.
\documentclass{scrartcl}
\pagestyle{empty}
\usepackage{caption}
\usepackage{lipsum}
\makeatletter
\def \@largefloatcheck{\ht\@currbox 0.5\textheight}
\makeatother
\begin{document}
\section{baz}
Main document contents.
\lipsum
\begin{figure}[p]
\centerline{ Figure contents. }
\caption[Short caption]{Long caption of fig 1}\label{fig:1}
\end{figure}
\lipsum
All figures are to appear on separate pages, one per page.
\lipsum
\section{foo}
\lipsum
\begin{figure}[p]
\centerline{ Figure contents. }
\caption[Short caption]{Long caption of fig 2}\label{fig:2}
\end{figure}
\lipsum
\end{document}