Grafik, die auf die verbleibende Breite skaliert wird Thema ist als GELÖST markiert

Tabellen und Grafiken erstellen und anordnen


markus_123

Grafik, die auf die verbleibende Breite skaliert wird

Beitrag 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

skater
Forum-Guru
Forum-Guru
Beiträge: 356
Registriert: Do 12. Mär 2009, 14:34
Wohnort: Berlin

Beitrag 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}

Benutzeravatar
bloodworks
Moderator
Moderator
Beiträge: 1425
Registriert: Mo 19. Jan 2009, 10:52
Wohnort: /dev/null

Beitrag 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}
[1] Nützliche Webdokumente für Anfänger und Fortgeschrittene
[2]Minimalbeispiel | [3]FAQ
[4]Regelwerk | [5] Knigge
Wenn nicht anderst angegeben ist mein System: texlive 2012, pdflatex, x86-64, Snow Leopard utd.
Angehöriger der Liga zur Verwendung von texdoc
texdoc mathmode koma l2picfaq l2tabu lshort-en
Achtung: Aufforderungen ein Minimalbeispiel oder mehr Erklärungen zu einer Frage zu liefern sind keine persönlichen Angriffe. Sie dienen viel mehr dazu die Kommunikation zwischen Fragendem und potentiellen Helfern zu erleichtern und zu präzisieren.


markus_123

Danke!

Beitrag 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

Xenara
Forum-Meister
Forum-Meister
Beiträge: 682
Registriert: Mi 25. Nov 2009, 09:41

Beitrag 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} 

markus_123

Beitrag 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

Antworten