MasterofDesaster hat geschrieben:Hi,
so ist das perfekt
Prima, dann hab ich richtig geraten
Jetzt musst du mir allerdings ein paar Sachen verraten
Kein Problem:
\usepackage{tabularx}
\usepackage{calc}
TabularX stellt Tabellen mit der sogenannten X-Spalte zur Verfügung. Man kann X ganz normal wie p{...}, c, l, r verwenden, nur dass diese Spalten dann automatisch gespreizt werden, und zwar auf die bei \begin{tabularx}{BREITE}{XXX} angegebene Breite (hier ist das \textwidth, also Textbreite).
Werden mehrere X-Spalten verwendet, haben sie alle die gleiche Breite.
Ausserdem kann innerhalb der X-Spalten ein Zeilenumbruch stattfinden. Es lohnt sich, das TabularX-Paket anzuschauen, ich zumindest brauche es ständig.
calc hatte ich vergessen rauszunehmen, hatte was ausprobiert mit einer Länge abhängig von einem Wort. Mit calc kann man nämlich sowas machen: \widthof{Dein Wort}. Es wird dann eine Länge definiert, die exakt der Breite von "Dein Wort" (inklusive Leerzeichen) entspricht. Dann muss man nicht raten, wieviele cm, pt, em oder ex es breit ist. Das Paket kann aber noch viel viel mehr, das ist nur meine häufigste Anwendung.
\newcolumntype{C}{>{\centering\arraybackslash}X}
Der newcolumntype-Befehl ist das Pendant zu newcounter oder newcommand, nur eben für Tabellenspaltedefinitionen. Er stammt afaik aus dem Paket array, was hier glaube ich automatisch mit booktabs oder tabularx schon aufgerufen wird (nur, falls du mal die Doku suchst).
Die Handhabung ist wie \newcommand:
\newcolumntype{NAME}{Definition}
Hier war ich einfach zu faul, jedesmal die X-Spalte von Hand zu zentrieren mit >{\centering\arraybackslash}X und habe es kurzerhand auf "C" gelegt.
Der Teil mit >{...} stammt auch aus array (übrigens auch eine sehr lohnenswerte Doku

), damit lassen sich Befehle _vor_ jede Spalte schreiben, hier wird also in jeder Zelle dieser Spalte erstmal \centering aufgerufen. Das \arraybackslash ist eine Sicherheitsmassnahme, das den Befehl für einen Zeilenumbruch wieder richtig setzt. Frag nicht nach Details, auf alle Fälle gibts ohne das Probleme, wenn es die letzte Spalte der Tabelle ist.
Es lassen sich mit array auch Befehle nach der Zelle schreiben, nämlich mit <{...}, nicht zu vergessen die neuen Spaltendefintionen m{...} und p{...} (siehe später).
\newcolumntype{T}{>{\centering\arraybackslash}p{2cm}}
Definiert den Spaltentyp T, der eine 2cm breite zentrierte p-Spalte ist. Ich war (wieder mal) zu faul, das bei jedem \intab(b(b)) extra zu ändern.
\newcommand{\intab}[1]{\begin{tabular}{*{1}{T}} #1\end{tabular}}
Definiert den neuen Befehl \intab, der das Argument dahinter in eine Tabelle mit der Spaltenbreite T (s.o.) schreibt.
Dto. \intabb und \intabbb, nur dass dort wegen der mehreren Wörter auch mehrere Spalten und damit Argumente nötig waren. Ich hätte die Befehle auch gerne \intab1, \intab2 und \intab3 genannt, aber LaTeX mag keine Zahlen in Befehlen.
Die Schreibweise *{Anzahl}{Spaltentyp} in der Spaltendefinition der Tabelle habe ich gewählt, weil es so dann übersichtlicher ist und sowieso alle Spalten die gleichen Eigenschaften haben sollen.
\cmidrule(lr){1-1}
Das gehört zu \midrule, \toprule, \bottomrule und stammt aus dem Paket booktabs. Es ist das Pendant zu \cline und ist, wie du gesehen hast, für Linien da, die nicht über die gesamte Tabellenbreite gehen sollen. Mit (lr) wird die Linie links und rechts eingekürzt.
\begin{tabular}{l@{}c}
Ohne das "@{}" fand ich den Abstand zwischen erster Spalte und den folgenden Spalten zu gross, denn es sind ja geschachtelte Tabellen, und jede Tabelle bring um sich herum einen Abstand mit. Nur addiert sich der natürlich bei der Schachtelung. Mit @{} kontrolliert man, was zwischen den Spalten passiert. Du kannst mal spasseshalber ein @{\hspace{2cm}} oder \rule{1ex}{4ex} einfügen, ich denke, dann ist klar, was passiert. Wenn man das Argument leer lässt, verschwindet einfach jeglicher horizontale Abstand.
Übrigens auch sehr nützlich, wenn man im Text eine Tabelle für eine Ausrichtung o.ä. verwendet, der Text aber gleich wie der andere beginnen soll. Hier in dem Beispiel unten sollte es klar werden.
Ausserdem ist in dem Code gleich noch eine nützliche Anwendung für TabularX eingebaut und ein Beispiel für die Verwendung von \widthof:
\documentclass[parskip=half]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{blindtext}
\usepackage{tabularx}
\usepackage{calc}
\begin{document}
\blindtext
\begin{tabularx}{\textwidth}{lX}
Hier Tabelle: & \blindtext
\end{tabularx}
\blindtext
\begin{tabularx}{\textwidth}{@{}lX@{}}
Hier Tabelle: & \blindtext
\end{tabularx}
\blindtext
\begin{tabular}{|p{\widthof{So breit,}}|c|}
So breit, aber nicht breiter. Alles weitere wird umbrochen. & Eine normale c-Spalte.
\end{tabular}
\end{document}
Ich hoffe, ich habe dir damit geholfen und dich nicht völlig erschlagen
P.S. Wenn du die Dokus zu den Paketen suchst, am einfachsten kannst du sie so aufrufen (Windows):
Start -> Programme -> Zubehör -> Eingabeaufforderung
Eintippen: "texdoc Paketname", z.B. "texdoc array"
Dann öffnet sich das PDF. Unter Linux und Mac geht es afaik analog in der Shell, ich kanns nur nicht testen.