PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Text und Bild nebeneinander oben bündig



Dirk2718
23-02-2012, 22:27
Hallo Zusammen,

bisher hat mir diese Forum schon viel bei meinen ersten Schritten in LaTeX weitergeholfen. Jetzt stehe ich aber vor einem Problem wo ich nicht weiterkomme.
Ich möchte ein Bild und Text nebeneinander oben bündig anordnen. Unten bündig ist kein Problem. Das habe ich über ein \parbox und eine \makebox oder zwei minipages hinbekommen.
Hier ein Beispiel mit den Boxen:

\fbox{
\parbox[b][][t]{0.35\textwidth}{
Tewxt \\
\\
Text \\
\\
Text
}
}
\fbox{
\makebox[0.65\textwidth][r]{
\includegraphics[width=0.62\textwidth]{Welcome}
}
}

Aber wie klappt das oben bündig? Ich möchte nur ungern eine feste Höhe vergeben. Außer wenn das der einzige Weg wäre.

Vielen Dank und Grüße
Dirk

LuPi
24-02-2012, 09:53
Prinzipiell besteht hier die Möglichkeit, die beiden Boxen vorher abzuspeichern
(\savebox), zu vermessen und anschließend mit \raisebox korrekt zu
platzieren. Ob es hierfür einfachere Lösungen gibt, kann ich momentan nicht
sagen. Auf jeden Fall vereinfachst Du potenziellen Hilfswilligen die Arbeit,
wenn Du ein Minimalbeispiel (minimalbeispiel.de) zur Verfügung stellst. Und das möglichst auch
noch in der Code-Umgebung (#-Button).


\documentclass{scrartcl}
\begin{document}
\fbox{%
\parbox[b][][t]{0.35\textwidth}{%
Tewxt \\
\\
Text \\
\\
Text
}
}%
\framebox[0.65\textwidth][r]{%
\rule{0.6\linewidth}{3cm}
}
\end{document}

u_fischer
24-02-2012, 10:11
Ein Bild ist wie ein große "A": Es "sitzt" normalerweise auf der aktuellen Grundlinie. Du musst es also verschieben:


\documentclass{article}

\textwidth=20cm
\begin{document}
\noindent
\fbox{\parbox[t]{1cm}{%
Tewxt \\
\\
Text \\
\\
Text}}%
\rule{0.5cm}{0.4pt}Grundlinie\rule{0.5cm}{0.4pt}
\fbox{\parbox[b]{1cm}{%
Tewxt \\
\\
Text \\
\\
Text}}
\rule{0.5cm}{0.4pt}Grundlinie\rule{0.5cm}{0.4pt}
\fbox{\makebox{abc\rule{1cm}{7cm}}}
\rule{0.5cm}{0.4pt}Grundlinie\rule{0.5cm}{0.4pt}
\fbox{\raisebox{-\height}{\makebox{abc\rule{1cm}{7cm}}}}

\end{document}

Pass außerdem etwas mit deinen Klammern auf: Du fügst an diversen Stellen Leerzeichen ein.

Dirk2718
24-02-2012, 15:29
Hallo Zusammen,

vielen Dank für eure Antworten.
Der Vollständigkeit halber hier nochmal mein Quellcode, diesmal lauffähig:

\documentclass{scrreprt}
\usepackage{graphicx}

\graphicspath{{./Graphiken/}}

\begin{document}

\chapter{Nr. 1}
% erste Möglichkeit mit boxen
\fbox{
\parbox[b][][t]{0.35\textwidth}{
Text \\
\vfill
Text \\
\vfill
Text \\
}
}
\fbox{
\makebox[0.65\textwidth][r]{
\includegraphics[width=0.62\textwidth]{Welcome}
}
}

\chapter{Nr. 1a}

\fbox{\parbox[t]{0.3\textwidth}{
Text \\
\vfill
Text \\
\vfill
Text \\
}}
\rule{0.5cm}{0.4pt}G\rule{0.5cm}{0.4pt}
\fbox{\raisebox{-1\height}{\makebox[0.6\textwidth][r]{\includegraphics[width=0.5\textwidth]{Welcome}}}}

\chapter{Nr. 2}
% hier alles mit minipages
\fbox{
\begin{minipage}{\textwidth}
% minipage mit (Blind-)Text
\fbox{
\begin{minipage}[b][][t]{0.35\textwidth}
Text \\
\vfill
Text \\
\vfill
Text \\
\end{minipage}
}
% Auffüllen des Zwischenraums
\hfill
% minipage mit Grafik
\fbox{
\begin{minipage}[b][][t]{0.6\textwidth}
% \textwidth bezieht sich nun auf die Minipage
\includegraphics[width=\textwidth]{Welcome}
\end{minipage}
}
\end{minipage}
}

\end{document}


Kapitel 1 und 3 sind meine Versuche. Das 2. Kapitel ist mit der raisbox von u_fischer. Kann man die raisebox auch um (\height - Höhe(A)) nach unten verschieben? Bisher schlugen alle Versuche dahingehend fehl. 0.9\height würde es dann auch tun.

Zu den Leerzeichen (und fboxen):
Die fboxen sind nur zur Visualisierung drumherum, die kommen nachher weg. Wie schlimm sind dann die Leerzeichen, die ich mir da einfange? Ich habe die Umbrüche zur besseren Übersichtlichkeit eingebaut, es wäre schon sehr unübersichtlich wenn alles in eine Zeile müsste.

Vielen Dank und Grüße
Dirk

LuPi
24-02-2012, 15:36
Der Vollständigkeit halber hier nochmal mein Quellcode, diesmal lauffähig:

Das stimmt so nicht ganz, da uns Deine Grafik fehlt. Deshalb haben wir Dein
\includegraphics durch ein \rule ersetzt.


Wie schlimm sind dann die Leerzeichen, die ich mir da einfange?

Schlimm? Kommt darauf an. Du darfst Dich halt nicht über eventuelle,
"rätselhafte" horizontale Abstände (und deren unter Umständen noch
rätselhaftere Konsequenzen) wundern.

Dirk2718
24-02-2012, 15:40
Sorry, stimmt. Die Graphik ist 500 x 560 Pixel groß und wird verkleinert. Nächstes mal ersetze ich die sofort durch ein Rule.

Ok, das habe ich gerade erfahren. Dazu helfen ja % Zeichen am Ende der Zeile, oder?
Sind eingerückte Zeilen über Tabs am Anfang genauso zu betrachten wie Leerzeichen?

Wie handhabt ihr denn Übersichtlichkeit vs. sauberer Quellcode?

Grüße
Dirk

u_fischer
24-02-2012, 15:44
Kann man die raisebox auch um (\height - Höhe(A)) nach unten verschieben?


\documentclass{article}
\begin{document}
abc
\raisebox{-\height}{\rule{1cm}{4cm}}\quad
\raisebox{-0.9\height}{\rule{1cm}{4cm}}\quad
\raisebox{\dimexpr-\height+10pt}{\rule{1cm}{7cm}}\quad
\raisebox{\dimexpr-0.5\height+4\baselineskip}{\rule{1cm}{7cm}}\quad
\end{document}


Wie schlimm sind dann die Leerzeichen, die ich mir da einfange?

Beim Test: Gar nicht. Aber im Text könnten zusätzliche Leerzeichen schon mal nicht gewünscht sein.


Sind eingerückte Zeilen über Tabs am Anfang genauso zu betrachten wie Leerzeichen?

Nein, Leerzeichen/Tabs am Anfang der Zeile werden normalerweise ignoriert. (Das kann man ändern, siehe verbatim-Umgebung, \obeyspace etc).

Dirk2718
24-02-2012, 16:08
Sehr gut! :) Danke!

