Archiv verlassen und diese Seite im Standarddesign anzeigen : minipage vs. textwidth
Hallo,
ich versuche eine Art tabellarische Übersicht (wie bspw. beim Lebenslauf) mit minipages zu erstellen. Dabei will ich die gesamte Breite der Seite ausnutzen, d.h. wenn die linke minipage die Breite l hat, dann soll die rechte minipage die Breite r = Textbreite - l besitzen.
Mein Code sieht folgendermaßen aus:
\documentclass[11pt,a4paper,draft]{scrartcl}
\usepackage[scale=0.8]{geometry}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\newlength{\leftside}
\setlength{\leftside}{.175\textwidth}
\newlength{\rightside}
\setlength{\rightside}{\textwidth}
\addtolength{\rightside}{-\leftside}
\begin{document}
\setlength{\parindent}{0pt}
\hspace*{\leftside}Rechts 0\\
\hspace*{\leftside}\rule[3mm]{\rightside}{.25ex}
\begin{minipage}[c]{\leftside}
Links 1
\end{minipage}
\begin{minipage}[c]{\rightside}
\raggedright
Rechts 1
\end{minipage}\\
\begin{minipage}[c]{\leftside}
Links 2
\end{minipage}
\begin{minipage}[c]{\rightside}
\raggedright
Rechts 2
\end{minipage}
\end{document}
Das Problem ist jetzt, dass die beiden minipages Overfull hbox Warnungen erzeugen obwohl ich ja die Breiten explizit so definiert habe, dass sie gerade der Textbreite entsprechen. Scheinbar setzt LaTeX die Größe der linken minipage falsch oder LaTeX setzt einen gewissen Pufferraum zwischen die linke und die rechte minipage. Ich vermute mal, dass die rechte minipage dadurch ein Stück nach rechts verschoben wird und die Overfull hbox Warnung erzeugt.
Man sieht diesen Fehler auch daran, dass zwar "Rechts 1" und "Rechts 2" schön aneinander ausgerichtet untereinander stehen; allerdings steht der Text "Rechts 0" ein ganzes Stück weiter links als "Rechts 1" und "Rechts 2".
Die Ausrichtung von "Rechts 0" mit "Rechts 1" und "Rechts 2" bekomme ich dadurch in den Griff, dass ich auch die Überschrift, also "Rechts 0" + Linie mit minipages erzeuge:
\begin{minipage}[c]{\leftside}
~
\end{minipage}
\begin{minipage}[c]{\rightside}
Rechts 0\\
\rule[3mm]{\rightside}{.25ex}
\end{minipage}\\
Genau wie bei den minipages im obigen Minimalbeispiel wirft mir das halt gleich die nächste Overfull hbox Warnung - ist ja das gleiche Problem.
Danke für die Hilfe
ich versuche eine Art tabellarische Übersicht (wie bspw. beim Lebenslauf) mit minipages zu erstellen. Dabei will ich die gesamte Breite der Seite ausnutzen, d.h. wenn die linke minipage die Breite l hat, dann soll die rechte minipage die Breite r = Textbreite - l besitzen.
Mein Code sieht folgendermaßen aus:
\documentclass[11pt,a4paper,draft]{scrartcl}
\usepackage[scale=0.8]{geometry}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\newlength{\leftside}
\setlength{\leftside}{.175\textwidth}
\newlength{\rightside}
\setlength{\rightside}{\textwidth}
\addtolength{\rightside}{-\leftside}
\begin{document}
\setlength{\parindent}{0pt}
\hspace*{\leftside}Rechts 0\\
\hspace*{\leftside}\rule[3mm]{\rightside}{.25ex}
\begin{minipage}[c]{\leftside}
Links 1
\end{minipage}%
\begin{minipage}[c]{\rightside}
\raggedright
Rechts 1
\end{minipage}\\
\begin{minipage}[c]{\leftside}
Links 2
\end{minipage}%
\begin{minipage}[c]{\rightside}
\raggedright
Rechts 2
\end{minipage}
\end{document}
Das Problem ist jetzt, dass die beiden minipages Overfull hbox Warnungen erzeugen obwohl ich ja die Breiten explizit so definiert habe, dass sie gerade der Textbreite entsprechen. Scheinbar setzt LaTeX die Größe der linken minipage falsch oder LaTeX setzt einen gewissen Pufferraum zwischen die linke und die rechte minipage. Ich vermute mal, dass die rechte minipage dadurch ein Stück nach rechts verschoben wird und die Overfull hbox Warnung erzeugt.
du hast die Leerzeichen zwischen den minipages nicht beseitigt, siehe oben!
Herbert
Vielen Dank es funktioniert ...
... aber ich versteh nicht warum :D
Das %-Symbol dient doch zum Einleiten von Kommentaren. Wieso kann ich dadurch dann den Zwischenraum zwischen den minipages eleminieren? Kann man das irgendwo nachlesen?
Vielen Dank es funktioniert ...
... aber ich versteh nicht warum :D
Das %-Symbol dient doch zum Einleiten von Kommentaren. Wieso kann ich dadurch dann den Zwischenraum zwischen den minipages eleminieren? Kann man das irgendwo nachlesen?
Ein Zeilenende ist dasselbe wie ein Leerzeichen. Durch % beginnt die
folgende Zeile aber direkt hinter der vorhergehenden. Leerzeichen am Zeilenanfang
werden dabei grundsätzlich ignoriert.
Herbert
Vielen Dank für die Erklärung voss.
Ein letztes Problemchen habe ich jetzt noch: bei mehrzeiligen minipages stimmt der Zeilenabstand zur nächsten - d.h. zur darunterliegenden - minipage nicht mehr (der Zeilenabstand innerhalb der minipages ist aber weiterhin korrekt und auch der Zeilenabstand zur darüberliegenden minipage ist korrekt sofern die darüberliegende minipage nicht auch mehrzeilig ist).
\documentclass[11pt,a4paper,draft]{scrartcl}
\usepackage[scale=0.8]{geometry}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\newlength{\leftside}
\setlength{\leftside}{.175\textwidth}
\newlength{\rightside}
\setlength{\rightside}{\textwidth}
\addtolength{\rightside}{-\leftside}
\begin{document}
\setlength{\parindent}{0pt}
\hspace*{\leftside}Rechts 0\\
\hspace*{\leftside}\rule[3mm]{\rightside}{.25ex}
\begin{minipage}[t]{\leftside}
Links 1
\end{minipage}%
\begin{minipage}[t]{\rightside}
\raggedright
Rechts 1 Rechts 1 Rechts 1 Rechts 1 Rechts 1 Rechts 1 Rechts 1 Rechts 1
Rechts 1 Rechts 1 Rechts 1 Rechts 1 Rechts 1 Rechts 1 Rechts 1 Rechts 1
Rechts 1 Rechts 1 Rechts 1 Rechts 1 Rechts 1 Rechts 1 Rechts 1 Rechts 1
\end{minipage}\\
\begin{minipage}[t]{\leftside}
Links 2
\end{minipage}%
\begin{minipage}[t]{\rightside}
\raggedright
Rechts 2 Rechts 2 Rechts 2 Rechts 2 Rechts 2 Rechts 2 Rechts 2 Rechts 2
Rechts 2 Rechts 2 Rechts 2 Rechts 2 Rechts 2 Rechts 2 Rechts 2 Rechts 2
Rechts 2 Rechts 2 Rechts 2 Rechts 2 Rechts 2 Rechts 2 Rechts 2 Rechts 2
Rechts 2 Rechts 2 Rechts 2 Rechts 2 Rechts 2 Rechts 2 Rechts 2 Rechts 2
\end{minipage}
\begin{minipage}[t]{\leftside}
Links 3
\end{minipage}%
\begin{minipage}[t]{\rightside}
\raggedright
Rechts 3
\end{minipage}\\
\begin{minipage}[t]{\leftside}
Links 4
\end{minipage}%
\begin{minipage}[t]{\rightside}
\raggedright
Rechts 4 Rechts 4 Rechts 4 Rechts 4 Rechts 4 Rechts 4 Rechts 4 Rechts 4
Rechts 4 Rechts 4 Rechts 4 Rechts 4 Rechts 4 Rechts 4 Rechts 4 Rechts 4
Rechts 4 Rechts 4 Rechts 4 Rechts 4 Rechts 4 Rechts 4 Rechts 4 Rechts 4
\end{minipage}
\end{document}
Wäre toll, wenn ihr mir dabei nochmal helfen könntet.
Moin moin,
warum nimmst Du hier nicht einfach eine Tabelle?
MfG
Hi,
das liegt zum einen daran, dass es mich einfach interessiert, warum der Zeilenabstand nach mehrzeiligen minipages nicht mehr stimmt (und natürlich wie man das Problem lösen kann) und zum anderen liegt's daran, dass ich's ursprünglich mit Tabellen versucht (und zu meiner Schande nicht hinbekommen) habe.
Zunächst hatte ich versucht alles mit einer Tabelle zu machen, also sowohl die Überschrift mit der Linie darunter in der erstem Zeile in der rechten Spalte und darunter dann eben die eigentlichen Inhalte bestehend aus einem linken und einem rechten Textteil. Allerdings weis ich nicht, wie ich bei Tabellen die horizontale Linie formatieren kann, so dass sie eine bestimmte Farbe und Dicke hat.
Aus diesem Grund habe ich dann die Überschrift mit der Linie darunter wie in den obigen Codebeispielen erstellt (mit \hspace*{\leftside}) und nur die Inhalte mit Hilfe einer Tabelle. Dabei bekomme ich dann aber eine Overfull hbox Warnung und die Einträge der rechten Spalte stehen aus diesem Grund nicht mehr unter der Überschrift (bei dem Minimalbeispiel unten sind die Einträge R1 und R2 rechts von R0; wenn ich p{\leftside} durch X ersetze verschwindet zwar die Overfull hbox Warnung, R1 und R2 stehen dann aber links von R0; wenn ich p{\rightside} durch X ersetze verschwindet die Overfullhbox Warnung zwar ebenfalls, dafür stehen R1 und R2 wieder rechts von R0).
\documentclass[11pt,a4paper,draft]{scrartcl}
\usepackage[scale=0.8]{geometry}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tabularx}
\usepackage{color}
\newlength{\leftside}
\setlength{\leftside}{.175\textwidth}
\newlength{\rightside}
\setlength{\rightside}{\textwidth}
\addtolength{\rightside}{-\leftside}
\definecolor{grau}{rgb}{0.65,0.65,0.65}
\definecolor{schwarz}{rgb}{0,0,0}
\begin{document}
\setlength{\parindent}{0pt}
\hspace*{\leftside}Rechts 0\\
\hspace*{\leftside}\color{grau}\rule[3mm]{\rightside}{.25ex}
\color{schwarz}
\begin{tabularx}{\textwidth}{p{\leftside}p{\rights ide}}
Links 1&Rechts 1\\
Links 2&Rechts 2
\end{tabularx}
\end{document}
Die Überschrift mit der Linie mal ganz außen vor gelassen ist diese Situation (Tabelle über die gesamte Breite mit zwei fest vorgegebenen Spalten) schon wieder so ein Paradebeispiel wo ich langsam echt vom Glauben abfalle. Was ist bitte an
\begin{tabularx}{\textwidth}{p{\leftside}p{\rights ide}}
Links 1&Rechts 1\\
Links 2&Rechts 2
\end{tabularx}
so verkehrt? \leftside plus \rightside ergibt bei mir exakt \textwidth. Wieso klappt dann die obige Definition nicht ohne Overfull hbox Warnung? Scheinbar hat die Tabelle noch irgendeinen Innen- oder Außenabstand und wird deswegen zu groß. Aber wieso klappt's nichtmal, dass der Text der rechten Spalte unter der Überschrift steht, wenn ich
\begin{tabularx}{\textwidth}{p{\leftside}X}
Links 1&Rechts 1\\
Links 2&Rechts 2
\end{tabularx}
angebe? Die linke Spalte sollte jetzt wohl exakt so breit sein, wie \hspace*{\leftside} und der Text in der rechten Spalte demnach unter der Überschrift. Aber Pustekuchen... .
Ich denke die einzig gangbare Vorgehensweise ist es, wenn ich tatsächlich auch die Überschrift mit Hilfe der Tabelle erstelle, d.h. die horizontale Linie so formatiert bekomme, wie ich mir das vorstelle (im Moment hieße das eh nur Dicke und Farbe).
Die Überschrift mit der Linie mal ganz außen vor gelassen ist diese Situation (Tabelle über die gesamte Breite mit zwei fest vorgegebenen Spalten) schon wieder so ein Paradebeispiel wo ich langsam echt vom Glauben abfalle. Was ist bitte an
\begin{tabularx}{\textwidth}{p{\leftside}p{\rights ide}}
Links 1&Rechts 1\\
Links 2&Rechts 2
\end{tabularx}
so verkehrt? \leftside plus \rightside ergibt bei mir exakt \textwidth. Wieso klappt dann die obige Definition nicht ohne Overfull hbox Warnung? Scheinbar hat die Tabelle noch irgendeinen Innen- oder Außenabstand und wird deswegen zu groß. Aber wieso klappt's nichtmal, dass der Text der rechten Spalte unter der Überschrift steht, wenn ich
dir müsste doch mal auffallen, dass zwischen Tabellenspalten ein Freiraum ist.
Den gibt es auch noch links und rechts von der Tabelle. Insgesamt pro Spalte
2\tabcolsep
\begin{tabularx}{\textwidth}{@{}p{\leftside}@{}p{\ rightside}@{}}
ist dann erst exakt, wobei hier eine tabularx witzlos ist, da reicht eine tabular.
Herbert
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.