Mit Grafik Seite auffüllen

Tabellen und Grafiken erstellen und anordnen


tobi_nambur
Forum-Newbie
Forum-Newbie
Beiträge: 1
Registriert: Do 22. Aug 2019, 14:46
Wohnort: Erlangen

Mit Grafik Seite auffüllen

Beitrag von tobi_nambur »

Hallo liebes Forum,

ich arbeite an einem Booklet und häufig kommt nach der letzten Zeile ein größeres Bild das ich mit /includegraphic einfüge. Bisher definiere ich die Größe der Bilder selber mit width=12cm oder width=0.8/textwidth. Wenn sich die Länge des Abschnitts ändert und zu wenig Platz ist springt das Bild dann leider auf die nächste Seite, was sehr nervig ist.

Meine Frage:

Gibt es einen Befehl der mit dem Bild den restlichen Platz der Seite optimal auffüllen und trotzdem deren Seitenverhältnis beibehält?

Vielen Dank!

Gast

Beitrag von Gast »

Mehr Kontext bitte.

Gast

Beitrag von Gast »

Auf den ersten Blick kann man sich soetwas zusammenbasteln. Der restliche Platz auf der Seite ist auf Low-Level-TeX-Ebene theoretisch \pagegoal-\pagetotal. Allerdings gilt das nur zwischen zwei Absätzen. Innerhalb eines Absatzes ist \pagetotal (die aktuelle Seitenfüllung) gar nicht bekannt. Versucht man nun aber mit diesem Wert das Problem zu lösen, fällt man schon im einfachsten Fall herein:

Code: Alles auswählen

\documentclass{article}
\usepackage{showframe}% to visualize page areas
\usepackage{mwe}

\begin{document}
\Blindtext[3]

\includegraphics[height=\dimexpr\pagegoal-\pagetotal\relax]{example-image}
\end{document}
Fängt man an zu messen, sieht es zwar so aus, als müsste das Bild eigentlich noch auf die erste Seite passen, tut es aber nicht. Grund ist, dass die Zeile des Bildes ebenfalls eine Tiefe (Unterlänge unter der Grundlinie der Zeile) hat, obwohl das Bild selbst komplett über der Grundlinie liegt. Für den Umbruch ist das relevant. Also müssen wir den Wert auch noch abziehen:

Code: Alles auswählen

\documentclass{article}
\usepackage{showframe}% to visualize page areas
\usepackage{mwe}

\begin{document}
\Blindtext[3]

\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\dp\strutbox\relax]{example-image}
\end{document}
Jetzt soll die Grafik vermutlich nicht einfach so auf die Seite geklatscht werden, sondern beispielsweise zentriert:

Code: Alles auswählen

\documentclass{article}
\usepackage{showframe}% to visualize page areas
\usepackage{mwe}

\begin{document}
\Blindtext[3]

\begin{center}
\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\dp\strutbox\relax]{example-image}
\end{center}
\end{document}
Jetzt hat man allerdings noch das Problem, dass die Grafik eventuell zu breit wird, wenn man die Höhe komplett ausnützen will. Also braucht man auch noch eine Breitenbeschränkung:

Code: Alles auswählen

\documentclass{article}
\usepackage{showframe}% to visualize page areas
\usepackage{mwe}

\begin{document}
\section{First}
\Blindtext[1]

\begin{center}
  \vfill
  \includegraphics[height=\dimexpr\pagegoal-\pagetotal\relax,width=\linewidth,keepaspectratio]{example-image}
%  \vfill% aktivieren, falls vertikale Zentrierung im Restbereich gewünscht.
\end{center}

\section{Next}
\Blindtext
\end{document}
Sobald allerdings auch noch eine Bildbeschriftung dazu soll, ist das nicht mehr so einfach zu machen. Dann muss man nämlich deren Platzbedarf ebenfalls berücksichtigen. Auch gibt es mit Sicherheit Fälle, in denen die Verwendung von \pagegoal-\pagetotal nicht das gewünschte Ergebnis bringt.

Gast

Beitrag von Gast »

PS: Man kann mit Sicherheit auch Beispiele konstruieren, bei denen die eingefügte Grafik unansehnlich klein wird. Also besser auch noch testen, dass die berechnete Höhe ein Mindestmaß erreicht und ggf. anderenfalls auf das Bild komplett verzichten.

Antworten