Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Zeilenabstände in longtable-Umgebung

  1. #1
    Registrierter Benutzer
    Registriert seit
    20.03.2006
    Beiträge
    180

    Zeilenabstände in longtable-Umgebung

    Hallo,

    in einer mit „longtable“ erzeugten Tabelle gibt es („logische“) Zeilen, die nur aus einer einzigen „körperlichen“ Zeile („Zusatzzeile“) bestehen, andere wiederum bestehen aus mehr als einer körperlichen Zeile. Die logischen Zeilen sollen von einander durch einen größeren Zeilenabstand (\tabularnewline[\lenGROSS]) getrennt werden als eine Zusatzzeile von ihrer vorangehenden (\tabularnewline[\lenKLEIN]). Die beiden vertikalen Abstände sollen im gesetzten Text einen angenehmen optischen Eindruck bewirken und dem Leser die Struktur der Zeilen vermitteln.

    Wie die beigefügte PDF-Datei zeigt, funktioniert das nicht wie gewünscht. Besteht die logische Zeile nur aus einer einzigen körperlichen, ist ihr Abstand zur nächsten richtig. Das gleiche gilt auch für eine logische Zeile, die aus einer KURZEN Zusatzzeile besteht; allerdings sollte die Zusatzzeile näher an der vorangehenden Zeile gesetzt sein (\lenKLEIN).

    Weist die logische Zeile eine LANGE Zusatzzeile auf, ist der Abstand zur nächst folgenden logischen Zeile klein, trotz \tabularnewline[\lenGROSS]. Legt bei \multicolumn die Ursache des Problems? \multicolumn lässt nur drei Parameter zu.

    Fragen:
    1. Mit welchen Angaben werden die Zeilenabstände wie gewünscht gesetzt?
    2. Die in der ersten Frage angesprochene optische Trennung der Zeilen untereinander möchte ich ergänzen durch wechselweises Einfärben (weiß – hellgrau). Wie kann ich eine GANZE Zeile einfärben? Zum Hintergrund dieser Frage: Die zu erstellende Tabelle erzeuge ich durch ein Skript as einer CSV-Datei. Ich möchte nach Möglichkeit sicherstellen, dass der erzeugte LaTeX-Quellcode mit den Anweisungen für das wechselweise Einfärbe halbwegs „lesbar“ bleibt.
    3. Gibt es weitere „sinnvolle“ Verfahren zur Abgrenzung der Zeilen untereinander?

    Im konkreten Fall wird der „lange“ Text in \multicolumn NICHT so lang sein wie der durch \blindtext erzeugte.

    Vielen Dank im voraus.
    Gruß
    Dieter

  2. #2
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Code:
    \documentclass{scrbook}
    %
    \usepackage{ucs}%			% Allow Unicode
    \usepackage[utf8x]{inputenc}%		% Umlaute in der Eingabe
    \usepackage[T1]{fontenc}%		% Umlaute in der Ausgabe
    \usepackage[ngerman]{babel}%	% Sprachenpaket
    
    \usepackage{blindtext}
    \usepackage{longtable}
    \usepackage{array,ragged2e}
    %
    \newlength{\lenA}
    \newlength{\lenB}
    \newlength{\lenC}
    \newlength{\lenGROSS}
    \newlength{\lenKLEIN}
    %
    \setlength{\lenA}{4cm}
    \setlength{\lenB}{5cm}
    \setlength{\lenC}{6cm}
    \setlength{\lenGROSS}{0.60em}
    \setlength{\lenKLEIN}{0.18em}
    %
    \def\xstrut{\rule[-2\lenGROSS]{0pt}{3\lenGROSS}}
    \newcolumntype{P}[1]{>{\RaggedRight}p{#1}}
    %
    \begin{document}
    %
    \begin{longtable}[c]{rp{\lenA}p{\lenB}p{\lenC}}
    15 & Zeile 1 & Spalte 3 & Spalte 4 \tabularnewline[\lenGROSS]
    %
    16 & Zeile 2 & Spalte 3 & Spalte 4 \tabularnewline[\lenKLEIN]
    16 & Zusatz  & \multicolumn{2}{P{\dimexpr\lenA+\lenB+\tabcolsep}}{kurzer Text}\xstrut \tabularnewline[\lenGROSS]
    %
    17 & Zeile 3 & Spalte 3 & Spalte 4 \tabularnewline[\lenKLEIN]
    17 & Zusatz  & \multicolumn{2}{P{\dimexpr\lenA+\lenB+\tabcolsep}}{\blindtext\xstrut}  \tabularnewline[\lenGROSS]
    %
    18 & Zeile 4 & Spalte 3 & Spalte 4 \tabularnewline[\lenKLEIN]
    18 & Zusatz  & \multicolumn{2}{P{\dimexpr\lenA+\lenB+\tabcolsep}}{\blindtext\newline\blindtext\xstrut}  \tabularnewline[\lenGROSS]
    %
    38 & Zeile 5 & Spalte 3 & Spalte 4 \tabularnewline[\lenGROSS]
    \end{longtable}
    \end{document}
    Herbert

  3. #3
    Registrierter Benutzer
    Registriert seit
    20.03.2006
    Beiträge
    180
    Herbert,

    vielen Dank!
    Funktioniert wie gewünscht.

    Darf ich noch auf Frage 2 zurückkommen: Einfärben einer ganzen Tabellenzeile.

    Gruss
    Dieter

  4. #4
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Zitat Zitat von DieterH Beitrag anzeigen
    Darf ich noch auf Frage 2 zurückkommen: Einfärben einer ganzen Tabellenzeile.
    http://ftp.gwdg.de/pub/ctan/macros/l...lor/xcolor.pdf

    Gruß
    Marco

  5. #5
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    bessere URL: http://mirror.ctan.org/macros/latex/...lor/xcolor.pdf

    ist extra unter Mühen so eingerichtet worden.

    Herbert

  6. #6
    Registrierter Benutzer
    Registriert seit
    20.03.2006
    Beiträge
    180
    Hallo,

    In Weiterführung meines ursprünglichen Beispiels färbe ich die Zeilen abwechselnd ein. Unter "Zeile" soll die "logische" Zeile verstanden sein, nicht die körperliche.

    Das abwechselnde Einfärben erfolgt durch Setzen von "\rowcolor{lightgray}" vor allen körperlichen Zeilen der betreffenden logischen Zeilen.

    Wie eingangs erwähnt, arbeite ich auch mit "\multicolumn". Hier werden nur Teile einer Zeile eingefärbt (siehe die generierte PDF-Datei aus MB).

    Wie erreiche ich das Einfärben der ganzen Zeile, auch wenn diese im LaTeX-Quellcode "\multicolumn" enthält?

    Code:
    \documentclass{scrbook}
    %
    \usepackage{ucs}%                       % Allow Unicode
    \usepackage[utf8x]{inputenc}%           % Umlaute in der Eingabe
    \usepackage[T1]{fontenc}%               % Umlaute in der Ausgabe
    \usepackage[ngerman]{babel}%    % Sprachenpaket
    
    \usepackage{blindtext}
    \usepackage{longtable}
    \usepackage[table,rgb]{xcolor}
    \usepackage{array,ragged2e}
    %
    \newlength{\lenA}
    \newlength{\lenB}
    \newlength{\lenC}
    \newlength{\lenGROSS}
    \newlength{\lenKLEIN}
    %
    \setlength{\lenA}{4cm}
    \setlength{\lenB}{5cm}
    \setlength{\lenC}{6cm}
    \setlength{\lenGROSS}{0.60em}
    \setlength{\lenKLEIN}{0.18em}
    %
    \def\xstrut{\rule[-2\lenGROSS]{0pt}{3\lenGROSS}}
    \newcolumntype{P}[1]{>{\RaggedRight}p{#1}}
    %
    \begin{document}
    %
    \begin{longtable}[c]{rp{\lenA}p{\lenB}p{\lenC}}
    \rowcolor{lightgray}
    15 & Zeile 1 & Spalte 3 & Spalte 4 \tabularnewline[\lenGROSS]
    %
    16 & Zeile 2 & Spalte 3 & Spalte 4 \tabularnewline[\lenKLEIN]
    16 & Zusatz  & \multicolumn{2}{P{\dimexpr\lenA+\lenB+\tabcolsep}}{kurzer Text}\xstrut \tabularnewline[\lenGROSS]
    %
    \rowcolor{lightgray}
    17 & Zeile 3 & Spalte 3 & Spalte 4 \tabularnewline[\lenKLEIN]
    \rowcolor{lightgray}
    17 & Zusatz  & \multicolumn{2}{P{\dimexpr\lenA+\lenB+\tabcolsep}}{\blindtext\xstrut}  \tabularnewline[\lenGROSS]
    %
    18 & Zeile 4 & Spalte 3 & Spalte 4 \tabularnewline[\lenKLEIN]
    18 & Zusatz  & \multicolumn{2}{P{\dimexpr\lenA+\lenB+\tabcolsep}}{\blindtext\newline\blindtext\xstrut}  \tabularnewline[\lenGROSS]
    %
    \rowcolor{lightgray}
    38 & Zeile 5 & Spalte 3 & Spalte 4 \tabularnewline[\lenGROSS]
    \end{longtable}
    \end{document}

  7. #7
    Registrierter Benutzer
    Registriert seit
    20.03.2006
    Beiträge
    180
    Hallo,

    gibt es wirklich keine Lösung zu meinem Problem (Einfärben einer Zeile funktioniert nicht richtig, wenn \multicolumn in der Zeile auftaucht).

    Gruss
    Dieter

  8. #8
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von DieterH Beitrag anzeigen
    gibt es wirklich keine Lösung zu meinem Problem (Einfärben einer Zeile funktioniert nicht richtig, wenn \multicolumn in der Zeile auftaucht).
    Code:
    \documentclass{scrbook}
    %
    \usepackage{ucs}%                       % Allow Unicode
    \usepackage[utf8x]{inputenc}%           % Umlaute in der Eingabe
    \usepackage[T1]{fontenc}%               % Umlaute in der Ausgabe
    \usepackage[ngerman]{babel}%    % Sprachenpaket
    
    \usepackage{blindtext}
    \usepackage{longtable}
    \usepackage[table,rgb]{xcolor}
    \usepackage{array,ragged2e}
    %
    \newlength{\lenA}
    \newlength{\lenB}
    \newlength{\lenC}
    \newlength{\lenGROSS}
    \newlength{\lenKLEIN}
    %
    \setlength{\lenA}{4cm}
    \setlength{\lenB}{5cm}
    \setlength{\lenC}{6cm}
    \setlength{\lenGROSS}{0.60em}
    \setlength{\lenKLEIN}{0.18em}
    %
    \def\xstrut{\rule[-2\lenGROSS]{0pt}{3\lenGROSS}}
    \newcolumntype{P}[1]{>{\RaggedRight}p{#1}}
    %
    \begin{document}
    %
    \begin{longtable}{rp{\lenA}p{\lenB}p{\lenC}}
    \rowcolor{lightgray}
    15 & Zeile 1 & Spalte 3 & Spalte 4 \tabularnewline[\lenGROSS]
    %
    16 & Zeile 2 & Spalte 3 & Spalte 4 \tabularnewline[\lenKLEIN]
    16 & Zusatz  & \multicolumn{2}{P{\dimexpr\lenA+\lenB+\tabcolsep}}{kurzer Text}\xstrut \tabularnewline[\lenGROSS]
    %
    \rowcolor{lightgray}
    17 & Zeile 3 & Spalte 3 & Spalte 4 \tabularnewline[\lenKLEIN]
    \rowcolor{lightgray}
    17 & Zusatz  & \multicolumn{2}{>{\cellcolor{lightgray}}P{\dimexpr\lenB+\lenC+2\tabcolsep}}{%
    \blindtext\xstrut}  \tabularnewline[\lenGROSS]
    %
    18 & Zeile 4 & Spalte 3 & Spalte 4 \tabularnewline[\lenKLEIN]
    18 & Zusatz  & \multicolumn{2}{P{\dimexpr\lenB+\lenC+\tabcolsep}}{\blindtext\newline\blindtext\xstrut}  \tabularnewline[\lenGROSS]
    %
    \rowcolor{lightgray}
    38 & Zeile 5 & Spalte 3 & Spalte 4 \tabularnewline[\lenGROSS]
    \end{longtable}
    \end{document}

  9. #9
    Registrierter Benutzer
    Registriert seit
    20.03.2006
    Beiträge
    180
    Danke!

    Gruss
    Dieter

Lesezeichen

Berechtigungen

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