endfloat를 사용하지 않고 모든 부동 소수점을 문서 끝으로 강제 이동

endfloat를 사용하지 않고 모든 부동 소수점을 문서 끝으로 강제 이동

모든 부동 소수점을 페이지당 하나씩 문서 끝 부분에 강제로 표시하는 가장 쉬운 방법은 무엇입니까? 패키지 endfloat는 옵션이 아닙니다. 아래를 참조하세요. 다음 질문은 관련이 있지만 도움이 되지 않습니다.

문서의 특정 지점에 모든 부동 소수점(특히 테이블)을 배치하는 방법

번호 매기기를 변경하지 않고 모든 부동 소수점을 마지막에 배치

세부

우리 환경에는 그림, 표 등을 생성하기 위한 래퍼가 있습니다. 래퍼는 내부의 "모든 것"을 허용하고 더 나아가 그림의 길고 짧은 캡션 이름, 레이블 및 내용을 허용하는 환경으로 구현됩니다. 래퍼의 구현은 다양한 문서 레이아웃(위/아래 캡션, 예/아니요 규칙으로 구분된 그림 등)에 따라 변경될 수 있습니다.

특정 레이아웃에서는 각 그림을 기본 문서 뒤의 별도 페이지에 배치해야 합니다.

자신의 시도

패키지 endfloat가 떠오릅니다. 그러나 그림은 래퍼에 의해 생성되므로 작동시키지 못했습니다.

나는 이것을 사용하여 이것을 구현하려고 시도했습니다 \gappto. 그림 생성 명령은 직전에 실행되는 전역 후크에 추가됩니다 \end{document}. 이는 그림 생성 래퍼가 단순한 명령이었을 때 작동했지만 이제는 내부에 "모든 것"을 허용하는 환경입니다. 아래 MnWE에 시도를 추가했지만 다음과 같은 오류 메시지가 나타납니다.

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

l.39       \end{richfigure}

이것을 어떻게 구현하겠습니까?

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}

답변1

다음은 floatcheck를 수정하고 [p]를 배치로 사용하는 예입니다. 부동 항목은 섹션 끝에 페이지당 하나씩 나타납니다.

\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}

관련 정보