Forçar todos os carros alegóricos para o final do documento sem usar endfloat

Forçar todos os carros alegóricos para o final do documento sem usar endfloat

Qual é a maneira mais fácil de fazer com que todos os carros alegóricos apareçam à força no final do documento, um por página? O endfloatpacote não é uma opção, veja abaixo. As seguintes perguntas estão relacionadas, mas não são úteis:

Como colocar todos os carros alegóricos (tabelas em particular) em um determinado ponto do documento

Coloque todos os carros alegóricos por último sem alterar a numeração

Detalhes

Em nosso ambiente temos wrappers para criação de figuras, tabelas etc. Os wrappers são implementados como ambientes para permitir "tudo" dentro e além disso aceitam, entre outros, o nome longo e curto da legenda, o rótulo e o conteúdo da figura. A implementação dos wrappers pode ser alterada para diferentes layouts de documentos (legenda acima/abaixo, figura separada por regra sim/não, ...).

Um layout específico exige que cada figura seja colocada em uma página separada após o documento principal.

Próprias tentativas

O endfloatpacote vem à mente. Porém, não consegui fazê-lo funcionar, pois as figuras são criadas por um invólucro.

Eu tentei implementar isso usando \gappto: O comando de criação de figura seria apenas anexado a um gancho global que é executado logo antes \end{document}. Isso funcionou quando o wrapper de criação de figuras era apenas um comando, mas agora é um ambiente para permitir "tudo" dentro. Adicionei minha tentativa ao MnWE abaixo, mas isso resulta na seguinte mensagem de erro:

! Extra }, or forgotten \endgroup.
\environment_richfigure_end_aux:w ...gure}\egroup 

l.39       \end{richfigure}

Como você implementaria isso?

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}

Responder1

aqui está um exemplo que modifica o floatcheck e usa [p] como posicionamento. Os carros alegóricos aparecem no final das seções, um 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}

informação relacionada