Overfull \hbox bei Hochformatbildern

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Overfull \hbox bei Hochformatbildern

Off-Topic: \isodd{\thepage} funktioniert nicht

von Gast » Di 23. Jan 2018, 07:59

Ich habe die ganze Diskussion nicht verfolgt (und könnte und wollte aus einem Code-Schnipsel statt einem Minimalbeispiel ohnehin keine in unbekannter Umgebung funktionierende Lösung basteln), will aber darauf hinweisen, dass \isodd{\thepage} aus zwei Gründen falsch ist. Zum einen ist \thepage nicht zwangsläufig eine arabische Zahl, sondern kann auch eine römische Zahl oder kann auch etwas wie »2-17« sein. Für die Darstellung der arabischen Zahl müsste man \arabic{page} verwenden. Für den Wert des Seitenzählers sollte man besser \value{page} verwenden. Schwerer wiegt aber, dass \thepage (außer im Seitenkopf oder Seitenfuß) gar nicht zwingend die aktuelle Seite ist. TeX hat eine asynchrone Ausgabe. Es liest und verarbeitet zunächst Eingabe und bildet daraus einen Absatz. Der fertig gesetzte Absatz wird dann dem aktuellen Seiteninhalt hinzugefügt. Wird dabei festgestellt, dass das Ergebnis länger als eine Seite ist, wird von dem ganzen quasi eine Seite abgeschnitten und ausgegeben. Ist der Rest noch immer länger als eine Seite, wird das so lange wiederholt, bis der Rest kürzer als eine Seite ist. Dabei wird der Absatz weder neu umbrochen noch dessen Inhalt neu ausgewertet.

KOMA-Script bietet daher (in scrbase) die Anweisung \ifthispageodd, um zuverlässig festzustellen, ob die aktuelle Seite gerade oder ungerade ist. Es gibt AFAIK weitere Pakete, die ähnliches leisten.

Ansonsten sei nur noch darauf hingewiesen, dass man bei \includegraphics durchaus Höhe und Breite und zusätzlich keepaspectratio angeben kann, um den verfügbaren Platz (der durch width und height bestimmt ist) optimal zu füllen, ohne das Seitenverhältnis zu verändern.

von Bebbi » Di 23. Jan 2018, 00:33

Kann ich aber nicht und müsste Buch für Buch jedes Bild einzeln einladen und so …

So, nun gute Nacht.

Bebbi

von Rolli » Di 23. Jan 2018, 00:30

Wie gesagt: Wenn das Deine Vorlage nicht fehlerfrei macht, muss man den Fehler suchen (großer Aufwand). Oder halt doch manuell das bei den hoffentlich nur 2 ... 3 Bildern nachkorrigieren (geringer Aufwand).

Vielleicht ist Scribus für diese Aufgabe doch die bessere Wahl - zumindestens dann, wenn Du Python kannst. "Programmieren" in LaTEX ist schon arg kryptisch und nicht ganz unproblematisch.

Gruß vom Rolli

P.S.: Bevor mich jetzt die Gurus zerfleischen: Ich habe in meinem Leben mehr als 500.000 Zeilen FORTRAN- und mehr als 1 Mio. Zeilen C-Code geschrieben ...

von Bebbi » Di 23. Jan 2018, 00:03

Naja, es sind einfach JPEG-Fotos ... :-)

Rolli hat geschrieben: - a) es unter Beibehaltung des Seitenverhältnisses kleiner machen, dann bleibt ein Teil der Seite weiß

a) entweder \width oder \height angeben, und zwar genau das Richtige von beiden;
Nur das soll passieren.

von Rolli » Mo 22. Jan 2018, 23:59

... Ja aber: Latex, Scribus und sogar das sündhaft teure In-Design sind halt nun mal überfordert, wenn Du z.B. ein Grafikfile der Mona Lisa (im Original 77 cm × 53 cm) auf z.B. einer DIN-A4-Seite so ausgibst, dass es die Seitenbreite gerade ausfüllt. Dann quillt es nämlich oben und unten um insgesamt rund 0,8 cm über.

Dann hast Du eben nur die Wahl

- a) es unter Beibehaltung des Seitenverhältnisses kleiner machen, dann bleibt ein Teil der Seite weiß
- b) es so zu verzerren, dass die Seite ausgefüllt ist
- c) ein Teil des Originals abzuschneiden

Beides [a) und b)] geht einfach:

a) entweder \width oder \height angeben, und zwar genau das Richtige von beiden;

b) beides angeben;

c) ist etwas komplizierter, geht aber z.B. mit tikz, oder möglicherweise hat graphics dafür auch eine Option, die ich gerade nicht parat habe.

Wenn Deine Vorlage (wie Du schreibst) das automatisch machen soll, dann verstehe ich so langsam, warum der Code so kompliziert ist.

Wenn das aber nicht fehlerfrei gehen sollte, dann muss in dem Algorithmus irgendwo ein Bug sein. Und den zu finden, geht über ein Minimalbeispiel weit hinaus. Da solltest Du Dich am Besten an den Autor dieser Vorlage wenden.

Gruß vom Rolli

von Bebbi » Mo 22. Jan 2018, 23:36

Hallo Rolli,

danke für deine Geduld.

Ich will möglichst effizient schlichte Fotobücher erstellen und genau das macht die Vorlage.
Ich gebe jeweils in einer Zeile Dateinamen und Beschriftung an und LaTeX prüft ob Hoch oder Quer und packt den Text bei nach außen.

- Das eine Problem ist das mit der Silbentrennung (s. anders Thema).
- Und dann habe ich hier in einem extra Thema das Problem, dass Hoch, ab einer bestimmten Größe nicht mehr eingepasst werden kann.

Ich will eben nicht jede Seite von vorne aufbauen. Dann kann ich das auch mit Scribus machen etc.

Ich habe mal so ein Crash-Kurs gemacht und mich ein wenig eingelesen, aber da bleibt so wenig hängen, dass ich nun an einem Beispiel mal LaTeX nutze, damit ich dann das verstehe, was ich in den Büchern lese.

Grüße

Bebbi

von Rolli » Mo 22. Jan 2018, 23:30

... P.S.: Die Bildskalierung machst Du in Deinem Codesnippet an den beiden Stellen
\includegraphics[height=\textheight]{#1}}% 
.
Das hat mit \begin{minipage} überhaupt nichts zu tun!

Je nachdem wie Dein Satzspiegel eigestellt ist, und Deine (nimms mir nicht übel: Komplizierten und undurchsichtigen) \commentspace und \lrdiffspace etc. hast Du für ein Bild einen Bereich von maximal x mal y zur Verfügung. Das kannst Du Dir übrigens mit \textwidth und \textheight ausgeben lassen.

Mit Deiner obigen Skalierung wird Dein Bild so hoch, wie maximal möglich.

Wenn das Seitenverhältnis Deines Bildes Höhe : Breite größer ist als Dein verfügbares y : x, dann ist Deine Seite in horizontaler Richtung nicht ganz ausgefüllt.

Wenn es anders herum ist, dann quillt Dein Bild über.

Wenn Du mit
 width=\textwidth
zusätzlich Dein Bild so breit machst, wie es der verfügbare Platz zulässt, wird Dein Bild höchstwahrscheinlich verzerrt.

Das hat mit LaTEX überhaupt nichts zu tun. Das macht WORD genau so, oder Photoshop etc.

Gruß vom Rolli

von Rolli » Mo 22. Jan 2018, 23:14

Hallo Bebbi,

lies mal das, was ich gerade in Deinem anderen Thread geantwortet hatte.

Ich verstehe überhaupt nicht, wozu Du diese wahnsinnig komplizierte bedingte Compilierung überhaupt brauchst.

Geht es um den Satzspiegel, d.h. darum, dass ein Bild auf dem linken Teil einer Doppelseite weiter nach links, und auf dem rechten Teil weiter nach rechts muss?

Derartiges regelt doch schon die richtige \documentclass, und zwar vollautomatisch, sodass man sich überhaupt nicht darum kümmern muss ???

Ansonsten gibt es z.B. für so etwas auch noch ragged2e.

Gruß vom Rolli

von Bebbi » Mo 22. Jan 2018, 22:53

Hallo Rolli,

das regelt alles:
\newcommand{\portraitphoto}[2]{%
\ifthenelse{\isodd{\thepage}}{\hspace*{-\lrdiffspace}\includegraphics[height=\textheight]{#1}}{}%	include the image and add some space => image is shifted by 0.5\cropspace to the left
	\begin{picture}(0,0)%
		\put(0,0.5){%
			\ifthenelse{\isodd{\thepage}}{%
				\makebox(0,0)[l]{%	right page
					\hspace*{\commentspace}%
					\begin{minipage}{\commentwidth}\raggedright #2\end{minipage}%
				}%
			}{%
				\makebox(0,0)[r]{%	left page
					\begin{minipage}{\commentwidth}\raggedleft #2\end{minipage}%
					\hspace*{\commentspaceeven}%
				}%
			}%
		}%
	\end{picture}%
%
	\ifthenelse{\isodd{\thepage}}{}{\hspace*{\lrdiffspace}\includegraphics[height=\textheight]{#1}}%	include the image and add some space => image is shifted by 0.5\cropspace to the right
	\newpage
}
Das sorgt dafür, dass die Beschriftung immer außen ist und das funktioniert im Prinzip auch - zumindest wenn ich die Bilder extern skaliert habe. Da muss ich irgendwie noch die Skalierung eingebaut bekommen.

Grüße

Bebbi

von Rolli » Mo 22. Jan 2018, 22:49

Hallo Bebbi, das ist völlig klar:

max width kenne ich nicht.

width stellt Dein Bild auf die gewünschte Breite und skaliert die Höhe automatisch im richtigen Verhältnis.

height skaliert Dein Bild auf die gewünschte Höhe und skaliert die Breite automatisch ebenfalls.

Gibst Du beides an, wird Dein Bild verzerrt, wenn width : height ungleich dem tatsächlichen Verhältnis ist.

Üblicherweise sagt man width = \textwidth oder width = 0.8\textwidth oder was in der Art.

Gruß vom Rolli

Nach oben