
Ich muss die Nummerierung der Abbildungen im Anhang neu starten, sodass die Abbildungen 1, 2, … und dann S1, S2, … sind. Leider kann ich nicht herausfinden, wie ich „endfloat“ auf die beiden Abbildungsgruppen unterschiedlich beziehen kann. Ich möchte, dass Folgendes passiert wie im folgenden Code (ohne „endfloat“):
\documentclass{article}
\usepackage[draft]{graphicx}
% \usepackage{endfloat}
\begin{document}
As we see in figure \ref{fig1} (and also in supplemental figure \ref{figS1}) \ldots
\begin{figure}
\includegraphics{fig1}
\caption{ One. } \label{fig1}
\end{figure}
\clearpage
\renewcommand{\thefigure}{S\arabic{figure}}
\setcounter{figure}{0}
\begin{figure}
\includegraphics{figS1}
\caption{ Supplement, one. } \label{figS1}
\end{figure}
\end{document}
... aber das Entfernen des Kommentars bei endfloat (und das Löschen temporärer Dateien) führt dazu, dass sich der Text und die Abbildungsliste auf S1 und S2 (statt auf 1 und S1) und die anderen [Figure X about here]
auf 1 und 2 beziehen.
Antwort1
Der Zähler postfigure
muss auch wie folgt zurückgesetzt werden:
\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage[nofiglist]{endfloat}
\begin{document}
\listoffigures
\clearpage
\section{Test}
As we see in figure \ref{fig1} (and also in supplemental figure \ref{figS1}) \ldots
\begin{figure}
\includegraphics{fig1}
\caption{ One. } \label{fig1}
\end{figure}
\processdelayedfloats
\clearpage
\appendix
\section{Appendix}
\renewcommand{\thefigure}{S\arabic{figure}}
\renewcommand{\thepostfigure}{S\arabic{postfigure}}
\setcounter{figure}{0}
\setcounter{postfigure}{0}
\begin{figure}
\includegraphics{figS1}
\caption{ Supplement, one. } \label{figS1}
\end{figure}
\processdelayedfloats
\end{document}
Ausgabe
Antwort2
Der für die Nummerierung „vor Ort“ verwendete Zähler heißt postfigure
, daher sollte auch dieser geändert werden.
Hier ist eine Lösung, die ausnutzt \appendix
. Die Anweisung zum Ändern der Zählerdarstellung und zum Zurücksetzen des Zählers wird in die .fff
Datei geschrieben, sodass sie in Aktion tritt, wenn der eigentliche Zahlensatz stattfindet.
\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{endfloat}
\usepackage{etoolbox}
\makeatletter
\appto{\appendix}{%
\renewcommand{\thepostfigure}{S\arabic{postfigure}}%
\setcounter{postfigure}{0}%
\efloat@iwrite{fff}{%
\unexpanded{%
\renewcommand{\thefigure}{S\arabic{figure}}^^J%
\setcounter{figure}{0}^^J%
}%
}%
}
\makeatother
\begin{document}
As we see in figure \ref{fig1} (and also in supplemental figure \ref{figS1}) \ldots
\begin{figure}
\includegraphics{fig1}
\caption{One.} \label{fig1}
\end{figure}
\clearpage % not necessary, just to make the figure go to the next page
\appendix
\begin{figure}
\includegraphics{figS1}
\caption{Supplement, one.} \label{figS1}
\end{figure}
\renewcommand{\thefigure}{\arabic{figure}}
\end{document}
Zur Erstellung des Bildes wurde die Seitenhöhe künstlich reduziert.
AKTUALISIEREN
Leider endfloat
ist in Version 2.6 ein Fehler aufgetreten, der dazu führt, dass es nicht wie erwartet funktioniert und der obige Code beschädigt wird. Das Paket wurde \immediate\write
in geändert \immediate\protected@write{}
, was falsch ist, weil \immediate
es in dieser Situation nicht funktionieren kann.
Aktualisierter Code:
\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{endfloat}
\usepackage{etoolbox}
\makeatletter
% fix the wrong code in endfloat.sty
\@ifundefined{protected@iwrite}{%
\let\protected@iwrite\protected@write
\patchcmd{\protected@iwrite}{\write}{\immediate\write}{}{}%
\def\efloat@iwrite#1{\expandafter\protected@iwrite\csname efloat@post#1\endcsname{}}%
}{}
% double 'unexpansion' now is needed
\appto{\appendix}{%
\renewcommand{\thepostfigure}{S\arabic{postfigure}}%
\setcounter{postfigure}{0}%
\efloat@iwrite{fff}{%
\unexpanded{\unexpanded{%
\renewcommand{\thefigure}{S\arabic{figure}}^^J%
\setcounter{figure}{0}^^J%
}}%
}%
}
\makeatother
\begin{document}
As we see in figure \ref{fig1} (and also in supplemental figure \ref{figS1}) \ldots
\begin{figure}
\includegraphics{fig1}
\caption{One.} \label{fig1}
\end{figure}
\clearpage % not necessary, just to make the figure go to the next page
\appendix
\begin{figure}
\includegraphics{figS1}
\caption{Supplement, one.} \label{figS1}
\end{figure}
\renewcommand{\thefigure}{\arabic{figure}}
\end{document}