PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : overfull und underfull \hbox in tabular-Umgebung



lhiapgpeonk
12-12-2010, 12:33
Hallöchen allerseits.

Ich beschäftige mich jetzt schon seit ca. einem Jahr mit Latex und bin aufs äußerste begeistert. Bis jetzt habe ich für alle meine Probleme im Internet eine Lösung gefunden, bei diesem leider nur einen Ansatz.

Szenario:
MiKTeX 2.8
TeXnic Center 1.0
Win7 64-bit (wenn das hilft)


Ich habe in einem Dokument mehrere Tabellen (mit zwei Spalten), in denen Vor- und Nachteile gegenübergestellt werden. Beim Erstellen bekomme ich in allen (außer der ersten Tabelle) eine overfull \hbox, wo der Text in der Zelle nicht umgebrochen wird (trotz p{8cm}) und demzufolge in die andere Spalte und aus dem Blatt herausläuft. Außerdem bekomme ich ein paar underfull boxes.

Bei meiner Recherche bin ich auf diesen Artikel (http://en.wikibooks.org/wiki/LaTeX/Errors_and_Warnings#Underfull_hbox) (und den nächsten Punkt, overfull \hbox) gestoßen. Diesen entnahm ich, dass ich wohl blöd zu trennende Worte verwendet habe, und dass das Problem zu umgehen sei, indem ich manuell Bindestriche einfüge. Das habe ich auch getan, aber diese hat er ignoriert und woanders umgebrochen. Ich suche desshalb eine Möglichkeit die Tabellen ohne diese Fehler erzeugen zu lassen. Hier das funktionsfähige (mit o.g. Umgebung getestet) Minimalbeispiel. (Ich hoffe es ist eins ;-) )

\documentclass{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{graphicx}
\graphicspath{{img/}}
\usepackage{wrapfig}
\usepackage{geometry}
\usepackage{multirow}
\usepackage{eurosym}
\geometry{includehead,includefoot,inner=2.5cm,oute r=2.5cm,top=2cm,bottom=2cm}
\renewcommand{\baselinestretch}{1.50}\normalsize

\setcounter{secnumdepth}{5}
\setcounter{tocdepth}{2}




\begin{document}

\begin{table}[ht]
\centering
\begin{tabular}{p{8cm}||p{8cm}}
\textbf{Vorteile} & \textbf{Nachteile}\\\hline\hline
Lohnabrechnung für Arbeitsperson leicht zu durchschauen & \multirow{2}{*}{Mehrleistung wird nicht honoriert} \\\cline{1-1}
Konstanter Lohn für die Arbeitsperson &\\\hline
Einfache Lohnabrechnung für den Betrieb &\multirow{2}{*}{Anreiz für Mehrleistung fehlt} \\\cline{1-1}
Die Lohnsumme bleibt für den Betrieb konstant &\\\hline
die Arbeitsperson wird nicht dazu veranlasst durch ein zu hohes Arbeitstempo ihre Gesundheit zu beeinträchtigen oder die Arbeitsmittel unzulässig hoch auszulasten & Lohnkosten pro Stück sind variabel, somit ist die Kostenrechnung für den Betrieb mit Unsicherheiten verbunden
\end{tabular}
\caption{Vor- und Nachteile des Zeitlohns}
\label{tab:VorUndNachteileDesZeitlohns}
\end{table}

\begin{table}[ht]
\centering
\begin{tabular}{p{8cm}||p{8cm}}
\textbf{Vorteile} & \textbf{Nachteile}\\\hline\hline
Mehrleistung wird dem Mitarbeiter sofort honoriert & die Arbeitsperson kann durch den Lohnanreiz veranlasst werden, ihre Dauerleistungsgrenze und die Belastbarkeit des Arbeitsmittels zu überschreiten\\\hline
\multirow{2}{*}{Fixkosten pro Mengeneinheit sinken trotz steigender Mengenleistung} & die Arbeitsperson erhält ein abhängig von der erbrachten Leistung schwankendes Arbeitsentgeld\\\cline{2-2}
& die Lohnabrechnung ist für den Betrieb ob der zu erfassenden individuellen Leistungsdaten aufwändig\\\hline
\multirow{2}{*}{die Lohnstückkosten sind konstant} & der Betrieb muss eine monatlich unterschiedliche Lohnsumme bereithalten\\\cline{2-2}
& es muss vermehrt durch zusätzliche Kontrollen auf die Einhaltung von Qualitätsanforderungen geachtet werden
\end{tabular}
\caption{Vor- und Nachteile des Akkordlohns}
\label{tab:VorUndNachteileDesAkkordlohns}
\end{table}

\begin{table}[ht]
\centering
\begin{tabular}{p{8cm}||p{8cm}}
\textbf{Vorteile} & \textbf{Nachteile}\\\hline\hline
eine höhere und bessere Leistung macht sich für die Arbeitsperson bezahlt & die Lohnabrechnung ist für die Arbeitsperson nicht immer leicht zu durchsschauen\\\hline
der Lohnanreiz und dadurch die Leistungsmotivation kann besser an die Betriebsziele angepasst werden als beim Akkordlohn & die Arbeitsperson erhält ein monatlich schwankendes Arbeitsentgelt, abhängig von der erbrachten Leistung\\\hline
\multirow{2}{*}{Das Leistungsverhalten der Arbeitsperson kann durch den Verlauf der Prämienkurve gelenkt werden} & die Leistungserfassung und Lohnabrechnung ist für den Betrieb aufwändiger\\\cline{2-2}
& der Betrieb muss wie beim Akkordlohn monatilich eine unterschiedliche Lohnsumme zur Auszahlung bereithalten
\end{tabular}
\caption{Vor- und Nachteile des Prämienlohns}
\label{tab:VorUndNachteileDesPraemienlohns}
\end{table}

\begin{table}[ht]
\centering
\begin{tabular}{p{8cm}||p{8cm}}
\textbf{Vorteile} & \textbf{Nachteile}\\\hline\hline
Begrenzung der Prämie verhindert eine Selbstüberforderung der Arbeitsperson (im Gegensatz zum Akkord) & an die Arbeitsvorbereitung werden hohe Anforderungen gestellt, hier entstehen mehr Kosten\\\hline
die innerbetriebliche Fertigungsplanung und -Steuerung sowie die Termintreue werden zwangsläufig verbessert & \multirow{2}{*}{der maximale Lohn der Arbeitsperson ist festgelegt, somit wird eine besondere Eigeninitiative nicht honoriert}\\\cline{1-1}
für die Abrechnungsperiode kann die Höchstgrenze der zu zahlenden Lohnsumme vorrausberechnet werden &
\end{tabular}
\caption{Vor- und Nachteile des Programmlohns}
\label{tab:VorUndNachteileDesProgrammlohns}
\end{table}

\end{document}

Ich hoffe Ihr versteht mein Problem und könnt/wollt mir helfen

Liebe Grüße

P.S.: Irgendwo habe ich gelesen, dass vertikale Linien in Tabellen böse sind. Warum ist das so, und gibt es eine Möglichkeit, dass ich das übernehmen kann?

mechanicus
12-12-2010, 12:54
Hi,

binde mal das Paket showframe ein.

\usepackage{showframe}
Es zeigt dir die Maße des Textkörpers graphisch. Dann siehst du, dass deine Tabellen alle zu breit sind.

Für einen besseren Umbruch hilft zu dem das Paket microtype:

\usepackage{microtype}
Durch die Einbindung reduzieren sich die Boxen schon mal enorm.

Für Tabellen, die über die Textbreite gehen sollen, empfehle ich dir das Paket tabularx.


P.S.: Irgendwo habe ich gelesen, dass vertikale Linien in Tabellen böse sind. Warum ist das so, und gibt es eine Möglichkeit, dass ich das übernehmen kann?
Hierzu schaue dir einfach mal die Beispiele des Paketes booktabs an. Dann findest du die Erklärung.

Eine Hilfe sollte Typo kurz (http://www.zvisionwelt.de/typokurz.pdf) sein.

Gruß
Marco

lhiapgpeonk
12-12-2010, 13:38
Danke für die schnelle Antwort!

Also, das Paket showframe funktioniert nicht? Ich habe aber die showframe-Option des geometry-Paktes verwendet, der Rahmen wird nur auf der ersten Seite angezeigt, aber ich verstehe was du meinst. Da habe ich mich wohl verrechnet. (Blatt: 21 cm breit, linker + rechter Rand (je 2,5 cm) macht 16 cm für den Textkörper => 2 Spalten â 8 cm ==> Da habe ich wohl noch das eine oder andere übersehen...)

microtype produziert folgenden Fehler:
! pdfTeX error (font expansion): auto expansion is only possible with scalable fonts.
<to be read again>
\endgroup \set@typeset@protect
l.79 \end{document}
Da habe ich wohl eine falsche Schriftart. (Mir ist eh aufgefallen, dass die Schrift im Pdf sehr dünn und verwaschen aussieht. im Ausdruck ist die Schrift allerdings sehr schön und filigran. Muss aber das pdf verschicken.)

Ich habe nach showframe mal die Spaltenbreiten geändert, so dass ich im Rahmen drin bin. Das Problem ist, dass er immer noch in genau den selben Zellen nicht umbricht, und das obwohl das so optisch Pi mal Daumen eigentlich keine Probleme machen sollte.
Für weitere Vorschläge bin ich dankbar :-)

Dankbar bin ich übrigens auch für die beiden Tips mit Typo kurz und Booktabs, das werde ich mir noch näher anschauen.

Liebe Grüße
Hagen

lhiapgpeonk
12-12-2010, 18:24
So, ich nochmal.

In der Zwischenzeit habe ich mal mein MiKTeX upgedatet, es ist jetzt Version 2.9. Habe nämlich das geometry-Paket upgedated und danach ging nix mehr. Jetzt bekomme ich mit der Option showframe auf jeder Seite die Ränder angezeigt.

Über die geometry-Doku habe ich auch wunderbare Grafiken gesehen, wie denn jetzt nun welche Ränder wie gesetzt sind (herrlich!).

microtype funktioniert jetzt auch, ich musste True-Type-Schriftarten einstellen. Da gibt es nur das eine Problem: Die sind alle hässlich. ;-) Und die wirklichen overfull-boxes, wo der Text weit über den Rand geht werden immer noch nicht behoben. Was mir am liebsten wäre, wäre eine Schrift, wie die Standart-Latex-Schrift Computer Modern (zumindest haben das meine Recherchen ergeben), nur halt als True-Type.

Wobei dadurch das problem mit den unverschämt langen Zeilen immer noch nicht gelöst ist. Ach ja, die Tabellen habe ich jetzt so breit, dass die schön im Rand drin bleiben.

Hat noch irgendjemand Ideen, wie ich das lösen kann?

Liebe Grüße
Hagen

u_fischer
13-12-2010, 09:43
microtype funktioniert jetzt auch, ich musste True-Type-Schriftarten einstellen. Da gibt es nur das eine Problem: Die sind alle hässlich. ;-) Und die wirklichen overfull-boxes, wo der Text weit über den Rand geht werden immer noch nicht behoben. Was mir am liebsten wäre, wäre eine Schrift, wie die Standart-Latex-Schrift Computer Modern (zumindest haben das meine Recherchen ergeben), nur halt als True-Type.

Du meinst wohl Type1 statt TrueType. Versuche \usepackage{lmodern}. Oder installiere die cm-super-Schriften (großes Paket, kann etwas dauern).

lhiapgpeonk
13-12-2010, 20:06
Hallo!

Danke für die Antwort, lmodern sieht schon mal sehr gut aus!
Wie kann ich die einzelnen Fonts aus dem cm-super-Paket verwenden?

Ich habe mein Problem fast gelöst!
Mir ist aufgefallen, dass das Problem nur aufgetreten ist, wenn

der Text über die Zellenbreite hinausgeht (welch ein Wunder)
es sich um eine \multirow-Zeile handelt.

Das Problem war die {*} Option beim \multirow, wenn ich die Breite mit 7 cm angebe, bricht er den zu langen Inhalt so um, wie er es soll.

Allerdings habe ich immer noch 2 underfull-boxes, und 2 overfull, die werden mir aber nicht als overfull-Box gezählt. Ich hänge mal das .tex und das .log an diesen Beitrag an, vielleicht kann mir ja noch jemand einen Tip geben, wie ich das beseitigen kann.

Liebe Grüße
Hagen