すべてのフロートを強制的にドキュメントの最後に表示する最も簡単な方法は何ですか?このソリューションは、htlatex
この場合、フロートはHTML文書の最後に表示されるはずです。(元の質問、endfloat を使用せずにすべてのフロートをドキュメントの末尾に強制します。、htlatex 要件がなく、ソリューションは htlatex では機能しません。それ以外はコピーです。申し訳ありません。元の質問を編集したくなかったのですが、編集できました。
パッケージ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
rigfigure
との組み合わせを使用できます\AtEndDocument
。
\AtEndDocument{\clearpage}
直後の場所\begin{document}
それぞれを包ん
richfigure
で\AtEndDocument{...}