Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Zellen horizontal gleichverteilen

  1. #1
    Registrierter Benutzer Avatar von ProfessorChaos
    Registriert seit
    29.12.2007
    Ort
    Canberra (Australien)
    Beiträge
    89

    Zellen horizontal gleichverteilen

    Hallo,

    ich weiß, meine Frage ist bestimmt *elementar*, also sorry fürs Stellen.^^
    Da sie aber nicht an ein konkretes Package gebunden ist, weiß ich nicht so wirklich, wo ich nachlesen soll (Forensuche war auch erfolglos).

    Bevor ich mein Problem lange theoretisch beschreibe, hier ein Minimalbeispiel:

    Code:
    \documentclass{article}
    \usepackage{multicol}
    \begin{document}
    
    \begin{table}
      \begin{tabular}{|c|c|}
        \multicolumn{2}{|c|}{this is a very long description} \\
        left  &  right
      \end{tabular}
    \end{table}
    
    \end{document}
    Ich möchte, dass die Zellen "left" und "right" jeweils gleich viel Platz einnehmen. Sie sollen also zentriert sein. Im Augenblick nimmt aber "left" so wenig Platz wie möglich ein und "right" dann den Rest.
    Weiß jemand, wie man das macht?

  2. #2
    Registrierter Benutzer
    Registriert seit
    09.07.2004
    Beiträge
    2.365
    Es bietet sich an, die Spalten an einer p-Spalte (evtl. m-Spalte, um auch vertikale Zentralisierung zu erreichen) auszurichten. Dazu ist es sinnvoll, einen neuen Spaltentyp zu definieren.
    Um die Gesamtbreite der zusammengesetzten Spalte (multicolumn) zu erfassen, wird die Textlänge gemessen, so dass die Spaltenbreite dann die Hälfte (bei 2 Spalten) minus der Spaltenseparatoren ist.

    Daraus ergibt sich folgender Code:

    Code:
    \documentclass{article}
    \usepackage{array,calc}
    
    \begin{document}
    
    %%% Spaltenbreite SPB ermitteln
    \sbox0{this is a very long description}
    \newlength{\SPB}
    \setlength{\SPB}{\the\wd0-2\tabcolsep}
    
    %%% Spaltentyp definieren: Zeilenumbruch und zentriert
    \newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
    
    \begin{table}
      \begin{tabular}{|M{.5\SPB}|M{.5\SPB}|}
        \multicolumn{2}{|c|}{this is a very long description} \\
        left  &  right
      \end{tabular}
    \end{table}
    
    \end{document}

    edico

  3. #3
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von ProfessorChaos Beitrag anzeigen

    Ich möchte, dass die Zellen "left" und "right" jeweils gleich viel Platz einnehmen. Sie sollen also zentriert sein. Im Augenblick nimmt aber "left" so wenig Platz wie möglich ein und "right" dann den Rest.
    Weiß jemand, wie man das macht?
    Code:
    \documentclass[12pt,parskip]{scrartcl}
    
    \usepackage{tabularx,ragged2e}
    \newsavebox\Breite
    \renewcommand\tabularxcolumn[1]{>{\Centering}p{#1}}
    
    \begin{document}
    
    \begin{tabular}{|c|c|}
        \multicolumn{2}{|c|}{this is a very long description} \\
        left  &  right
    \end{tabular}
    
    \begin{tabularx}{\linewidth}{|X|X|}
        \multicolumn{2}{|c|}{this is a very long description} \\
        left  &  right
    \end{tabularx}
    
    \sbox\Breite{this is a very long description}
    \begin{tabularx}{\wd\Breite}{|X|X|}
        \multicolumn{2}{|c|}{this is a very long description} \\
        left  &  right
    \end{tabularx}
    
    \end{document}
    Herbert

  4. #4
    Registrierter Benutzer Avatar von ProfessorChaos
    Registriert seit
    29.12.2007
    Ort
    Canberra (Australien)
    Beiträge
    89
    Danke für die Antworten. Problem gelöst.
    Geändert von ProfessorChaos (07-10-2010 um 11:11 Uhr)

Lesezeichen

Berechtigungen

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