Sie sind hier

Buch bis zu einer bestimmten seite mit leerseiten auffüllen

Hallo,
ich habe folgende Anforderung und finde keine Hinweise wie ich da vorgehen kann:

ich muß ein PDF aus LATEX (mit KOMA-Script) erzeugen, das am Ende genau 64 Seiten lang ist, ggf. aufgefüllt mit Leerseiten.

Am Anfang des Dokumentes steht nach der Titelseite und dem index ein Text variabler Länge.
Danach die Leeseiten.
Danach wieder ein Text Variabler Länge.
Danach Register und als Seite 64 dann die Buchrückseite
Der Fall, daß beide variablen Texte zusammen zu viele Seiten ergeben soll im ersten Wurf nicht abgefangen werden.

Hat jemand eine Vorstellung oder Hinweise, wie ich die o.g. Anforderung erfüllen kann?

Vorab dankend,

Dirk A.

Bild von Markus Kohm

Solange der Text noch in Bearbeitung ist, ist das ganze problematisch. Das gilt ebenso, wenn die endgültige Seitenzahl der belegten Seiten beim ersten Lauf nicht ermittelt werden kann, beispielsweise weil sie sich durch Verzeichnisse noch ändern kann.

Anderenfalls ist es recht einfach. Man muss nur die Seitenzahl am Ende des LaTeX-Laufs in die aux-Datei schreiben und beim nächsten LaTeX-Lauf dann auffüllen. Schreibt man dabei auch noch die Anzahl der eingefügten Leerseiten in die aux-Datei kann man prinzipiell auch den Fall der sich noch ändernden Dokumente etc. behandeln, der oben erwähnt ist:

\documentclass{scrartcl}
 
\usepackage[ngerman]{babel}
\usepackage{blindtext}
 
% Kommen wir zur Problemlösung
\usepackage{scrlfile}% wegen \BeforeClosingMainAux
 
\newcounter{emptypagenumber}% Zähler werden autmatisch mit 0 initialisiert
\newcommand*{\lastpagenumber}{65}% initialisiert wird ohne eingefügte Seiten
\newcommand*{\lastemptypagenumber}{0}% ohne Leerseiten
\makeatletter
\BeforeClosingMainAux{%
  % Hinweis: Hier wird die nächste Seitenzahl in die Datei
  % geschrieben. Deshalb wird bei den Berechnungen auch mit 65 gearbeitet!
  \immediate\write\@auxout{\string\gdef\string\lastpagenumber{\the\value{page}}%
    \string\gdef\string\lastemptypagenumber{\the\value{emptypagenumber}}}%
  \ifnum \lastpagenumber=65\else
    \typeout{Rerun to get page count right!}%
  \fi
}
 
\newcommand{\pagefill}{%
  \clearpage
  \begingroup
    \@tempcnta=\numexpr \lastemptypagenumber + 65 - \lastpagenumber\relax
    \ifnum \@tempcnta < 0
      \@latex@warning@no@line{To much pages!}%
    \else
      \typeout{Adding \the\@tempcnta\space empty pages}%
      \@whilenum\value{emptypagenumber}<\@tempcnta\do{%
        \null\thispagestyle{empty}\newpage
        \stepcounter{emptypagenumber}%
      }%
    \fi
  \endgroup
  \newpage
}
\makeatother
 
\begin{document}
\title{So geht das}
\author{Markus Kohm}
\maketitle
\tableofcontents
\pagefill
\blinddocument
\end{document}

Zu viele Seiten wird hier ebenfalls behandelt. Was nicht behandelt wird, ist der Fall, dass die absoluten Seitenzahlen nicht mit den ausgegebenen Seitenzahlen überein stimmen. In dem Fall müsste man erst einmal die absolute Seitenzahl ermitteln.

Es müssen so lange weitere LaTeX-Läufe durchgeführt werden, bis die Rerun-Meldung nicht mehr erscheint.

Hallo,

erstmal vielen Dank für die schnelle Antwort.
Habs mal in mein Buch eingebaut; klappt soweit prima.

Folgendes Problem hat sich ergeben:

Ich benutze die Dokumentklasse scrbook, zweiseitig, und der Text nach den Leerseiten ist ein eigenes Kapitel.
Wenn also mit pagefill Leerseiten eingefügt werden kann es passieren, das die erste Seite des "Anhanges" auf eine gerade Seite fällt. es wird also nochmal eine Leeseite vor das Kapitel gestellt, und ich habe 65 Seiten.
Im nächten Durchlauf wird dann von pagefill eine Leerseite weniger eingefügt...dann ist natürlich der Anfang den "Anhanges" auf eine ungeraden Seite, es wird also keine Leerseite vor das Kapitel gestellt, und ich habe 63 Seiten usf.

Vielleicht können Sie mir dabei ja auch etwas helfen.

Vielen Dank,

Dirk A.

Bild von Markus Kohm

Wenn ich Dich richtig verstehe, ist das Problem dadurch verursacht, dass Kapitel immer rechts beginnen und Dein letztes Kapitel (im Anhang) auf einer ungeraden Seite endet. Du musst also entweder dafür sorgen, dass Kapitel auch auf linken Seiten beginnen dürfen (siehe Option open in der KOMA-Script-Anleitung) oder dass das letzte Kapitel auf einer linken Seite endet (beispielsweise ggf. mit einer Vakatseite per \cleardoubleoddpage oder einer der in der Anleitung dokumentierten anderen Varianten davon am Ende des Dokuments).

BTW: Laut Teilnahmebedingungen duzen wir uns hier.

Comments for "Buch bis zu einer bestimmten seite mit leerseiten auffüllen" abonnieren