Ok, nur woran merke ich wenn ich ungewünschte Leerzeichen habe? Oder macht man am Ende jeder Zeile ein %-Zeichen?

Noch eine Frage:
Warum geht hier das Rechteck nicht ganz bis zum rechten Rand? Ich hätte gedacht, dass Text und Rechteck durch die nach rechts ausgerichtete makebox bündig abschließen:

\documentclass{scrreprt}
\usepackage{blindtext}
\begin{document}

%\fbox{
\parbox[t]{0.3\textwidth}{%
Text
\\[5ex]
Text
\\[5ex]
Text
}
%}
\hfill
%\fbox{
\raisebox{-0.9\height}{%
\makebox[0.6\textwidth][r]{%
\rule{7cm}{7cm}
}
}
%}
\\

\Blindtext[1][1]

\end{document}

Viele Grüße
Dirk

Edit: Ha! Voll in die Leerzeichen reingefallen:

\raisebox{-0.9\height}{%
\makebox[0.6\textwidth][r]{%
\rule{7cm}{7cm}%
}%
}
So geht es...

LuPi
24-02-2012, 16:12
Das war das, was ich mit den "rätselhaften Konsequenzen" meinte. ;)

u_fischer
24-02-2012, 16:20
Ok, nur woran merke ich wenn ich ungewünschte Leerzeichen habe?

