Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Tabelle aufmotzen...

  1. #1
    Registrierter Benutzer
    Registriert seit
    27.06.2005
    Beiträge
    62

    Question Tabelle aufmotzen...

    Hallo und guten Morgen!

    Für meine Diplomarbeit habe ich mit folgendem Code eine Tabelle eingebunden:
    Code:
    \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?

  2. #2
    Registrierter Benutzer
    Registriert seit
    09.07.2004
    Beiträge
    2.365
    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

  3. #3
    Registrierter Benutzer
    Registriert seit
    27.06.2005
    Beiträge
    62

    Question Tabelle aufgemotzt - Maximalbeispiel(?)

    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?

  4. #4
    Registrierter Benutzer
    Registriert seit
    09.07.2004
    Beiträge
    2.365
    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

  5. #5
    Registrierter Benutzer
    Registriert seit
    27.06.2005
    Beiträge
    62

    Thumbs up Danke für die ausführliche Antwort!

    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.
    Geändert von Abraxas (07-09-2007 um 13:06 Uhr)

  6. #6
    Registrierter Benutzer
    Registriert seit
    09.07.2004
    Beiträge
    2.365
    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

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •