PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle neben Text - Minipage-Ausrichtung und Minipage-Breite



georginakirrin
26-02-2015, 11:09
Hallo zusammen,

nachdem ich mit der SuFu keine Lösung gefunden habe, lege ich hier mal mein Problem dar und hoffe auf eure Mithilfe.

Mein Ziel:
Ich möchte eine Tabelle neben einem mehrzeiligen Text platzieren, so dass beide Objekte am unteren Rand passend ausgerichtet sind und zusätzlich jeweils am linken bzw. rechten Seitenrand liegen. Der Text enthält dabei mehr Zeilen, als die Tabelle (falls das irgendwie wichtig ist).

Text
Text +--------+
Text | Tabelle |
Text | Tabelle |
Text +--------+


Mein Versuch:
Ich habe versucht das mit zwei nebeneinanderliegenden Minipages zu realisieren.


\documentclass[12pt,pdftex]{scrartcl}
\usepackage[ngerman, english]{babel}
\usepackage{lipsum}
\parindent0.0mm
\begin{document}
\fbox{\begin{minipage}[b][4cm][b]{.5\textwidth}%
1\\
2\\
3\\
4
\end{minipage}}\hfill%
\fbox{\begin{minipage}[b][4cm][b]{.5\textwidth}%
\hfill\begin{tabular}{|c|}%
\hline
1\\
2\\
\hline
\end{tabular}%
\end{minipage}}%

\lipsum
\end{document}


Problem Nr 1:
Wenn ich in beide Minipages nur Text schreibe ist alles gut, links und rechts sind die Minipages gleich hoch und der Inhalt ist am unteren Rand ausgerichtet. Sobald ich aber rechts eine Tabelle einfüge, vergrößert sich die entsprechende Minipage und die Tabelle rutscht nach unten.

Problem Nr 2:
Wenn ich die Breite der zwei Minipages auf 0.5*Textbreite setze, ergibt sich zusammengenommen nicht die Textbreite, sondern die rechte Minipage ragt rechts über den Text hinaus. Das Problem lässt sich lösen, wenn die Minipagesbreite auf 0.48*Textbreite setze und ein \hfill dazwischen setze. Aber komisch ist das doch trotzdem, oder nicht?


\documentclass[12pt,pdftex]{scrartcl}
\usepackage[ngerman, english]{babel}
\usepackage{lipsum}
\parindent0.0mm
\begin{document}
\fbox{\begin{minipage}[b][4cm][b]{.48\textwidth}%
1\\
2\\
3\\
4
\end{minipage}}\hfill%
\fbox{\begin{minipage}[b][4cm][b]{.48\textwidth}%
\hfill\begin{tabular}{|c|}%
\hline
1\\
2\\
\hline
\end{tabular}%
\end{minipage}}%

\lipsum
\end{document}

Problem Nr 3:
Wenn ich noch eine weitere Minipage mit Textbreite druntersetze, dann ragt diese auch rechts über den Rand hinaus.


\documentclass[12pt,pdftex]{scrartcl}
\usepackage[ngerman, english]{babel}
\usepackage{lipsum}
\parindent0.0mm
\begin{document}
\fbox{\begin{minipage}[b][4cm][b]{.48\textwidth}%
1\\
2\\
3\\
4
\end{minipage}}\hfill%
\fbox{\begin{minipage}[b][4cm][b]{.48\textwidth}%
\hfill\begin{tabular}{|c|}%
\hline
1\\
2\\
\hline
\end{tabular}%
\end{minipage}}%

\fbox{\begin{minipage}[t][4cm]{\textwidth}%
123
\end{minipage}}
\lipsum
\end{document}


Kann mir hier jemand weiterhelfen? Gern auch mit einer ganz anderen Herangehensweise - ich bin nicht an die Minipage gebunden.

esdd
26-02-2015, 11:41
Du vergisst zum einen, dass die umgebenden Boxen auch Platz benötigen. Zum einen haben die Linien eine Breite und zum anderen wird zwischen den Linien und dem Inhalt noch Abstand eingefügt.

Mit der Option b für die minipage befindet sich deren Grundlinie unten. Die Tabelle wird dann vertikal zentriert auf dieser Grundlinie eingefügt. Tabellen kennen aber ebenfalls die Option b, die Du hier verwenden musst. Das optionale Argument mit der Höhe kannst Du verwenden, wenn Du diese tatsächlich vorgeben willst oder musst. Die innere Ausrichtung ist für Dein Beispiel dagegen gar nicht nötig.


