Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Abstände zwischen Tabellenzeilen

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.09.2005
    Beiträge
    1.712

    Abstände zwischen Tabellenzeilen

    Hi zusammen,

    ich habe versucht, eine Tabelle mit vertikal zentrierten Zellen zu basteln, wobei zusätzlich zwischen einigen Zeilen ein grösserer Abstand sein soll.

    Das vertikale Zentrieren geht ja mit m{...} aus dem array-Paket. Nur, wenn die letztes Spalte so definiert ist, funktioniert der zusätzliche Zeilenabstand mit \\[...] nicht mehr richtig:
    Code:
    \documentclass{scrartcl}
    \usepackage[ngerman]{babel} 
    \usepackage[latin1]{inputenc}
    \usepackage[T1]{fontenc}	
    
    \usepackage{array}
    
    \begin{document}
    
    \begin{tabular}{m{4cm}m{5cm}}
    Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird. & Text \\[3cm]
    Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird.  & Text \\
    Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird.  & Text
    \end{tabular}
    
    \end{document}
    Mit \vspace*{3cm} hats auch nicht funktioniert. Kann man die Zentrierung irgendwie "löschen" vor dem Ende der Zeile?

    Weiss jemand eine Lösung dafür?

    Viele Grüsse,
    Xenara

  2. #2
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von Xenara Beitrag anzeigen
    ich habe versucht, eine Tabelle mit vertikal zentrierten Zellen zu basteln, wobei zusätzlich zwischen einigen Zeilen ein grösserer Abstand sein soll.

    Das vertikale Zentrieren geht ja mit m{...} aus dem array-Paket. Nur, wenn die letztes Spalte so definiert ist, funktioniert der zusätzliche Zeilenabstand mit \\[...] nicht mehr richtig:

    Weiss jemand eine Lösung dafür?
    die letzte Spalte nicht als m, sondern als p definieren.
    Code:
    \begin{tabular}{m{4cm}p{5cm}}
    Herbert

  3. #3
    Registrierter Benutzer
    Registriert seit
    11.09.2005
    Beiträge
    1.712
    Zitat Zitat von voss Beitrag anzeigen
    die letzte Spalte nicht als m, sondern als p definieren.
    Dann stimmt aber die Ausrichtung nicht mehr, wenn nur die letzte Spalte mehrzeilig ist:
    Code:
    \documentclass{scrartcl}
    \usepackage[ngerman]{babel} 
    \usepackage[latin1]{inputenc}
    \usepackage[T1]{fontenc}	
    
    \usepackage{array}
    
    \begin{document}
    
    \subsection*{1. Tabelle}
    \begin{tabular}{m{4cm}p{5cm}}
    Text & Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird. \\[3cm]
    Text & Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird. \\
    Text & Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird. \\
    Text & Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird. \\
    \end{tabular}
    
    \subsection*{2. Tabelle}
    \begin{tabular}{m{4cm}p{5cm}}
    Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird. & Text \\[3cm]
    Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird.  & Text \\
    Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird.  & Text \\
    Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird.  & Text \\
    \end{tabular}
    
    \end{document}
    Gibt es wirklich keine Möglichkeit, die vertikale Zentrierung wieder auszuschalten, sobald die Zeile/letzte Zelle beendet wird? Das wäre sehr schade, wenn man die prima Zelldefinitionen nur unter Einschränkungen nutzen kann.

  4. #4
    Registrierter Benutzer
    Registriert seit
    27.11.2007
    Beiträge
    375
    Einfach den Abstand in eine extra Zeile packen?

    Code:
    \documentclass{scrartcl}
    \usepackage[ngerman]{babel} 
    \usepackage[latin1]{inputenc}
    \usepackage[T1]{fontenc}	
    
    \usepackage{array}
    
    \begin{document}
    
    \begin{tabular}{m{4cm}m{5cm}}
    Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird. &
    Text \\
    
    \\[3cm]
    
    Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird.  & Text \\
    Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird.  & Text
    \end{tabular}
    
    \end{document}
    Christian.
    Geändert von tral (08-06-2010 um 09:04 Uhr) Grund: ging doch nicht so... Jetzt funktionierts.
    Ubuntu 16.04 -- TeX Live 2015 -- Emacs (AUCTeX, RefTeX)

  5. #5
    Registrierter Benutzer
    Registriert seit
    11.09.2005
    Beiträge
    1.712
    @tral: Das funktioniert zwar soweit, aber es sind ja dann keine echten 3cm Abstand, sondern 3cm + Zeilenhöhe. Wenn man den Abstand in verschiedenen Tabellen verwenden will, muss man das dann wieder irgendwie abziehen.

  6. #6
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Der Abstand wird durch eine unsichtbare \rule erzeugt, die in der m-Spalte landet und diese dadurch vergrößert. (b-Spalten hätten das gleiche Problem).

    Wenn du keine vertikalen Linien benutzt, kannst du \@xargarraycr umdefinieren oder direkt \\\noalign{\vskip3cm} benutzen (die Linien bekommen dadurch Löcher). Wenn du Linien benutzt, ist der beste Weg wohl eine leere Spalte am Ende.

    Ich weiß nicht, ob man in array.sty irgendwie so umschreiben kann, dass das Problem verschwindet, aber zumindest ein Hinweis in der Doku wäre nicht schlecht. Du kannst ja einen entsprechenden Bug-Report machen.

    Code:
    \documentclass[parskip]{scrartcl}
    \usepackage[ngerman]{babel}
    \usepackage[latin1]{inputenc}
    \usepackage[T1]{fontenc}	
    
    \usepackage{array}
    
    \begin{document}
    \begin{tabular}{m{4cm}|m{5cm}|}
    Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird. & Text\newline abc \\[3cm]
    Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird.  & Text\newline abc \\
    \end{tabular}
    
    \begin{tabular}{m{4cm}|m{5cm}|@{}l@{}}
    Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird. & Text\newline abc &\\[3cm]
    Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird.  & Text\newline abc \\
    \end{tabular}
    
    
    \bigskip
    \makeatletter
    \def\@xargarraycr#1{\cr\noalign{\vskip #1}}
    \makeatother
    
    \begin{tabular}{m{4cm}|m{5cm}|}
    Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird. & Text\newline abc \\[3cm]
    Längerer Text über mehrere Zeilen der in der Zelle umbrochen wird.  & Text\newline abc \\
    \end{tabular}
    
    \end{document}

  7. #7
    Registrierter Benutzer
    Registriert seit
    11.09.2005
    Beiträge
    1.712
    Suuuuuuper! Vielen vielen Dank für die umfangreiche Erklärung und Lösung!
    Vertikale Linien verwende ich sowieso nicht, daher funktioniert \noalign{\vskip...} prima.

    Bugreport ist eine gute Idee, hab sowas nur noch nie gemacht... Funktioniert das über diese Seite? http://www.latex-project.org/bugs-upload.html

Lesezeichen

Berechtigungen

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