PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle aufmotzen...



Abraxas
06-09-2007, 10:05
Hallo und guten Morgen!

Für meine Diplomarbeit habe ich mit folgendem Code eine Tabelle eingebunden:
\documentclass[11pt,a4paper,ngerman]{scrbook}

\usepackage[latin1]{inputenc}

\usepackage{booktabs}
\usepackage{ltxtable}

\begin{document}

\begin{longtable}[l]{p{5mm}llm{5mm}m{5mm}}
\label{tbl:bookmarks_gplm}\\
\toprule
\multicolumn{2}{c}{Umfrage} & & \multicolumn{2}{c}{notwendig?}\\
\cmidrule(l){4-5}
& & Abk. & Ja & Nein\\
\midrule
\endfirsthead
\toprule
\multicolumn{2}{c}{Umfrage -- Fortsetzung} & & \multicolumn{2}{c}{notwendig?}\\
\cmidrule(l){4-5}
& & Abk. & Ja & Nein\\
\midrule
\endhead
\bottomrule
\multicolumn{5}{r}{\footnotesize\emph{weiter auf der nächsten Seite}}
\endfoot
\bottomrule
\caption{Fußzeile}
\endlastfoot
\multicolumn{2}{l}{Abschnitt}\\
\cmidrule(l){1-2}
\multicolumn{2}{l}{Thema}\\
& Option & ABC & &\\
& Option & ABC & &\\
& Option & ABC & &\\
\midrule
\multicolumn{2}{l}{Noch ein Abschnitt}\\
\cmidrule(l){1-2}
\multicolumn{2}{l}{Anderes Thema}\\
& Option & ABC & &\\
& Option & ABC & &\\
& Option & ABC & &\\
\end{longtable}

\end{document} Folgende Probleme konnte ich aber noch nicht lösen:

Wie kann ich den Abstand zwischen der 2. und 3. Spalte so vergrößern, dass die Tabelle die gesamte Seitenbreite nutzt (die Trennlinie - \cmidrule - soll sich dabei aber nicht verbreitern sondern sich nur über die ersten beiden Spalten erstrecken)?
Wie kann ich die Schriftart der Tabelle pauschal auf \sffamily umstellen und mit einer kleineren Schrift?
Wie lassen sich die Tabellen- und Spaltenüberschriften einfach formatieren - mit TableHeading hat's bis jetzt nicht geklappt.
Via Google findet man zwar eine ganze Menge an diversen Problemen - zu meinem konnte ich allerdings noch keine Lösung finden.

Die Anweisung \LTXtable{\textwidth}{tabellen/LongtableBeispiel.tex} hat mein Problem mit der Tabellenbreite auch nicht gelöst.

Könnt ihr mir da vielleicht auf die Sprünge helfen?

edico
06-09-2007, 17:19
Deine Ausführungen (sprich: Wünsche) verstehe ich wohl nicht richtig (insbesondere auch deswegen, weil ich keine Ahnung habe, wie letztendlich die Tabelle wirklich aussehen soll) ... das MB versucht dennoch, die einzelnen Punkte zu bearbeiten.

\documentclass{scrbook}
\usepackage[latin1]{inputenc}
\usepackage{longtable,array,booktabs,calc}

\newcommand\lt{%
Option & ABC & & \\
Option & KLM & & \\
Option & XYZ & & \\
}

\newcommand\LT{%
Abschnitt & & & \\
\cmidrule(l){1-1}
Thema & & & \\
\lt\lt\lt\lt\lt\lt\lt\lt\lt\lt
\lt\lt\lt\lt\lt\lt\lt\lt\lt\lt
}

\begin{document}


\chapter{Test}

... hier nun h\"ort die 'normale' Schrift auf.

{% setze Schriftfamilie und zugleich small ...
\sffamily\small

\newcolumntype{C}{>{\centering}p{.25\linewidth-2\tabcolsep}}
\begin{longtable}[l]{C%p{.25\linewidth-2\tabcolsep}
p{.15\linewidth-2\tabcolsep}
m{.30\linewidth-2\tabcolsep}
m{.30\linewidth-2\tabcolsep}}
\caption{Fuzeile}
\label{tbl:bookmarks_gplmi}\\
\toprule
\multicolumn{1}{c}{\raisebox{-\totalheight+\depth}{\textbf{Umfrage}}}
&
&
\multicolumn{2}{c}{\textbf{notwendig?}}\\
\cmidrule(l){3-4}
& \textbf{Abk.} & \textbf{Ja} & \textbf{Nein} \\
\midrule
\endfirsthead
\multicolumn{2}{c}{{\tablename\ \thetable{} -- \footnotesize\emph{Fortsetzung}}} \\
\toprule
\multicolumn{1}{c}{\raisebox{-\totalheight+\depth}{\textbf{Umfrage}}}
&
&
\multicolumn{2}{c}{\textbf{notwendig?}}\\
\cmidrule(l){3-4}
& \textbf{Abk.} & \textbf{Ja} & \textbf{Nein} \\
\midrule
\endhead
\bottomrule
\multicolumn{4}{r}{\footnotesize\emph{weiter auf nchster Seite}}
\endfoot
\bottomrule
\endlastfoot

\LT
\LT
\LT

\end{longtable}
}%Ende Schriftfamilie

