Grösse Figure: Entweder 8.2 cm oder 12.6 cm Breite

Tabellen und Grafiken erstellen und anordnen


Rnezi

Grösse Figure: Entweder 8.2 cm oder 12.6 cm Breite

Beitrag von Rnezi »

Hallo Leute

Ich suche seit einer Ewigkeit eine Möglichkeit, wie ich eine ziemlich spezifische Grösse bei den Abbildungen hinkriege. Die Grafiken im Dokument sollen alle entweder 8.2 cm oder 12.6 cm breit sein. Die Höhe sollte maximal 19.2 cm betragen. Latex sollte also sich für eine dieser Breiten entscheiden, ohne die maximale Höhe zu überschreiten (und natürlich ohne die Proportion zwischen Länge und Breite des PNG's zu verändern). Jede Grafik sollte also 12.6 cm breit sein; unter der Voraussetzung dass die Höhe dann nicht höher als 19.2 ausfällt. Sollte dies nicht der Fall sein, soll die Breite 8.2 cm sein und die Höhe von Latex (unter Berücksichtigung der Proportionen) angepasst werden.

Ich habe bis jetzt keinen Befehl gefunden, der dem gerecht wird. Hat jemand eine Idee? Oder weiss zumindest wie man diese 'Entweder-oder-Logik' programmieren könnte?

Hier mal das was ich bis jetzt habe:
\documentclass[12pt]{report}

\usepackage[german]{babel}
\usepackage{graphicx}
\usepackage{caption} 

\begin{document}


\begin{figure}
\caption{Titel} 
\begin{center}
		\includegraphics[width=12.6cm,height=19.2cm,keepaspectratio]{Pfad/Titel.png}
\end{center}
\caption*{\small\centering{Quelle: XY}
\end{figure}

\end{document}
Zurzeit wird nur die Grösse jeweils angepasst. Ich will aber, dass die Grafik entweder die eine Breite hat, oder die andere.

LG rnezi

Gast

Beitrag von Gast »

Da Dein Beispiel nicht lauffähig ist sei einfach nur darauf hingewiesen dass es \settowidth und \settoheight gibt, mit denen man eine Grafik vor dem Setzen ausmessen kann. Dazu gibt es Pakete wie ifthen oder auch das TeX-Primitiv \ifdim mit denen Entscheidungen möglich sind.

rnezi

Beitrag von rnezi »

Oh Tut mir Leid. Damit sollte es klappen:
\documentclass[12pt]{report}

\usepackage[german]{babel}
\usepackage{graphicx}
 

\begin{document}


\begin{figure} 
\begin{center}		\includegraphics[width=12.6cm,height=19.2cm,keepaspectratio]{Titel.jpg}
\end{center}

\end{figure}

\end{document}

Gast

Beitrag von Gast »

Klick mal auf den Overleaf-Link über dem Beispiel. Und dann lies die Minimalbeispiel-Anleitung.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Eingebaut ist sowas nicht. Aber du kannst ja leicht messen, ob das Bild zu hoch ist:
\documentclass[a4paper,12pt]{book}
\usepackage{graphicx}
\usepackage{etoolbox}
\begin{document}
\newsavebox\mytempgraphicbox
\sbox\mytempgraphicbox{\includegraphics[width=12.6cm]{example-image}}
\ifdimcomp{\ht\mytempgraphicbox}{>}{19.2cm}
     {\includegraphics[width=8.2cm]{example-image}}
     {\usebox{\mytempgraphicbox}}



\end{document}

Rnezi

Beitrag von Rnezi »

u_fischer hat geschrieben:Eingebaut ist sowas nicht. Aber du kannst ja leicht messen, ob das Bild zu hoch ist:
\documentclass[a4paper,12pt]{book}
\usepackage{graphicx}
\usepackage{etoolbox}
\begin{document}
\newsavebox\mytempgraphicbox
\sbox\mytempgraphicbox{\includegraphics[width=12.6cm]{example-image}}
\ifdimcomp{\ht\mytempgraphicbox}{>}{19.2cm}
     {\includegraphics[width=8.2cm]{example-image}}
     {\usebox{\mytempgraphicbox}}



\end{document}
Hey danke dir vielmals für deine Hilfe. Es scheint so als würde es funktionieren.
Ich verstehe aber nicht was du mit 'einbauen' meinst. Und auch nicht was du mit leicht messen meinst? Indem dass ich alles drucke und dann jede Grafik ausmesse? Das wäre ehrlich gesagt ziemlich mühsam, da doch einige Grafiken am Ende meiner Arbeit zusammenkommen werden.

LG Rnezi

Beinschuss
Forum-Meister
Forum-Meister
Beiträge: 809
Registriert: Di 2. Okt 2012, 21:42
Wohnort: NRW

Beitrag von Beinschuss »

Ulrike meint, dass es in LaTeX bisher keinen "eingebauten" Befehl gibt, der das von Dir gewünschte macht. Daher hat sie Dir einen solchen Befehl punktgenau programmiert. Und jetzt probierst Du dieses von Ulrike erstellte Minimalbeispiel am besten mit Deinen Grafiken aus, und Du wirst sehen, dass dieser neue Befehl für Dich das Messen übernimmt.

RNezi

Beitrag von RNezi »

Beinschuss hat geschrieben:Ulrike meint, dass es in LaTeX bisher keinen "eingebauten" Befehl gibt, der das von Dir gewünschte macht. Daher hat sie Dir einen solchen Befehl punktgenau programmiert. Und jetzt probierst Du dieses von Ulrike erstellte Minimalbeispiel am besten mit Deinen Grafiken aus, und Du wirst sehen, dass dieser neue Befehl für Dich das Messen übernimmt.
Alles klar. Danke sehr für deine Ausführungen.

LG RNezi

Gast

Beitrag von Gast »

Sinnvoll wäre sicher auch in der [d]etoolbox[/d]-Anleitung die Anweisung \ifdimcomp und in einer ausführlichen LaTeX-Einführung \newsavebox, \usebox und \ht nachzulesen, um wenigstens halbwegs zu verstehen, wie das ganze funktioniert. Sonst verwendest du womöglich \newsavebox noch mehrfach, statt die eine Box immer wieder zu verwenden (und am besten das ganze in einer eigenen, in der Präambel definieren Anweisung zu verstecken).

Und wenn das ganze dann tatsächlich funktioniert, setzt du am besten auch noch den Status auf beantwortet. :roll:

RNezi

Beitrag von RNezi »

Rnezi hat geschrieben:
u_fischer hat geschrieben:Eingebaut ist sowas nicht. Aber du kannst ja leicht messen, ob das Bild zu hoch ist:
\documentclass[a4paper,12pt]{book}
\usepackage{graphicx}
\usepackage{etoolbox}
\begin{document}
\newsavebox\mytempgraphicbox
\sbox\mytempgraphicbox{\includegraphics[width=12.6cm]{example-image}}
\ifdimcomp{\ht\mytempgraphicbox}{>}{19.2cm}
     {\includegraphics[width=8.2cm]{example-image}}
     {\usebox{\mytempgraphicbox}}




\end{document}
Dein Code scheint sehr gut zu funktionieren. Danke dafür! Habe aber noch das Problem, dass ich bei mehreren Grafiken Fehler bekomme. Ich habe deshalb als letzte Zeile noch
\let\mytempgraphicbox\undefined
eingefügt:
\documentclass[a4paper,12pt]{book}
\usepackage{graphicx}
\usepackage{etoolbox}
\begin{document}
\newsavebox\mytempgraphicbox
\sbox\mytempgraphicbox{\includegraphics[width=12.6cm]{example-image}}
\ifdimcomp{\ht\mytempgraphicbox}{>}{19.2cm}
     {\includegraphics[width=8.2cm]{example-image}}
     {\usebox{\mytempgraphicbox}}
\let\mytempgraphicbox\undefined

\newsavebox\mytempgraphicbox
\sbox\mytempgraphicbox{\includegraphics[width=12.6cm]{example-image2}}
\ifdimcomp{\ht\mytempgraphicbox}{>}{19.2cm}
     {\includegraphics[width=8.2cm]{example-image2}}
     {\usebox{\mytempgraphicbox}}
\let\mytempgraphicbox\undefined

\end{document}
Damit sollte ich hoffentlich keine Probleme haben.

LG Rnezi

Antworten