Das sieht man ;-)


Oder macht man am Ende jeder Zeile ein %-Zeichen?

Dann%
unterdrückst%
du%
vielleicht%
gewünschte%
Leerzeichen.

Dirk2718
24-02-2012, 16:31
Ok, also mit Gefühl das Ganze. ;)

Jetzt habe ich in dem Code noch etwas rumgespielt und bin hier gelandet:

\documentclass{scrreprt}
\usepackage{blindtext}
\begin{document}

%\fbox{
\parbox[t]{0.3\textwidth}{%
Text
\\[5ex]
Text
\\[5ex]
Text
}
%}
\hfill
%\fbox{
\raisebox{-0.9\height}{%
% \mbox{%
% \makebox[0.6\textwidth][r]{%
\rule{7cm}{7cm}%
% }%
}
%}
\\

\Blindtext[1][1]

\end{document}
Kann ich wirklich die mbox bzw. makebox weglassen, weil das Bild (bzw. rule) in der raisebox steckt?

Grüße
Dirk

u_fischer
24-02-2012, 17:07
Kann ich wirklich die mbox bzw. makebox weglassen, weil das Bild (bzw. rule) in der raisebox steckt?

\mbox sicherlich. Ein Bild ist bereits eine Box, und die wird nicht boxiger, dadurch dass du sie in weitere \box-Befehle verpackst.

Mit \makebox hingegen kannst du dein Bild in eine Box mit anderer Breite packen, z.B. in eine kleinere Box (dann hängt das Bild "raus"):


\documentclass{article}
\usepackage{color,pgf}

\begin{document}

text\pgfsetfillopacity{0.5}%
\fbox{\makebox[0cm]{\color{yellow}\rule{2cm}{4cm}}}%
\pgfsetfillopacity{1}%
text

\end{document}

Dirk2718
24-02-2012, 17:34
Noch boxiger ist gut. ;)

Ah ok, da mein Bild aber nicht raushängen muss, reicht ja die raisebox.


Jetzt habe ich mein neues Wissen angewandt und möchte eine Tabelle und ein Bild nebeneinander darstellen. Warum sind die jetzt nicht oben auf einer Linie?

\documentclass{scrreprt}

\begin{document}

%\fbox{%
\raisebox{\dimexpr-\height+\baselineskip}{%
\rule{5cm}{5cm}%
}%
%}%
\hfill
%\fbox{%
\parbox[t]{0.5\textwidth}{%
\begin{tabular}{ll}
Text1 & $\rightarrow$ Bla \\
Text2 & $\rightarrow$ BlaBla \\
Text3 & $\rightarrow$ Bla \\
Text4 & $\rightarrow$ BlaBla
\end{tabular}
}%
%}

\end{document}


