Starten Sie die Float-Nummerierung mit „endfloat with labels“ neu.

Starten Sie die Float-Nummerierung mit „endfloat with labels“ neu.

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 postfiguremuss 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

Bildbeschreibung hier eingeben


Bildbeschreibung hier eingeben


Bildbeschreibung hier eingeben

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 .fffDatei 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.

Bildbeschreibung hier eingeben

AKTUALISIEREN

Leider endfloatist 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\writein geändert \immediate\protected@write{}, was falsch ist, weil \immediatees 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}

verwandte Informationen