PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle mit Umbruch, Underfull boxes...



axim
12-02-2008, 13:16
Guten Tag!

Ich habe ein Problem mit Latex, an dem ich seit einigen Stunden hänge.
Ich hoffe ihr könnt mir vielleicht helfen!
Und zwar geht es um eine Tabelle, die eigentlich relativ simpel ist.
Sie besteht aus 4 Spalten und wenigen Zeilen. In der Tabelle möchte ich verschiedene Produkte vergleichen (über den Inhalt bitte nicht diskutieren, ich habe die Punkte zum Füllen erst einmal aus dem Kopf aufgeschrieben). Das Problem ist aber, dass ich Underfull boxes bekomme. Ansonsten kompiliert mein Latex Dokument (über 30 Seiten) ohne Fehler, nur an dieser Tabelle hänge ich. Unten ist das Minimalbeispiel eingefügt, andem man die Underfull boxes auch sieht. Wie zu erkennen ist habe ich auch versucht, manuell mit Trennstellen nachzuhelfen, aber es hilft nur bedingt (9 statt 11 warnings)...
Wie bekomme ich alle warnings weg? Ich denke dass die Tabelle nicht zu kompliziert ist, und wäre daher über eine Lösung sehr erfreut!
Auch die draft Option hatte ich angestellt, aber das hat mir nicht sehr weitergeholfen. Ich hoffe das leidige Theman mit den underfull boxes kann hier geklärt werden (habe auch schon alt Beiträge gelesen gehabt).
Danke schonmal
axim




\documentclass[11pt, a4paper]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc} % Aktiviert EC-Schriftarten
\usepackage[ngerman]{babel}
\usepackage{lmodern} % Latin Modern
\begin{document}
\begin{table}[htb]
\centering
\begin{tabular}{|p{0.16\textwidth}|p{0.26\textwidt h}|p{0.26\textwidth}|p{0.26\textwidth}|}
\hline
\textbf{-} & \textbf{MFC} & \textbf{wxWidgets} & \textbf{Qt}\\\hline
\textbf{Vorteile} & Viele High-Level Funktionen verfügbar, in Visual Studio integriert & Hohe Geschwindigkeit, plattformunabhängig & Viele Ni\-cht-Gui-Kl\-as\-sen, z.B. für Tastatur- und Maussteuerung\\\hline
\textbf{Nachteile} & Komplex, aufwändig zu programmieren, nicht portabel & Weniger objektorientiert & Zusätzlich Meta-Ob\-ject-Com\-pi\-ler nötig, kommerziell\\\hline
\end{tabular}
\caption{Klassenbibliotheken}
\label{tab:Klassenbibliotheken}
\end{table}
\end{document}

e. hindman
12-02-2008, 13:45
Folgendes sorgt für schönere Wortabstände in der Tabelle, ich zumindest krieg damit auch keine Warnungen.



\usepackage{ragged2e, tabularx}
\newcolumntype{Y}{>{\RaggedRight\arraybackslash}X}
...
\begin{table}[htb]
\centering
\begin{tabularx}{\textwidth}{|l|Y|Y|Y|}
\hline
\textbf{-} & \textbf{MFC} & \textbf{wxWidgets} & \textbf{Qt}\\\hline
\textbf{Vorteile} & Viele High-Level Funktionen verfügbar, in Visual Studio integriert & Hohe Geschwindigkeit, plattformunabhängig & Viele Ni\-cht-Gui-Kl\-as\-sen, z.B. für Tastatur- und Maussteuerung\\\hline
\textbf{Nachteile} & Komplex, aufwändig zu programmieren, nicht portabel & Weniger objektorientiert & Zusätzlich Meta-Ob\-ject-Com\-pi\-ler nötig, kommerziell\\\hline
\end{tabularx}
\caption{Klassenbibliotheken}
\label{tab:Klassenbibliotheken}
\end{table}

axim
12-02-2008, 14:02
Hallo!
Wow, danke für die schnelle Antwort.

Zuerst einmal: Es funktioniert hervorragend!
Versuche jetzt gerade zu verstehen was genau vorgeht, habe mir auch mal die ragged2e Dokumentation besorgt.
Tabularx ist nur nötig für die selbstdefinierte Spaltenbreite, richtig?
Aber was genau macht die Zeile:

\newcolumntype{Y}{>{\RaggedRight\arraybackslash}X}
RaggedRight für den Flatersatz? Wozu dient \arraybackslash? Ersatz für \\ soweit ich das in tabularx richtig verstanden habe? So ganz steige ich auch durch die ragged2e Dokumentation noch nicht durch! Das ist aber schon dieses Dokument, oder:
http://www.ctex.org/documents/packages/layout/ragged2e.pdf

Vielen Dank auf jeden Fall, soweit kann mein Dokument weiter mit 0 Warnings bestehen :)

e. hindman
13-02-2008, 15:17
Tabularx berechnet in dem Fall drei gleich breite Spalten so, dass die Tabelle insgesamt die Breite textwidth einnimmt. RaggedRight setzt das ganze dann im Flattersatz mit Silbentrennung. Definiert man neue Spaltentypen, so benötigt man den Befehl arraybackslash damit der \\-Befehl zum Beenden der Zeile funktioniert (ganz genau weiß ich's aber auch nicht).