\documentclass[12pt,parskip=half-]{scrartcl}
\usepackage[ngerman, english]{babel}
\usepackage{showframe}% Seitenlayout anzeigen
\usepackage{lipsum}
\begin{document}
\fbox{\begin{minipage}[b]{\dimexpr.5\textwidth-2\fboxrule-2\fboxsep\relax}%
1\\
2\\
3\\
4
\end{minipage}}%
\fbox{\begin{minipage}[b]{\dimexpr.5\textwidth-2\fboxrule-2\fboxsep\relax}%
\hfill\begin{tabular}[b]{|c|}%
\hline
1\\
2\\
\hline
\end{tabular}%
\end{minipage}}

\fbox{\begin{minipage}[t][4cm]{\dimexpr\textwidth-2\fboxrule-2\fboxsep\relax}%
123
\end{minipage}}
\lipsum
\end{document}

Gruß
Elke

georginakirrin
26-02-2015, 12:12
Aaahh verstehe - vielen Dank Elke!
Dieses
\dimexpr\textwidth-2\fboxrule-2\fboxsep\relax ist ja super. Gibt's eigentlich irgendwo eine Übersicht über all diese Variablen \fboxrule etc., oder muss man sich da durch Trial-and-Error herantasten.

Lässt sich der Abstand zwischen Minipage-Inhalt und Minipagerand eigentlich auf 0 setzen? Ich würde die Tabelle gern ganz in die untere rechte Ecke der Minipage legen, ohne Zwischenraum zum Rand.

Ich hab's jetzt so gelöst:

\documentclass[12pt,pdftex]{scrartcl}
\usepackage[ngerman, english]{babel}
\usepackage{showframe}% Seitenlayout anzeigen
\usepackage{lipsum}
\parindent0.0mm
\begin{document}
\fbox{\begin{minipage}[b]{\dimexpr.5\textwidth-2\fboxrule-2\fboxsep\relax}%
1\\
2\\
3\\
4
\end{minipage}}%
\hfill\raisebox{-1.2mm}{%
\begin{tabular}[b]{|c|}%
\hline
1\\
2\\
\hline
\end{tabular}}%

\fbox{\begin{minipage}[t][4cm]{\dimexpr\textwidth-2\fboxrule-2\fboxsep\relax}%
123
\end{minipage}}
\lipsum
\end{document}

Aber die \raisebox mit ungefährer Distanz gefällt mir irgendwie nicht. Das müsste doch besser gehen.

georginakirrin
26-02-2015, 12:20
Da fällt mir auch gerade noch auf: Der Text in der linken Minipage ist ja auch etwas nach innen gerückt. Kann man den direkt an den linken Minipagerand rücken, dass er auf gleicher Höhe mit dem Text unten steht? Die \fboxen habe ich ja nur für die Sichtbarkeit eingefügt, die würden sich also nicht mit dem Text überschneiden.

esdd
26-02-2015, 13:26
Da fällt mir auch gerade noch auf: Der Text in der linken Minipage ist ja auch etwas nach innen gerückt. Kann man den direkt an den linken Minipagerand rücken, dass er auf gleicher Höhe mit dem Text unten steht? Die \fboxen habe ich ja nur für die Sichtbarkeit eingefügt, die würden sich also nicht mit dem Text überschneiden.

Der Text in der linken Minipage ist nicht nach links gerückt. Die \fbox fügt den Abstand \fboxsep zwischen Rahmen und Minipage ein. Der Abstand des Textes der Minipage von linken Rand ist also die Summe aus der Linienbreite (\fboxrule) und dem Abstand zwischen Rahmen und Inhalt(\fboxsep). Wenn die \fbox nur der Sichtbarkeit dient, dann kannst Du \setlength\fboxsep{0pt} nehmen.

Da die Tabelle mit der unteren Tabellenlinie auf der Grundlinie sitzt, willst Du sie eventuell um \dp\strutbox und \arrayrulewidth nach unten schieben, wenn keine weiteren Abstände ins Spiel kommen. Wenn Du auf die untere Linie der Tabelle verzichtest, musst Du gar nichts verschieben.

Gruß
Elke

georginakirrin
27-02-2015, 14:45
Danke, konnte für's erste keinen Fehler mehr finden. ;-)