Seite 1 von 1
Grafik, die auf die verbleibende Breite skaliert wird
Verfasst: Di 20. Sep 2011, 13:40
von markus_123
Hallo,
ich möchte zwei Grafiken nebeneinander setzen. Rechts eine mit fester Breite und Höhe, links davon - unmittelbar anschließend - eine, mit fester Höhe, deren Breite aber so angepasst wird, dass das Gesamtkonstrukt \textwidth breit ist.
Ich hoffe auf Vorschläge von Leuten, die so was schon mal gemacht haben, bin aber natürlich für alle Ideen offen - mit meinen eigenen Ideen bin ich leider zu nichts brauchbarem gekommen.
Danke
Markus
Verfasst: Di 20. Sep 2011, 19:45
von skater
\documentclass{scrartcl}
\usepackage{calc}
\begin{document}
\begingroup
\parindent0pt
\rule{10em}{10em}
\rule{\textwidth-10em-\widthof{ }}{10em}
\par
\endgroup
\begingroup
\parindent0pt
\rule{\textwidth}{10em}
\par
\endgroup
\end{document}
Verfasst: Di 20. Sep 2011, 21:34
von bloodworks
Heu Skater, ich hoffe du hast nix dagegen, wenn ich dein Beispiel etwas gepimmt habe:
\documentclass{scrartcl}
\usepackage{calc}
\begin{document}
\begingroup
\parindent0pt
\rule{10em}{10em}%hier wichtig!
\rule{\textwidth-10em}{10em}
\par
\endgroup
% Jetzt mit einstellbarem abstand
\newlength{\abst}
\setlength{\abst}{1cm}
\begingroup
\parindent0pt
\rule{10em}{10em}%
\hspace{\abst}\rule{\textwidth-10em-\abst}{10em}
\par
\endgroup
\begingroup
\parindent0pt
\rule{\textwidth}{10em}
\par
\endgroup
\end{document}
Danke!
Verfasst: Mi 21. Sep 2011, 11:38
von markus_123
Danke!
Das beantwortet meine Frage und funktioniert einwandfrei in dem Kontext, wo ich es brauche.
Eine kleine Herausforderung noch dazu:
Geht das auch, wenn die Breite des rechten Objekts nicht im Vorhinein bekannt ist?
Markus
Verfasst: Mi 21. Sep 2011, 12:04
von Xenara
Man kann mit \widthof arbeiten. Hier mal ein Vorschlag, trifft das deine Idee?
\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{calc}
\usepackage{graphicx}
\usepackage{blindtext}
\newlength{\tmpmywidth}
\begin{document}
\blindtext
% Befehl \mypic{Bild links}{\includegraphics[...]{Bild rechts}}
% Bild links (nur den Dateinamen eingeben) wird mit fixer Höhe (hier: 3cm) auf die passende Breite skaliert
% Bild rechts muss mit \includegraphics eingegeben werden, da sonst die fixe Breite nicht bekannt ist.
\newcommand{\mypic}[2]{%
\setlength{\tmpmywidth}{\textwidth-\widthof{#2}}%
\noindent\includegraphics[width=\tmpmywidth, height=3cm]{#1}#2%
}
\mypic{Testbild}{\includegraphics[width=10cm, height=5cm]{Testbild}}
\blindtext
\mypic{Testbild}{\includegraphics[width=1cm]{Testbild}}
\mypic{Testbild}{\rule{5cm}{1cm}}
\end{document}
Oder, damit die Eingabe mal mit mal ohne includegraphics nicht so verwirrend ist, gehts auch so. Dann muss aber zwingend die Variable \tmpmywidth als Bildbreite gesetzt werden (sonst wird nicht skaliert):
\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{calc}
\usepackage{graphicx}
\usepackage{blindtext}
\newlength{\tmpmywidth}
\begin{document}
\blindtext
% Befehl \mypic{\includegraphics[width=\tmpmywidth]{Bild links}}{\includegraphics[...]{Bild rechts}}
\newcommand{\mypic}[2]{%
\setlength{\tmpmywidth}{\textwidth-\widthof{#2}}%
\noindent#1#2%
}
\mypic{\includegraphics[width=\tmpmywidth, height=3cm]{Testbild}}{\includegraphics[width=10cm, height=5cm]{Testbild}}
\blindtext
\mypic{\includegraphics[width=\tmpmywidth, height=3cm]{Testbild}}{\includegraphics[width=1cm]{Testbild}}
\mypic{\includegraphics[width=\tmpmywidth, height=3cm]{Testbild}}{\rule{5cm}{1cm}}
\end{document}
Verfasst: Do 22. Sep 2011, 19:08
von markus_123
Perfekt! Danke.
Die "kritische" Version ist
\mypic{Testbild}{\includegraphics[height=5cm]{Testbild}}
bei der ich also gar nicht weiß, wie breit das Bild wird (wenn ich nicht vorher den Taschenrechner bemühe und ein fixes Seitenverhältnis habe).
Ich hatte selber \widthof{...} ausprobiert, aber ohne eine Länge zu definieren, direkt im width=... Das scheint nicht zu gehen.
Danke für die Hilfe!
Markus