hier geht's weiter mit 'normaler' Schrift ...

\end{document}

... es sind noch einige 'Verbesserungen' zu machen resp. packages zu berücksichtigen - z.B. statt der Doppelbackslashes wähle \tabularnewline usw. In diesem Zusammenhang ist wohl auch ratsam, mal das Skript von Axel Reichert tabsatz.pdf anzuschauen (kann zumindest nicht schaden, solltest Du es noch nicht kennen).

edico

Abraxas
07-09-2007, 08:40
Moin!

So, jetzt habe ich die Tabelle mal ein bißchen optimiert. Mit den Kringeln, wo man das Kreuzchen reinmachen soll, bin ich allerdings noch nicht zufrieden.

Erstens schaffe ich es nicht, die Dinger in der Spalte zu zentrieren und zweitens glaube ich, dass es wohl mit kleinen Quadraten besser aussen würde, was meint ihr?

Hat jemand vielleicht eine Idee, wie man den Quellcode noch optimieren könnte? Wie läßt sich z. B. die Breite der dritten Spalte so festlegen, daß sie automatisch den gesamten noch verbleibenden Platz der Seitenbreite ausnutzt?

Die Tabelle soll also insgesamt die Breite \textwidth haben. Die Spaltenbreiten sind alle explizit festgelegt mit Außnahme der dritten Spalte (Freiraum zwischen Option und Abkürzung), die als Füller dient.

Lassen sich die Schriftformate irgendwie zentral definieren? Wenn ich mir einen neuen Spaltentyp definiere, bezieht sich das ja auf die gesamte Spalte. Wie lassen sich aber z. B. nur bestimmte Zeilen bzw. die Spantenüberschrift formatieren?

edico
07-09-2007, 11:01
Ob Du Kreise oder Quadrate machst, ist Geschmacksfrage. Der Interviewer wird sowieso nicht den Fragebogen wahrheitsgemaess beantworten ;-)

Um eine Tabelle textweit zu bauen, musst Du die Spalten entweder wie in meinem vorherigen posting aufgezeigt mit relativen Weiten konzipieren (s. auch nochmal Dein abgeaendertes Besipiel) oder Du nimmst tabularx mit X-Saplten (bei longtable eben LTXtable).

Die anderen Fragen sind beantwortet mit 'ja' 'by doing' in den MBs.

\documentclass[11pt,a4paper,ngerman]{scrbook}

\usepackage[latin1]{inputenc}

\usepackage{longtable,array,booktabs,calc}
%\usepackage{booktabs}
%\usepackage{ltxtable}
\usepackage{caption}

\renewcommand{\captionfont}{%
\normalfont\sffamily\itshape\footnotesize
}

\renewcommand{\captionlabelfont}{%
\normalfont\sffamily\bfseries\footnotesize
}

\def\kreis{\textcircled{}}

\begin{document}

