1

I have tried to describe my problem before (Footnotetext jumps back to Forepage for the second paragraph). There for delivering a "MWE" Ulrike Fischer gave me the valuable tip, that normally such mistakes only need a few pages to be reproducible in an MWE -- although changes in the text 100 pages away might let the mistake vanish, as in my attempts before to generate an MWE.

I didn't believe her, as I had tried before -- nevertheless she was right. I still feel ashamed, to call the following an MWE -- but instead of 1020 pages the resulting PDF now only takes 5...

\documentclass[12pt,fleqn,twoside,draft]{report}%
\RequirePackage{xfloat}%
\RequirePackage{xcolor}%
\RequirePackage[ngerman]{babel}%
\RequirePackage{booktabs}%
\RequirePackage{paralist}%
\RequirePackage{mathpazo}%

\newif\ifquotations\quotationstrue%


% Neues Float für Rezepte:
\makeatletter
\newcounter{recipe}% the counter
\renewcommand*\therecipe{\arabic{recipe}}% the default format for the counter
\newcommand*\fps@recipe{tbp}% default floating options
\newcommand*\ftype@recipe{4}% float type number, needs to be a power of 2;
\newcommand*\ext@recipe{lor}% extension of file for the list of recipes
\newcommand*\fnum@recipe{\recipename\nobreakspace\therecipe}% used in caption
\newcommand*\recipename{Rezept}% the name
\newcommand*\listrecipename{Rezepte}% the name of the list
\newenvironment{recipe}{\setlength{\tabcolsep}{0.17em}% Halber Spaltenabstand
    \let\fcolorboxold\fcolorbox%
    \renewcommand\fcolorbox{\setlength{\fboxsep}{8pt}\fcolorboxold}%
    \footnotesize%
    \@float{recipe}%
}%
{\end@float}% the environment
\makeatother

\definecolor{shadecolor}{cmyk}{0,0,0.3,0} % Gelber Hintergrund
    
\setlength\footnotesep{10pt}%

% Weitgehend nach https://tex.stackexchange.com/questions/310103/format-footnotes: Fußnote formatiert als ein \item einer list-Umgebung
\newif\iffootn\footnfalse% Wir befinden uns normalerweise außerhalb einer Fußnote
\makeatletter%
\renewcommand{\@makefntext}[1]{%
    \footntrue% Jetzt befinden wir uns innerhalb einer Fußnote
    \begin{list}{}{\footnotesize}%
        \item[\@makefnmark\hfil]%
        \RaggedRight% Rechts Flattersatz
        #1%
    \end{list}%
}%
\makeatother%

% replaces \markleft, I normally take from a package
\makeatletter%
\providecommand{\markleft}[1]{%
 \begingroup
 \let\label\relax \let\index\relax \let\glossary\relax
 \expandafter\@markleft\@themark {#1}%
 \@temptokena \expandafter{\@themark}%
 \mark{\the\@temptokena}%
 \endgroup
 \if@nobreak\ifvmode\nobreak\fi\fi}
 \providecommand{\@markleft}[3]{\@temptokena {#2}%
 \unrestored@protected@xdef\@themark{{#3}{\the\@temptokena}}}
\makeatother%

%DINA 4:
\setlength{\paperwidth}{210mm}
\setlength{\paperheight}{297mm}

%Satzspiegel
\textwidth 13.5cm
\textheight 21.4cm

% \textheight an ganzzahlige Zeilenanzahl anpassen
\setlength{\dimen0}{\textheight}%
\addtolength{\dimen0}{-\topskip}%
\divide\dimen0\baselineskip%
\setlength{\textheight}{\number\dimen0 \baselineskip}%
\addtolength{\textheight}{\topskip}%

%Position auf dem Blatt
\setlength{\topmargin}{-0.5cm}

%Zeilenabstand
\renewcommand{\baselinestretch}{1.2}

%kompaktere Form der Auflistung:
\newif\ifitemize\itemizefalse% Normalerweise nicht in itemize-Umgebung
\renewenvironment{itemize}%
    {\pagebreak[1]%
        \smallskip%
        \itemizetrue% Jetzt in itemize-Umgebung
        \begin{compactitem}}%
        {\end{compactitem}\smallskip\pagebreak[1]}%


\begin{document}

\section{Nothing}
\newpage
letztlich lohnte sich der Aufwand, denn sie wohnte in der Wohnung über viele Jahrzehnte bis zu ihrem Tod.

Sie bekam wegen ihres Mannes Tod im Krieg eine Hinterbliebenenrente, allerdings bitter wenig. Deswegen arbeitete sie immer wieder, die letzten Jahre in der Uni"=Mensa.

Nachdem sie einen Schlaganfall erlitten hatte, war sie pflegebedürftig. Ihre Tochter Mausi, die abgesehen von einem Engagement als Tänzerin in sehr jungen Jahren und sporadischen Beschäftigungen als Serviererin in ihrem Leben kaum je gearbeitet hatte, übernahm die Pflege und die ihr dafür zustehende staatliche Bezahlung. Leider war Tante Thea eigentlich Frühaufsteherin, kam aber nicht mehr allein aus dem Bett, Mausi dagegen stand normalerweise erst nachmittags auf.

Tante Thea hatte bereits seit den Dreißigerjahren einen Führerschein, nach dem Tod ihres Mannes Karl aber kein Fahrzeug mehr und nutzte daher auch ihren Führerschein nicht mehr. Als Gisela 1982 ihren Führerschein machte, erklärte sie: Nein, angesichts des dichten heutigen Verkehrs würde sie sich nicht mehr trauen zu fahren.

Wie meine Großmutter Emilie kochte auch ihre Schwester Thea noch diverse althergebrachte Gerichte. Ihre Tochter Marion berichtet von
\begin{itemize}
    \item Rhabarbergrütze mit Grießklößen (Rezept~\ref{rec_rhabarber}),
    \item Hamburger Aalsuppe (Rezept~\ref{rec_aal}),
    \item Buchweizengrütze (Rezept~\ref{rec_buchweizen}),
    \item Haferbrei (Rezept~\ref{rec_haferbrei}),
    \item Süßkartoffeln mit Gemüse und Dörrfleisch,
    \item Matjes mit Pellkartoffeln oder Bratkartoffeln,
    \item Kalbsleber mit gebratenen Apfelscheiben und Kartoffelmus,
    \item Schnauze und Pfoten vom Schwein in Sülze mit Bratkartoffeln,
\end{itemize}
\begin{recipe}(caption=outer, align=bottom, width=normal)%
        \fcolorbox{black}{shadecolor}{%
            \begin{tabular}{rlp{0.05\textwidth}rl}
                500\,g & Rhabarber && 0,25\,l & Johannisbeersaft \\
                2\,EL & Speisestärke && 3\,EL & Zucker \\
                \midrule
                \multicolumn{5}{p{0.52\textwidth}}{\emph{%
                        Rhabarber putzen, waschen, klein schneiden, 0,375\,l Wasser mit Saft aufkochen, Rhabarber dazu, etwa 4 Minuten bei kleiner Hitze köcheln. Stärke und 3\,EL Wasser verrühren und zum Rhabarber geben. Mit Zucker abschmecken (etwa 3\,EL) , abkühlen lassen. Grießklößchen nach Rezept~\ref{rec_fliederbeersuppe} auf Seite~\pageref{rec_fliederbeersuppe} hinzugeben. Variationsmöglichkeiten: Zusätzlich Schlagsahne oder Vanillepudding statt Grieß.}}\\
            \end{tabular}
        }% Ende \fcolorbox
    \caption{Rhabarbergrütze mit Grießklößchen oder Vanillepudding (Marion).\label{rec_rhabarber}}
\end{recipe}
%
\begin{recipe}(caption=outer, align=bottom, width=wide)
        \fcolorbox{black}{shadecolor}{%
            \begin{tabular}{rlp{0.05\textwidth}rl}
                2\,l & Fleischbrühe  && 1\,kg & Schinkenknochen o. \\
                & o. Wasser && & geräuch. Rippchen \\
                200\,g & Schinkenschwarte && 350\,g & Dörrobst (Äpfel, \\
                1\,gr. o. 2\,kl. & Bund Suppengrün && & Birnen o. Pflaumen) \\
                300\,g & grüne Erbsen && 200\,g & grüne Bohnen \\
                1 Spritzer & Essig && 1 Prise & Zucker \\
                1 Bund & Bohnenkraut && 1 Msp. & gem. Muskat \\
                2 & Lorbeerblätter && nach Wahl & Kräuter (Thymian, \\
                2 & ganze Gewürznelken &&  & Salbei, Basilikum, \\
                & Salz &&    & Majoran, Kerbel) \\
                & Pfeffer &&  &  \\
                \midrule
                \multicolumn{5}{p{0.83\textwidth}}{\emph{%
                        Vorbereitung: Dörrobst über Nacht in Wasser quellen lassen. Am nächsten Tag: Suppengrün waschen/putzen, Karotten/Sellerie schälen. Schale zusammen mit dunkelgrünen Porreeteilen aufbewahren. In gr. Topf: Schinkenknochen, Schinkenschwarte, Fleischbrühe/Wasser, Bohnenkraut, Nelken, Lorbeerblätter, Petersilie, die aufbewahrten Schalen/dunkelgrünen von Sellerie/Karotte und  Porree-Enden anderthalb Stunden bei milder Hitze zu Brühe kochen, durch Sieb in anderen Topf gießen.}}\\
                \multicolumn{5}{p{0.83\textwidth}}{\emph{%       
                        Restliches Suppengrün, Bohnen, Erbsen und Kräuter klein schneiden/hacken, mit dem Backobst in die Suppe geben, weitere halbe Stunde garen lassen. Fleisch vom Schinkenknochen dazu, mit Salz und Pfeffer, Zucker, Essig, Muskatnuss, Salz und Pfeffer würzen. Damit wäre eine Aalsuppe ohne Aal bereits fertig, in unserer Familie kam zuletzt noch Aal hinein, 200\,g mundgerechte Stücke geschnitten, geräuchert oder frisch, der dann noch zehn Minuten in der Suppe ziehen durfte.%
                }}\\
            \end{tabular}
        }% Ende \fcolorbox
    \caption{Hamburger Aalsuppe mit und ohne Aal (Marion).\label{rec_aal}}
\end{recipe}
%
\begin{recipe}(caption=outer, align=bottom, width=normal)%
        \fcolorbox{black}{shadecolor}{%
            \begin{tabular}{rlp{0.05\textwidth}rl}
                1\,l & Buttermilch && 200\,g & Buchweizengrütze \\
                & Milch &&  & Zucker \\
                \midrule
                \multicolumn{5}{p{0.52\textwidth}}{\emph{%
                        Buttermilch (in der \glqq schlechten Zeit\grqq\ ersatzweise Wasser) in hohem Topf erwärmen. Buchweizengrütze unter ständigem Umrühren hinzugeben und halbe Stunde quellen lassen. Reichlich Zucker nach Geschmack hinzufügen. Wenn die Grütze fest wird, in Schüssel umfüllen und mit ein wenig Zucker bestreuen, um Hautbildung zu vermindern. Nach zwei Stunden zum weiteren Abkühlen bis zur Mahlzeit (Frühstück, als Nachtisch oder zum Abendbrot) in den Kühlschrank. Mit kalter Milch darüber servieren.}}\\
            \end{tabular}
        }% Ende \fcolorbox
    \caption{Buchweizengrütze mit Milch (Marion).\label{rec_buchweizen}}
\end{recipe}
%
\begin{recipe}(caption=outer, align=bottom, width=normal)%
        \fcolorbox{black}{shadecolor}{%
            \begin{tabular}{rlp{0.05\textwidth}rl}
                0,25\,l & Milch && 50\,g & feine Haferflocken \\
                1 Prise & Salz && 2\,TL & Zucker \\
                0,5 TL & Zimt (nach Wahl) &&  &  \\
                \midrule
                \multicolumn{5}{p{0.64\textwidth}}{\emph{%
                        Haferflocken, Salz und Zucker unter ständigem Rühren in der Milch (ersatzweise Wasser) aufkochen, drei Minuten ziehen lassen, in eine Schüssel umfüllen, mit Zimt bestreuen, mit zusätzlicher kalter Milch darüber servieren.}}\\
            \end{tabular}
        }% Ende \fcolorbox
    \caption{Haferbrei mit Milch (Marion).\label{rec_haferbrei}}
\end{recipe}
%
Marion wurde in Hamburg eingeschult, wechselte kurz darauf für zwei Jahre nach Wien. Anschließend ging sie in Bayern ein Jahr zur Schule, ab da in Travemünde. 1949 verließ sie die Schule vorzeitig vor dem Ende des letzten Schuljahrs, weil sie Geld verdienen sollte: In den nächsten beiden Jahren arbeitet sie in einer Eisdiele, als Kindermädchen und als Mädchen für alles. Ihre Schwester Ingrid machte eine Lehre zum Einzelhandelskaufmann in einem Lebensmittelgeschäft.

Ab September 1951 wohnte Marion bei ihrer Tante Emilie, die ihr eine Lehrstelle in dem kleinen Friseurgeschäft hatte vermitteln können, in dem sie ihre Haare frisieren ließ. Leider musste sie die Lehre abbrechen: Ihre Lehrherrin wollte auch ihre eigene Tochter als Lehrling aufnehmen, es sei aber unerwarteterweise nur ein Lehrling zulässig gewesen.\footnote{Die Lehrherrin scheint hier einem eigentlich unerklärlichen Irrtum erlegen zu sein, falls es sich nicht um eine Schutzbehauptung handelte: Herr Dr. Thomas Felleckner von der Handwerkskammer Braunschweig-Lüneburg-Stade teilte dazu am 3.\,3.\,2022 per E-Mail mit:
    
\leavevmode
\begin{itshape}
        $\lbrack $In der britischen Besatzungszone$\rbrack $ galt bereits seit dem 6. Dezember 1946 eine Aufbauverordnung der britischen Militärregierung für das Handwerk, die nahezu vollständig das deutsche Handwerksrecht von vor 1933 wieder in Kraft gesetzt hatte. Demnach gab es in deren Wirkungsbereich keinerlei quantitative Beschränkungen für die Beschäftigung von Mitarbeitern oder Lehrlingen in Handwerksbetrieben. Ein Verbot für die Aufnahme von mehr als einem Lehrling hat daher für ordnungsgemäß in die Handwerksrolle der jeweiligen Kammer eingetragene Handwerksbetriebe im Bereich der ehemaligen britischen Besatzungszone im Jahr 1951 nicht bestanden.
\end{itshape}}

Nun besorgte Emilie eine Stelle im Haushalt in Hamburg, bis Marion erneut eine Lehrstelle bei einer Friseurin außerhalb Hamburgs fand, zu der sie jeden Morgen mit dem Bus fahren musste. Doch auch diesmal endete die Lehre nach drei Monaten: Es stellte sich heraus, dass Marion das Dauerwellenwasser nicht vertrug, damit war eine Friseurlehre generell gescheitert. 1953 verschaffte Uromi Jaja ihr eine Stelle im Haushalt an der Elbchaussee mit Kost und Logis, deshalb konnte sie nun am Glashütter Damm ausziehen. Dort blieb sie zwei Jahre bis Mitte 1955, anschließend wechselte sie in das Hotelgewerbe und arbeitete ein Dreivierteljahr als Anlernling im Hotel zum Stern in Siegburg.

Doch sie träumte von einem Leben in der Schweiz und einer Arbeit als Podologin. Irgendwann hatte sie genug Geld gespart, um für diesen Beruf über einen Kurs die begehrte Zulassung zu erwerben. Doch als sie damit 1956 nach Zürich zog, wurde zu ihrem Entsetzen ihr deutsches Diplom von der Schweiz nicht anerkannt. Ihr blieb nur die Rückkehr ins Hotelgewerbe. Während der kommenden zwei Jahre wechselte ihr Wohnsitz zweimal zurück nach Deutschland, wo sie bei ihrer Mutter in der Parkallee 26$^{II}$ in Hamburg wohnte, und wieder in die Schweiz. Ab 1959 blieb sie -- abgesehen von einem viermonatigen Zwischenspiel auf der Isle of Wight 1961 -- bis 1963 in der Schweiz, lernte dort 1960/61 ihren späteren Mann Wilfried kennen, den sie 1964 heiratete. 

Mit ihm zog sie 1963 für zehn Jahre in die USA, baute mit ihm ein eigenes Restaurant in San Francisco auf. Nach einer Fehlgeburt im siebten Schwangerschaftsmonat 1967 (Zwillingsmädchen) kam 1968 Sohn Albert gesund zur Welt. 1972 kehrten sie in die Schweiz zurück, um dort wieder eine eigene Wirtschaft zu gründen, stießen aber wegen Marions deutscher Staatsbürgerschaft auf Schwierigkeiten. Wenige Jahre später gab es Streit: Marion war mit 41 Jahren wieder schwanger, ihr Mann Wilfried wünschte kein weiteres Kind, Marion aber trug Iris aus, die 1975 zur
\end{document}

The resulting PDF doesn't deliver "exactly" the original mistake but at least it didn't vanish again as with my tries before.

My first problem: If you compile the text, at the bottom of page 4 you will find \footnotemark No. 1 and the corresponding \footnotetext No. 1 starts at the foot of the page. But place there is not sufficient, so the \footnotetext is continued at the foot of page 5. So far everything as it should be ...

But now things start to become strange: Although in my eyes at page 5 there is enough space to finish the \footnotetext -- as that only needs 3 further lines -- the \footnotetext is continued on still another page foot. And not on page 6, as one would expect, but back on page 4, above the start of the very same footnote!

Has anybody an idea, how I can stop this strange behavior without changing the look of the rest?

My second problem: For compilation you need my self-written file "xfloat.sty" -- but that is more than the allowed 30.000 characters. So now following the tip of Ulrike Fischer I uploaded it to https://workupload.com/file/JHA2xpWVt6X . The error may very well be inside that file ...

(And still another question: Is it possible, to delete my old attempt of a question about this, as it is of help for nobody?)

2
  • well you could upload the sty somewhere, so that other people can try to reproduce your problem. Side remark: I wouldn't use \begin{itshape} like this. You are starting a paragraph inside a group but end it outside. That is a bit fishy. Better add a \leavevmode before. Jun 17, 2023 at 8:55
  • Hello Ulrike, I tried to upload xfloat.sty to workupload.com/file/JHA2xpWVt6X , I hope, it worked. I never knew, that when I enter an environment in vmode, I had to look for leaving it in vmode as well. Thank you for the tip! I hope, I added the \leavevmode at the right place now?
    – ThorstenL
    Jun 17, 2023 at 14:55

1 Answer 1

3

You are using the fewerfloatpages package and the afterpage package. The first sometimes unravels pages to redistribute floats, while the other inserts something on the next page and unravels it partially too and both clash.

Do not use \afterpage lightly. That is a very fragile command. In your case you seem to want to pass an information to the page after the float. Use a \label to store such informations about pages and query their value in the next compilation. That is much safer.

A smaller example is this here. You can switch between the bad and the good by uncommenting the marked line.

\documentclass[12pt,fleqn,twoside,draft]{report}%
\RequirePackage[trace]{fewerfloatpages}
\RequirePackage{afterpage}%
\usepackage{lipsum}

%Satzspiegel
\textwidth 13.5cm
\textheight 21.4cm

%Zeilenabstand
\renewcommand{\baselinestretch}{1.2}

\begin{document}

\vspace*{26\baselineskip}

blub

\begin{figure}
        \fbox{%
        \rule{1cm}{10\baselineskip}
                    }% 
\end{figure}
%
\begin{figure}
\afterpage{\typeout{blub}} % <=============== comment this 
        \fbox{%
        \rule{1cm}{22\baselineskip}
                 }% 
\end{figure}
%
\begin{figure}
        \fbox{%
        \rule{1cm}{11\baselineskip}
        }% 
\end{figure}
%
\begin{figure}
        \fbox{%
        \rule{1cm}{8\baselineskip}
                    }% 
\end{figure}
%

x\\x\\x\\x\\x\\x\\x

Ab September 1951 wohnte Marion bei ihrer Tante Emilie, die ihr eine 
Lehrstelle in dem kleinen Friseurgeschäft hatte vermitteln können, in dem sie 
ihre Haare frisieren ließ. Leider musste sie die Lehre abbrechen: Ihre 
Lehrherrin wollte auch ihre eigene Tochter als Lehrling aufnehmen, es sei 
aber unerwarteterweise nur ein Lehrling zulässig gewesen.\footnote{START 
\lipsum[1-2]} 

\lipsum[1-5]

\end{document}
11
  • I added the package fewerfloatpages only a few days ago. Before I did, I had the same problem, only at another page, so I didn't blame fewerfloatpages for that -- but I may have been wrong. I have made quite some use of afterpage since years. Quite some of my attempts failed because of the fragility of that package and I had to try differently. But as far as I remember, I only use afterpage inside xfloat to build "two page floats" (ok, they don't float, they are only pushed forward by afterpage). And in this snippet I don't use two page floats, so I think, I don't use afterpage either.
    – ThorstenL
    Jun 17, 2023 at 17:17
  • your example errors if one removes afterpage. And it works if one does \def\afterpage#1{}. And you are not using afterpage only to push sometimes material, you are using it basically in every float with \afterpage{\global\doublelockfalse...}. Jun 17, 2023 at 17:28
  • After a look on your MWE: It is great, that you could reproduce a quite similar mistake with much less code! But you used \afterpage INSIDE an original figure environment! I don't hope, that I have ever done that, as with that you "escape" the figure environment: The code is written inside the figure environment, but used outside, when the figure environment has been closed since long. So I am doubtful, whether that is comparable with my code ...
    – ThorstenL
    Jun 17, 2023 at 17:30
  • "your example errors ..." -- the error is extremely fragile in my eyes, that was, what made generating an MWE for me that difficult. Sometimes a word more or less and the error collapses. So if you "comment out" afterpage with your definition, it changes the looks of my document -- and already that will let the error collapse, whether afterpage is the fault or not. It may have happened, that afterpage somehow "ran away my control" and did, what you did in your MWE -- but that was never, what I wanted.
    – ThorstenL
    Jun 17, 2023 at 17:35
  • I was struggling with those double page floats. One problem was, that normal floats would crash the double float, if appearing inside. So I use the flag ifdoublelock to lock normal floats. I am not sure, whether this is necessary still, as meanwhile I use \suppressfloats as well. Yes, insofar I transport information with that flag -- but how should I do that with labels (in the moment I would rather test, whether ifdoublelock is still necessary)?
    – ThorstenL
    Jun 17, 2023 at 17:43

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .