Seite 1 von 2
Ganzseitige Illustrationen einbinden
Verfasst: Sa 22. Feb 2014, 18:51
von Bachwels
Ich habe ein Buch zu setzen, in das einige wenige ganzseitige Illustrationen einzubringen sind. Das funktioniert problemlos, wenn ich an der Stelle im Text, zu der die Illustration passt,
\begin{figure}
\centering
\includegraphics[width=1.0\textwidth]{bild.jpg}
\end{figure}}
einsetze. Zwei Probleme gibt es allerdings: Ich möchte, dass das Bild grundsätzlich nur auf einer ungeraden Seite erscheint, und ich möchte, dass auf dieser Seite keine Kopf- und Fußzeilen vorhanden sind. (Wenn es sich außerdem noch einrichten ließe, dass die jeweils nächste (gerade) Seite leer bleibt, wäre ich restlos glücklich, aber es geht auch so.)
Ich finde keine Möglichkeit, das zu erreichen. Gibt es eine, oder ist das nun wirklich ein Problem, das nur mit einem DTP-Programm zu lösen ist?
Verfasst: Sa 22. Feb 2014, 19:45
von Studi
Siehe etwa:
Wie kann ich eine separate Seite in mein Dokument einfügen?
Eine figure-Umgebung brauchst Du nicht, denn das Bild soll ja nicht gleiten. \includegraphics reicht völlig. Zur Einschätzung hierzu:
Wann sollte ich Gleitumgebungen für Abbildungen verwenden?
\centering wird auch nicht benötigt. Wenn es sowieso schon links beginnt und so breit wie der Text ist, geht es nicht noch zentrierter.
Zur Positonierung auf ungerader Seite mach davor einfach ein \cleardoublepage. Oder noch sicherer zusammen mit \afterpage wie hier:
Wie erzwinge ich geschickt die Ausgabe von Gleitumgebungen?
Für Verzicht auf Kopf- und Fußzeile kannst Du \thispagestyle{empty} nehmen, auch hier kann \afterpage vorteilhaft sein, siehe obengenannten Link. Weiterhin vielleicht nützlich, wenn Du das auch nicht auf eigentlich leeren Seiten haben willst:
Wie entferne ich Kopfzeile und Fußzeile von leeren Seiten?
Studi
Verfasst: So 23. Feb 2014, 10:59
von Bachwels
Vielen Dank. Leider hilft das nicht viel. Wenn ich \cleardoublepage eingebe, wird die Seite exakt an dieser Stelle beendet. Das will ich aber nicht, sondern ich will, dass die Illustration als nächste Seite ausgegeben wird, egal, wie lang die gegenwärtige sie noch ist, auf der ich den Befehl gegeben habe. Wenn ich exakt weiß, nach welchem Wort das Bild kommen soll, ist es natürlich etwas einfacher (aber auch nur, wenn da ein Absatz ist), aber das weiß ich nicht. Anders gesagt: Es ist egal, nach welchem Wort das Bild kommt, wichtig ist nur, dass es auf der nächste ungeraden Seite kommt. Und das natürlich ohne, dass ich eine Leerseite erhalte (die wäre nur nach dem Bild eventuell wünschenswert).
Um das zu verdeutlichen: Ich will an der Stelle im Text, zu der die Illustration gehört, den Befehl eingeben. Und der soll bewirken, dass die Illustration auf der nächsten ungeraden Seite ausgegeben wird, wobei diese keine Kopf- und Fußzeilen haben soll. Wann genau diese Seite kommt (ob direkt als nächste oder auch als übernachte) ist dabei egal. Wobei ich mich zur Not noch damit abfinden würde, dass ich die Textstelle so aussuchen muss, dass sie auf der gegenüberliegenden Seite zu stehen kommt. (Ich würde gern ein Bild hochladen, das zeigt, wie ich es meine aber das ist nicht möglich.)
Ich habe jetzt viel herumgelesen auch \afterpage probiert, es kommt mir aber inzwischen fast so vor, als sei das nicht zu machen. Wenn ich zum Beispiel \afterpage{\thispagestyle{empty}} eingebe, hat die übernächste Seite keine Kopf- und Fußzeilen. Gebe ich einfach \thispagestyle{empty} ein, hat logischerweise die aktuelle Seite keine Kopf- und Fußzeilen. Eine Möglichkeit, die nächste Seite zu beeinflussen scheint es nicht zu geben.
Wenn ich übrigens die verlinkte Erläuterung, wann man Gleitumgebungen nehmen soll, richtig verstehe, ist eine Gleitumgebung genau das, was ich brauche, weil ich die Illustration nicht an der Stelle haben will, wo ich sie einbinde, sondern auf der nächsten (möglichst ungeraden) Seite. Oder verstehe ich da was falsch?
Verfasst: So 23. Feb 2014, 12:31
von Noch so einer
Man muss \afterpage nur ein wenig creativ einsetzen:
\documentclass{scrbook}
\usepackage{lipsum}% Dummy-Text für Demozwecke
\usepackage{mwe}% Damit die autoinstall-Funktion von MiKTeX ggf. die
% Beispielbilder automatisch installiert.
\usepackage{afterpage}
\makeatletter
\newcommand{\OnFollowingOddPage}[1]{%
\afterpage{%
\ifodd\value{page}%
\expandafter\@firstofone
\else
\expandafter\OnFollowingOddPage
\fi
{#1}%
}%
}
\newcommand{\OnFollowingEvenPage}[1]{%
\afterpage{%
\ifodd\value{page}%
\expandafter\@firstofone
\else
\expandafter\OnFollowingEvenPage
\fi
{#1}%
}%
}
\makeatother
\newcommand*{\CenterImageOnFollowingOddPage}[2][]{%
\OnFollowingOddPage{%
\centering
\vspace*{\fill}%
\thispagestyle{empty}%
\includegraphics[#1]{#2}%
\vspace*{\fill}%
\clearpage
}%
}
\usepackage{graphicx}
\begin{document}
\chapter{First chapter}
\lipsum
\CenterImageOnFollowingOddPage[width=\textwidth,height=\textheight]{example-image}
\lipsum
\chapter{One more chapter}
\lipsum[1-2]
\CenterImageOnFollowingOddPage{example-image-golden-upright}
\lipsum
\section{With one section}
\lipsum[1]
\CenterImageOnFollowingOddPage{example-image-9x16}
\end{document}
Alternativen unter Verwendung von figure-Umgebungen sind in der afterpage-Anleitung zu finden. Dort kann die Abbildung aber sowohl auf linken, als auch auf rechten Seiten landen. Außerdem benötigt man zusätzlich ein Paket wie
floatpag oder scrlayer-scrpage (inzwischen Teil von KOMA-Script), um den Seitenstil der Gleitumgebungsseite zu beeinflussen.
Eine weitere Alternative wäre die Verwendung von Paket
floatpag zusammen mit
dpfloat oder scrlayer-scrpage.
Es gibt sicher weitere Möglichkeiten.
Verfasst: So 23. Feb 2014, 12:33
von Noch so einer
PS: Vorsicht beim Paket afterpage ist übrigens geboten, wenn Absätze sehr lang sind und über mehrere Seiten gehen oder wenn das Paket longtable verwendet wird. In beiden Fällen kann es passieren, dass afterpage etwas viel später als erwartet ausgibt. Im Zusammenspiel mit longtable sind auch unerwartete Fehlermeldungen oder der Verlust von \afterpage-Inhalten möglich.
Verfasst: So 23. Feb 2014, 13:12
von Bachwels
Vielen Dank! Das funktioniert. Aber – Donnerlittchen! – das ist ja kompliziert... Immerhin, es scheint zu klappen. Longtable werde ich in solchen Zusammenhängen wohl nicht verwenden. Aber was sind sehr lange Absätze?
Und gleich noch eine weitere, nicht ganz dazugehörige Frage: Das kann man ja sehr schön in ein eigenes Makro verpacken. Wie kann ich es nun hinkriegen, dass ich dieses Makro nicht jedes Mal in diePräambel einer Datei schreiben, sondern die Datei, in der es steht, immer wie ein Paket einfach einbinden kann, wenn ich das nötig finde. Geht das ohne profunde Programmierkenntnisse?
Verfasst: So 23. Feb 2014, 14:26
von Felix
Bachwels hat geschrieben:... die Datei, in der es steht, immer wie ein Paket einfach einbinden kann, wenn ich das nötig finde. Geht das ohne profunde Programmierkenntnisse?
Sicher, Du kannst das Makro (und andere) in eine eigene .tex-Datei schreiben und in Deiner Präambel jeweils einfach mit \input{dateiname} einbinden.
Felix
Verfasst: So 23. Feb 2014, 14:31
von Bachwels
Ja, das ist mir klar. Aber dazu muss diese Datei immer im jeweiligen Projektverzeichnis vorhanden sein, und wenn ich an einer etwas ändere, weil ich eine gute Idee hatte, muss ich das auch bei allen anderen machen. Ich dachte an eine Möglichkeit, diese Datei irgendwo zu speichern, wo ich sie in alle Projekte einbinden kann, ohne sie in deren Verzeichnis kopieren zu müssen.
Aber ich ahne schon, das geht, indem ich diese Variable setze, die den Latex-Suchpfad enthält. Das habe ich schon mal erfolglos probiert... Aber es geht ja auch so. Besten Dank jedenfalls!
Verfasst: Mo 24. Feb 2014, 07:48
von Noch so einer
Welche TeX-Distribution verwendest Du?
Für MiKTeX wird die Installation lokaler Erweiterungen
in der MiKTeX-Anleitung erklärt. Dem ist eigentlich nichts hinzuzufügen.
Bei TeX-Live verwendest Du einfach den lokalen oder den privaten TEXMF-Baum. Dessen Wurzel erfragst Du mit `kpsewhich -var-value=TEXMFLOCAL' bzw. `kpsewhich -var-value=TEXMFHOME'. Achtung: Das sind Programmaufrufe _keine_ LaTeX-Anweisungen. Wie man in einem Terminal ein Programm aufruft ist vom OS abhängig. Wenn Du das nicht weißt, dann frag in einem Forum für Dein OS nach und lerne Deinen Computer zu bedienen.
Ansonsten sind die Anweisungen, die ich Dir vorgekaut habe, gar nicht schwierig. Die sind sogar recht einfach. Ein kleiner Trick ist nur die Verwendung von \expandafter, um \@firstofone bzw. \OnFollowing…Page bis hinter das \fi zu verzögern, um die Schachtelungsebenen vor allem für den rekursiven \OnFollowing…Page-Aufruf zu reduzieren. Ein Anfänger hätte stattdessen einfach
\newcommand{\OnFollowingOddPage}[1]{%
\afterpage{%
\ifodd\value{page}%
#1%
\else
\OnFollowingOddPage{#1}%
\fi
}%
}
geschrieben, was dann wirklich trivial ist.
Verfasst: Mo 24. Feb 2014, 08:12
von Bachwels
OK. Ich habe die vorgekauten Zeilen eingesetzt und kann sie gut gebrauchen und verwenden. Vielen Dank! Dass ich nur zu 30% verstehe, was da geschieht, ist nicht so schlimm, finde ich, so lange es klappt. Und die paar Zeilen in jedes Projekt einzusetzen, ist ja auch nicht so schwierig, da stürze ich mich gar nicht erst in Abenteuer.
Nochmals vielen Dank für die Hilfe. Damit bin ich ein gewaltiges Stück weiter gekommen.