Seite 1 von 2
Grösse Figure: Entweder 8.2 cm oder 12.6 cm Breite
Verfasst: Di 9. Mai 2017, 14:07
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
Verfasst: Di 9. Mai 2017, 15:05
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.
Verfasst: Di 9. Mai 2017, 16:21
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}
Verfasst: Di 9. Mai 2017, 16:28
von Gast
Klick mal auf den Overleaf-Link über dem Beispiel. Und dann lies die
Minimalbeispiel-Anleitung.
Verfasst: Di 9. Mai 2017, 16:51
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}
Verfasst: Di 9. Mai 2017, 20:06
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
Verfasst: Mi 10. Mai 2017, 08:44
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.
Verfasst: Mi 10. Mai 2017, 08:48
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
Verfasst: Mi 10. Mai 2017, 09:21
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.

Verfasst: Mi 10. Mai 2017, 09:31
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