Unter Verwendung von pdfLaTeX und KOMA-Script schreibe ich an einem Buch, das auf einigen Seiten Illustrationen enthält. Zum Teil sind es ganzseitige Illustrationen, zum Teil aber bleiben Teilbereiche einer solchen Seite frei. Die freien Bereiche sollen für die Textausgabe genutzt werden.

Bei Einfügen der Illustrationen als Hintergrundgrafik und unter Verwendung der KOMA-Script-Umgebung addmargin sowie dem Einfügen von manuellen Seitenumbrüchen schaffe ich es zwar, das gewünschte Resultat zu erzielen, aber bei Änderungen am Text muss dieser manuelle Seitenumbruch halt jedes Mal neu gemacht werden. Das ist natürlich lästig.

Meine Frage ist, ob es da eine elegantere Lösung gibt, die automatisch für die richtige Verteilung des Textes auch auf den Seiten mit Illustrationen sorgt, indem man irgendwie den für Text freien Bereich einer solchen Seite definiert.

Nachfolgend ein kleines Code-Beispiel, das das Problem verdeutlicht. Das benötigte Testbild kann hier heruntergeladen werden. Im Beispiel ragt der Text in die Illustration hinein - genau das soll vermieden werden.

Öffne in Overleaf
\documentclass[fontsize=11pt,paper=a5,headsepline,titlepage,footlines=1.2,twoside=true,parskip=false,open=any,DIV=14,BCOR=4mm,toc=flat]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[german]{babel}
\usepackage{graphicx}
\usepackage{wallpaper}
\usepackage{lipsum}
\usepackage[headsepline=0.0pt,footsepline=1.0pt,plainheadsepline=on,plainfootsepline=on,autooneside=false,automark]{scrlayer-scrpage}
\usepackage{bookmark}
\usepackage{indentfirst}
\usepackage[pages=some]{background}

% Header specification
\chead[]{}
\frenchspacing

\newcommand\Chapter[2]{
  \addchap[#1, {\itshape#2}]{\Large#1\\[2mm]\large\itshape#2}
}

\ifoot[\scriptsize Testbuch mit Illustrationen]{\scriptsize Testbuch mit Illustrationen}

\begin{document}

\frontmatter

\begin{titlepage}
\begin{center}
\bfseries \Huge Buch mit Illustrationen
\end{center}
\end{titlepage}

\addtocontents{toc}{\protect{\pdfbookmark[0]{\contentsname}{toc}}}
\tableofcontents

\mainmatter

\pagestyle{plain.scrheadings}

\Chapter{X-tes Kapitel}{in dem eine Illustration vorkommt}

\lipsum[1-2]

\pagebreak

\thispagestyle{empty}
\backgroundsetup{placement=bottom,opacity=1,contents={\includegraphics[scale=0.1]{testbild.png}}}
\BgThispage

\begin{addmargin}[0mm]{52mm}
\lipsum[1]
\end{addmargin}

\pagebreak

\lipsum[1-2]

\backmatter
\end{document}

gefragt 26 Nov '16, 17:44

utelle's gravatar image

utelle
1112
Akzeptiert-Rate: 0%

bearbeitet 10 Jun '18, 11:48

saputello's gravatar image

saputello
11.1k174365

LaTeX ist kein DTP-Programm. Am Ende wirst du bei sowas nicht um manuelle Eingriffe herumkommen. Daher ist der beste Rat: Fange damit erst an, wenn der Text steht. Falls es dir um die äußere Form des Textes geht: mit parshape kann man auch andere Formen als Quadrate festlegen. Siehe z.B. http://www.ctan.org/pkg/shapepar

(27 Nov '16, 18:30) Ulrike Fischer

Schon klar, dass LaTeX kein DTP-Programm ist. Es geht mir ja auch eigentlich nicht um individuelle Gestaltung einzelner Seiten, sondern Fließtext auf Seiten mit Illustration am linken o. rechten Rand möglichst automatisch auf einen rechteckigen Bereich einzugrenzen, der nicht in die Illustration hineinreicht.

Für Illustrationen am oberen oder unteren Rand einer Seite funktioniert das mit einer figure-Umgebung (Position top od. bottom) problemlos.

Die Frage bleibt, ob es für die Positionierung einer Illustration am linken oder rechten Rand einen entsprechenden Mechanismus gibt.

(27 Nov '16, 21:24) utelle

Zwischenzeitlich habe ich ein bisschen weiter recherchiert. Und die Frage, die Ränder einzelner Seiten anpassen zu wollen, kommt nach meinem Eindruck gar nicht mal so selten vor. In den Fällen, wo Lösungen angegeben wurden, basieren diese zumeist auf dem geometry-Paket.

Aber wenn ich eine usepackage{geometry} Anweisung hinzufüge, ändert sich das komplette Layout - offensichtlich, weil KOMA-script das Layout über das typearea-Paket bestimmt und das dann irgendwie in Konflikt mit dem geometry-Paket steht.

(27 Nov '16, 21:27) utelle

Die Frage:

Meine Frage ist, ob es da eine elegantere Lösung gibt, die automatisch für die richtige Verteilung des Textes auch auf den Seiten mit Illustrationen sorgt, indem man irgendwie den für Text freien Bereich einer solchen Seite definiert.

kann man in dieser Allgemeinheit AFAIK für LaTeX weitgehend mit nein beantworten. Es gibt zwar Lösungen für die Beeinflussung des Textflusses um Objekte herum, beispielsweise:

Öffne in Overleaf
\documentclass[fontsize=11pt,paper=a5,headsepline,footlines=1.2,open=any,DIV=14,BCOR=4mm,toc=flat]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[german]{babel}% Wirklich nicht ngerman?
\usepackage{graphicx}
\usepackage{wallpaper}
\usepackage{lipsum}
\usepackage[headsepline=0.0pt,footsepline=1.0pt,plainheadsepline=on,plainfootsepline=on,autooneside=false,automark]{scrlayer-scrpage}
\usepackage{bookmark}
\usepackage{indentfirst}
\usepackage[pages=some]{background}
\usepackage{cutwin}

% Header specification
\chead[]{}
\frenchspacing

\newcommand\Chapter[2]{
  \addchap[#1, {\itshape#2}]{\Large#1\\[2mm]\large\itshape#2}
}

\ifoot[\scriptsize Testbuch mit Illustrationen]{\scriptsize Testbuch mit Illustrationen}

\begin{document}

\frontmatter

\begin{titlepage}
\begin{center}
\bfseries \Huge Buch mit Illustrationen
\end{center}
\end{titlepage}

\addtocontents{toc}{\protect{\pdfbookmark[0]{\contentsname}{toc}}}
\tableofcontents

\mainmatter

\pagestyle{plain.scrheadings}

\Chapter{X-tes Kapitel}{in dem eine Illustration vorkommt}

\lipsum[1-2]

\pagebreak

\thispagestyle{empty}
\backgroundsetup{placement=bottom,opacity=1,contents={\includegraphics[scale=0.1]{testbild.png}}}
\BgThispage

\begin{addmargin}[0mm]{52mm}
\lipsum[1]
\end{addmargin}

\pagebreak

\lipsum[1-2]\lipsum[2]

\newpage

\backgroundsetup{placement=bottom,opacity=1,contents={\includegraphics[scale=0.1]{testbild.png}}}
\BgThispage
\opencutright
\begin{shapedcutout}{0}{23}{%
    .58\textwidth,
    .58\textwidth,
    .59\textwidth,
    .6\textwidth,
    .62\textwidth,
    .64\textwidth,
    .62\textwidth,
    .58\textwidth,
    .57\textwidth,
    .57\textwidth,
    .58\textwidth,
    .6\textwidth,
    .64\textwidth,
    .65\textwidth,
    .56\textwidth,
    .55\textwidth,
    .56\textwidth,
    .57\textwidth,
    .56\textwidth,
    .53\textwidth,
    .50\textwidth,
    .48\textwidth,
    .48\textwidth
  }
  \lipsum[1]
\end{shapedcutout}

\end{document}

Nicht rechteckigen Bereich rechts aus einem Abschnitt ausgeschnitten.

Diese besitzen aber alle irgendwelche Einschränkungen. Im gezeigten Beispiel mit cutwin, ist das u. a. die Einschränkung, dass man immer nur einen kompletten Absatz auf einmal beeinflussen kann und natürlich die Anpassung an die Form recht aufwändige Handarbeit darstellt. [Anmerkung: Letztlich hätte man dasselbe auch mit dem TeX-Primitiv \parshape erreichen können.]

Zwar bietet TeX selbst durchaus die Möglichkeit, einem Absatz eine abweichende Zeilenlänge und sogar eine nicht rechteckige Form zu geben, es bietet aber nicht die Möglichkeit, dies auf Seitenebene auszuweiten und somit automatisch auf den Teil von (mehreren) Absätzen anzuwenden, der beim Umbruch von einer bestimmten Form betroffen ist.

Damit müsste man immer irgendwie manuell nachsteuern, wenn sich die Textverteilung auf den Seiten verändert. Will man einen automatischen Textfluss über Seiten mit unterschiedlichen bedruckbaren Bereichen, ist ein DTP-Programm LaTeX eindeutig überlegen.

Bezüglich des in einem Kommentar zu Frage geäußerten Problems eines Konflikts von geometry und typearea sei darauf hingewiesen, dass geometry normalerweise bereits beim Laden die Seitenaufteilung neu einstellt. Es bietet aber mit Option pass die Möglichkeit, dies zu verhindern. Darüber hinaus bietet typearea seit Version 3.17 die Möglichkeit, mit Option usegeometry seine eigenen Berechnungsergebnisse als Voreinstellungen an geometry weiterzureichen. Damit ist nicht nur eine friedliche Co-Existenz der beiden Pakete möglich, in gewissem Rahmen kann man sie sogar gewinnbringend kombinieren. Allerdings kann man auch in diesem Fall nicht einfach sagen: Mach die Ränder von Seite x anders. Man muss die aktuelle Seite beenden, die Ränder ändern, eine neue Seite füllen, diese beenden und dann wieder zurückschalten. Das generelle Problem, dass es keinen automatischen Textfluss zwischen Seiten mit unterschiedlichen Rändern gibt, beseitigt man damit also nicht.

Übrigens kann \pagebreak so sehr großen Absatzabständen auf einer Seite führen. Meist empfehle ich zwischen Absätzen \clearpage oder zumindest \newpage, welches stattdessen den nicht gefüllten Platz am Ende der Seite einfügt.

Permanenter link

beantwortet 24 Apr '18, 12:06

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 24 Apr '18, 12:44

Das ist eher so etwas wie ein sehr langer Kommentar, da es das eigentliche Problem nicht löst, sondern eher darauf hinweist, dass eine generelle Lösung schwer möglich ist.

(24 Apr '18, 12:07) gast3
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×131
×42
×16

gestellte Frage: 26 Nov '16, 17:44

Frage wurde gesehen: 7,003 Mal

zuletzt geändert: 24 Apr '18, 12:44