Vielen Dank und Grüße
Dirk

Dirk2718
24-02-2012, 18:02
\documentclass{scrreprt}

\begin{document}

%\fbox{%
\raisebox{\dimexpr-\height+\baselineskip}{%
\rule{5cm}{5cm}%
}%
%}%
\hfill
%\fbox{%
\parbox[t][][r]{0.5\textwidth}{%
\begin{tabular}{ll}
Text1 & $\rightarrow$ Bla \\
Text2 & $\rightarrow$ BlaBla \\
Text3 & $\rightarrow$ Bla \\
Text4 & $\rightarrow$ BlaBla
\end{tabular}
}%
%}

\end{document}

Damit geht es...

u_fischer
24-02-2012, 18:10
Warum sind die jetzt nicht oben auf einer Linie?

Weil die Tabelle mittig entlang der Grundlinie ausgerichtet ist. Du brauchst die Option [t] ("abc" damit du siehst wo die Grundlinie in der parbox ist):




\documentclass{scrreprt}

\begin{document}

%\fbox{%
\raisebox{\dimexpr-\height+\baselineskip}{%
\rule{5cm}{5cm}%
}%
%}%
\hfill
%\fbox{%
\parbox[t]{0.5\textwidth}{%
abc\begin{tabular}{ll}
Text1 & $\rightarrow$ Bla \\
Text2 & $\rightarrow$ BlaBla \\
Text3 & $\rightarrow$ Bla \\
Text4 & $\rightarrow$ BlaBla
\end{tabular}
}%
%}

\bigskip


%\fbox{%
\raisebox{\dimexpr-\height+\baselineskip}{%
\rule{5cm}{5cm}%
}%
%}%
\hfill
%\fbox{%
\parbox[t]{0.5\textwidth}{%
abc\begin{tabular}[t]{ll}
Text1 & $\rightarrow$ Bla \\
Text2 & $\rightarrow$ BlaBla \\
Text3 & $\rightarrow$ Bla \\
Text4 & $\rightarrow$ BlaBla
\end{tabular}
}%
%}

\end{document}

Tabellen sind übrigens auch schon Boxen, man muss sie also nicht um jeden Preis in weitere Boxen stehen.

Dirk2718
24-02-2012, 18:14
Weil die Tabelle mittig entlang der Grundlinie ausgerichtet ist. Du brauchst die Option [t] ("abc" damit du siehst wo die Grundlinie in der parbox ist)

Ah! Ok. Danke!
Wer da wo wie ausgerichtet ist, ist für einen Neuling dann doch etwas viel.

Dirk2718
26-02-2012, 13:58
Hallo Zusammen,

ich hoffe ich darf euch nochmal zu fast demselben Problem befragen. Warum ist die box hier nicht mit dem darüberliegenden Text bündig am rechten Rand abgeschlossen?

\documentclass[parskip = half
]{scrreprt}

\usepackage{blindtext}

\begin{document}

\Blindtext[1]

\parbox[t]{0.5\textwidth}{
\Blindtext[1][1]
}
\hfill
\raisebox{\dimexpr-\height+\baselineskip}{%
\rule{4cm}{3cm}%
}

\end{document}
Wenn man das "parskip = half" wegnimmt, ist es rechtsbündig. Aber dann ist die parbox folgerichtig eingerückt. Oder ist das mit parskip = half so richtig?

Vielen Dank und Grüße
Dirk

u_fischer
26-02-2012, 14:25
Warum ist die box hier nicht mit dem darüberliegenden Text bündig am rechten Rand abgeschlossen?


Das ist der \parfillskip-Abstand. Siehe im scrguide, 3.10. Absatzauszeichnung, die Beschreibung von parfill.

Du kannst ihn global mit "parfill=half-" unterdrücken. Oder lokal mit \parfillskip=0pt oder indem du nach der \raisebox "\hspace{-\parfillskip}" benutzt.

Dirk2718
26-02-2012, 15:37
Erschöpfende Antwort. Danke!