{% Beginn der Schriftformatierung
\sffamily\footnotesize
%\begin{longtable}[l]{@{}m{5mm}lm{50mm}lm{5mm}m{5mm}@{}}
\begin{longtable}[l]{p{.05\linewidth-2\tabcolsep}
p{.30\linewidth-2\tabcolsep}
p{.29\linewidth-2\tabcolsep}
m{.10\linewidth-2\tabcolsep}
c
c
}
\label{tbl:bookmarks_gplm}\tabularnewline
\toprule
% \multicolumn{2}{c}{\large\bfseries Die groe Umfrage} & & & \multicolumn{2}{c}{\bfseries{notwendig?}}\tabularn ewline
\multicolumn{3}{l}{\large\bfseries Die groe Umfrage} & & \multicolumn{2}{c}{\bfseries{notwendig?}}\tabularn ewline
\cmidrule(lr){5-6}
& & & \bfseries{Abk.} & \multicolumn{1}{c}{\bfseries{Ja}} & \multicolumn{1}{c}{\bfseries{Nein}}\tabularnewline
\midrule
\addlinespace
\endfirsthead
\toprule
\multicolumn{2}{c}{\large\bfseries Die groe Umfrage -- Fortsetzung} & & & \multicolumn{2}{c}{\bfseries notwendig?}\tabularnewline
\cmidrule(lr){5-6}
& & & \bfseries{Abk.} & \multicolumn{1}{c}{\bfseries{Ja}} & \multicolumn{1}{c}{\bfseries{Nein}}\tabularnewline
\midrule
\addlinespace
\endhead
\addlinespace
\bottomrule
\multicolumn{6}{r}{\footnotesize\emph{weiter auf der nchsten Seite}}
\endfoot
\addlinespace
\bottomrule
\caption{Fragebogen fr die Umfrage}
\endlastfoot
\multicolumn{2}{l}{\bfseries Ein Abschnitt}\tabularnewline
\addlinespace
\multicolumn{2}{l}{Ein Thema}\\
& Eine Option & & ABC & \kreis & \kreis\tabularnewline
& Noch eine Option & & DEF & \kreis & \kreis\tabularnewline
& Und noch eine & & GHI & \kreis & \kreis\tabularnewline
& Und am Schluss nochmal eine & & JKL & \kreis & \kreis\tabularnewline
\addlinespace
\multicolumn{2}{l}{Noch ein Thema}\\
& Noch eine Option & & ZYX & \kreis & \kreis\tabularnewline
& Noch eine weitere Option & & WVU & \kreis & \kreis\tabularnewline
\addlinespace
\cmidrule{1-2}
\addlinespace
\multicolumn{2}{l}{\bfseries Noch ein neuer Abschnitt}\tabularnewline
\addlinespace
\multicolumn{2}{l}{Noch ein anderes Thema}\\
& Noch eine weitere Option & & ZYX & \kreis & \kreis\tabularnewline
& Und weil's so schn war\ldots & & WVU & \kreis & \kreis\tabularnewline
\addlinespace
\multicolumn{2}{l}{Das letzte Thema}\\
& Die drittletzte Option & & OPQ & \kreis & \kreis\tabularnewline
& Die vorletzte Option & & EFG & \kreis & \kreis\tabularnewline
& Und endlich die Allerletzte & & JKL & \kreis & \kreis\tabularnewline
\end{longtable}
} % Ende der Schriftformatierung

\end{document}

edico

Abraxas
07-09-2007, 13:59
Mit dem Befehl \Ltxtable{\textwidth}{longtable.tex} hatte ich das schon versucht (s. o.).

Allerdings hat sich da an der Tabellenbreite rein garnichts verändert. Kann das daran liegen, daß einige Spalten eine feste Länge haben? Oder muß ich da am Aufbau der longtable noch irgendwas ändern?

Die Spaltenüberschriften (Ja/Nein) konnte ich zwar zentrieren, wenn ich aber in den Zellen ein \center{\textcircled{}} einfüge, verändert sich nur die Zeilenhöhe und zentriert wird garnichts.

edico
07-09-2007, 15:00
Ich habe jetzt nicht die Zeit, Deine Tabelle auf LTXtable umzuschreiben ... versuch es mal selbst ala beiliegendem 'Muster' ---

%%%
%%%--- start ltxtabl to produce an assistent file ltxtabelle1.tex
%%% by running latex the first time
%%%
\begin{filecontents}{ltxtabelle1.tex}
\setlongtables
\begin{longtable}{|c|X|c|X|X|}\hline
A & \textbf{Spalte B} & \textbf{Spalte C} & \textbf{Spalte D}& \textbf{Spalte E}\\\hline
\caption{Unterschrift}\label{tab:unterschrift}
\end{longtable}
\end{filecontents}
%%%
%%%--- end ltxtable
%%%
\documentclass[12pt]{scrartcl}
\usepackage[latin1]{inputenc}

\newcommand{\atext}{%
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna
aliquam erat volutpat. }
\newcommand{\moretext}{\atext\atext\atext\atext\at ext\par}

\usepackage{longtable}
\usepackage{ltxtable}

\begin{document}
\moretext

\section*{ltxtable}
\LTXtable{\linewidth}{ltxtabelle1} % including assistent file

\moretext
\end{document}

... sollte Dir gelingen. Die Spaltenanpassungen mit newcolumntype wie bei tabularx vornehmen - also die X-Spalten Deinen Wünschen gemäss adaptieren.

edico