Anzeige:
Ergebnis 1 bis 10 von 10

Thema: Tabellenspalten sauber aufteilen

  1. #1
    Registrierter Benutzer
    Registriert seit
    09.10.2012
    Beiträge
    8

    Tabellenspalten sauber aufteilen

    Hallo,

    ich hab hier eine Tabelle die ich mir mehr oder weniger aus verschiedenen Anleitungen zusammengesucht hab und diese ist auch fast perfekt, jedoch stört mich ein kleines Detail.
    Generiere ich mein Dokument wird alles richtig erstellt, was jedoch nicht passt ist die Breite der einzelnen Spalten in denen die "Bits" stehen, also Zeile 2 und 4.
    Diese haben unterschiedliche Breiten und das stört optisch leider sehr.
    Wie bekomme ich es hin dass Latex diese Spalten alle gleich breit macht?

    Anbei die Tabelle die ich erstellt habe.

    Code:
    \begin{table}
    	\centering
    	\begin{tabular*}{0.8\textwidth}{@{\extracolsep\fill}|c|c|c|c|c|c|c|c|@{}}
    	\hline
    	\multicolumn{8}{|c|}{Byte} \\
    	\hline
    	Bit 7&Bit 6&Bit 5&Bit 4&Bit 3&Bit 2&Bit 1&Bit 0\\
    	\hline
    	\multicolumn{2}{|c|}{Eintrag1} & \multicolumn{2}{c|}{Eintrag2} & \multicolumn{2}{c|}{Eintrag3} & \multicolumn{2}{c|}{Eintrag4} \\
    	%\hline
    	Bit 1&Bit 0&Bit 1&Bit 0&Bit 1&Bit 0&Bit 1&Bit 0\\
    	\hline
    	\end{tabular*}
    	\caption{Tabelle1}
    	\label{tbl:Tabelle1}
    \end{table}

  2. #2
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.327
    Wenn ich Deinen Codeschnippsel zu einem lauffähigen Code erweitere:
    Code:
    \documentclass{scrartcl}
    
    \begin{document}
    \begin{table}
    	\centering
    	\begin{tabular*}{0.8\textwidth}{@{\extracolsep\fill}|c|c|c|c|c|c|c|c|@{}}
    	\hline
    	\multicolumn{8}{|c|}{Byte} \\
    	\hline
    	Bit 7&Bit 6&Bit 5&Bit 4&Bit 3&Bit 2&Bit 1&Bit 0\\
    	\hline
    	\multicolumn{2}{|c|}{Eintrag1} & \multicolumn{2}{c|}{Eintrag2} & \multicolumn{2}{c|}{Eintrag3} & \multicolumn{2}{c|}{Eintrag4} \\
    	%\hline
    	Bit 1&Bit 0&Bit 1&Bit 0&Bit 1&Bit 0&Bit 1&Bit 0\\
    	\hline
    	\end{tabular*}
    	\caption{Tabelle1}
    	\label{tbl:Tabelle1}
    \end{table}
    \end{document}
    kann ich das Problem nicht nachvollziehen. Also erkläre bitte etwas genauer Dein Problem bzw.mache ein vollständiges Minimalbeispiel, das Dein Problem wirklich zeigt.

    Mir ist übrigens auch nicht klar, warum Du an der Stelle tabular* statt tabular verwendest:
    Code:
    \documentclass{scrartcl}
    
    \begin{document}
    \begin{table}
    	\centering
    	\begin{tabular}{@{}|c|c|c|c|c|c|c|c|@{}}
    	\hline
    	\multicolumn{8}{|c|}{Byte} \\
    	\hline
    	Bit 7&Bit 6&Bit 5&Bit 4&Bit 3&Bit 2&Bit 1&Bit 0\\
    	\hline
    	\multicolumn{2}{|c|}{Eintrag1} & \multicolumn{2}{c|}{Eintrag2} & \multicolumn{2}{c|}{Eintrag3} & \multicolumn{2}{c|}{Eintrag4} \\
    	%\hline
    	Bit 1&Bit 0&Bit 1&Bit 0&Bit 1&Bit 0&Bit 1&Bit 0\\
    	\hline
    	\end{tabular}
    	\caption{Tabelle1}
    	\label{tbl:Tabelle1}
    \end{table}
    \end{document}

  3. #3
    Registrierter Benutzer
    Registriert seit
    28.04.2011
    Beiträge
    105
    Ich kann jetzt auch nur raten, da alles ganz normal aussieht, daß Du vielleicht bei den Zellen "Eintragxy" unterschiedlich lange Texte drin hast.

    Z.B. so:

    Code:
    \documentclass{scrartcl}
    
    \begin{document}
    \begin{table}
    	\centering
    	\begin{tabular}{@{}|c|c|c|c|c|c|c|c|@{}}
    	\hline
    	\multicolumn{8}{|c|}{Byte} \\
    	\hline
    	Bit 7&Bit 6&Bit 5&Bit 4&Bit 3&Bit 2&Bit 1&Bit 0\\
    	\hline
    	\multicolumn{2}{|c|}{Eintrag1} & \multicolumn{2}{c|}{Eintrag2} & \multicolumn{2}{c|}{Einasdfasdftasdfrag3} & \multicolumn{2}{c|}{Eintrag4} \\
    	%\hline
    	Bit 1&Bit 0&Bit 1&Bit 0&Bit 1&Bit 0&Bit 1&Bit 0\\
    	\hline
    	\end{tabular}
    	\caption{Tabelle1}
    	\label{tbl:Tabelle1}
    \end{table}
    \end{document}
    Und dann paßt sich natürlich die Spaltenbreite dem Inhalt an.
    Aber ne Lösung können wir ja finden, wenn wir wissen, ob das überhaupt das Problem ist.

  4. #4
    Registrierter Benutzer
    Registriert seit
    06.08.2008
    Beiträge
    1.015
    Der Vollständigkeit halber, sei noch auf das Paket bytefield hingewiesen, dass für die Erstellung solcher Bit/Byte-Schemata spezialisiert ist.

  5. #5
    Registrierter Benutzer
    Registriert seit
    09.10.2012
    Beiträge
    8
    tabular* verwende ich um die Tabelle etwas breiter zu machen, in den normalen Einstellungen war es mir zu gequetscht und da genau darüber eine wesentlich breitere Tabelle steht sieht es so optisch nicht so wild aus.

    Ich hoffe das hier reicht als Beispiel:
    Code:
    \documentclass[oneside,pdftex,a4paper]{scrreprt}	%Din A4 Artikel, Halbe Zeile Abstand nach Absatz
    \usepackage[left=3cm,right=2.5cm,top=2cm,bottom=2cm,includeheadfoot]{geometry}%Seitenränder
    \usepackage{array}
    \usepackage[pdftex, pdfpagemode={UseOutlines}, bookmarks, colorlinks,linkcolor={blue}, citecolor={blue}, urlcolor={red}, pdfstartview={Fit},plainpages=false,pdfpagelabels]{hyperref}
    
    \renewcommand{\familydefault}{\sfdefault} %Serifenlose Schrift als Standart
    
    \begin{document}
    
    \begin{table}
    	\centering
    	\begin{tabular*}{0.8\textwidth}{@{\extracolsep\fill}|c|c|c|c|c|c|c|c|@{}}
    	\hline
    	\multicolumn{8}{|c|}{\textbf{Byte}}\\
    	\hline
    	Bit 7&Bit 6&Bit 5&Bit 4&Bit 3&Bit 2&Bit 1&Bit 0\\
    	\hline
    	\multicolumn{2}{|c|}{Eintrag1} & \multicolumn{2}{c|}{Eintrag2} & \multicolumn{2}{c|}{Eintrag3} & \multicolumn{2}{c|}{Eintrag4}\\
    	%\hline
    	Bit 1&Bit 0&Bit 1&Bit 0&Bit 1&Bit 0&Bit 1&Bit 0\\
    	\hline
    	\end{tabular*}
    	\caption{Tabelle1}
    	\label{tbl:Tabelle1}
    \end{table}
    
    \end{document}
    Wenn ich das generiere kommt das angehängte Bild dabei heraus.
    Man kann da schön sehen dass die Spalten in denen zB Bit 7 und Bit 6 steht unterschiedlich breit sind.

    EDIT: Wenn ich das Ganze mit "tabular" statt "tabular*" mache passen die Abstände, dann ist mir die Tabelle aber wieder nicht breit genug
    Geändert von roehrich (11-10-2012 um 08:21 Uhr)

  6. #6
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Hallo,

    du kannst dafür das Paket tabularx nehmen:
    Code:
    \documentclass[parskip=half]{scrreprt}	%Din A4 Artikel, Halbe Zeile Abstand nach Absatz
    \usepackage[left=3cm,right=2.5cm,top=2cm,bottom=2cm,includeheadfoot]{geometry}%Seitenränder
    \usepackage{array}
    \usepackage{tabularx}
    \usepackage{ragged2e}
    
    \newcolumntype{C}{>{\Centering}X}
    
    \begin{document}
    \begin{table}
    	\centering
    	\begin{tabularx}{0.8\linewidth}{|*{8}{C|}}
    	\hline
    	\multicolumn{8}{|c|}{\textbf{Byte}}\\
    	\hline
    	Bit 7&Bit 6&Bit 5&Bit 4&Bit 3&Bit 2&Bit 1&Bit 0\\
    	\hline
    	\multicolumn{2}{|c|}{Eintrag1} & \multicolumn{2}{c|}{Eintrag2} & \multicolumn{2}{c|}{Eintrag3} & \multicolumn{2}{c|}{Eintrag4}\\
    	%\hline
    	Bit 1&Bit 0&Bit 1&Bit 0&Bit 1&Bit 0&Bit 1&Bit 0\\
    	\hline
    	\end{tabularx}
    	\caption{Tabelle1}
    	\label{tbl:Tabelle1}
    \end{table}
    
    \end{document}
    oder das Paket tabu:
    Code:
    \documentclass{scrreprt}	%Din A4 Artikel, Halbe Zeile Abstand nach Absatz
    \usepackage[left=3cm,right=2.5cm,top=2cm,bottom=2cm,includeheadfoot]{geometry}%Seitenränder
    \usepackage{tabu}
    
    \begin{document}
    \begin{table}
    	\centering
    	\begin{tabu} to 0.8\linewidth {|*{8}{X[c]|}}
    	\hline
    	\multicolumn{8}{|c|}{\textbf{Byte}}\\
    	\hline
    	Bit 7&Bit 6&Bit 5&Bit 4&Bit 3&Bit 2&Bit 1&Bit 0\\
    	\hline
    	\multicolumn{2}{|c|}{Eintrag1} & \multicolumn{2}{c|}{Eintrag2} & \multicolumn{2}{c|}{Eintrag3} & \multicolumn{2}{c|}{Eintrag4}\\
    	%\hline
    	Bit 1&Bit 0&Bit 1&Bit 0&Bit 1&Bit 0&Bit 1&Bit 0\\
    	\hline
    	\end{tabu}
    	\caption{Tabelle1}
    	\label{tbl:Tabelle1}
    \end{table}
    
    \end{document}
    Gruß
    Elke
    Geändert von esdd (11-10-2012 um 09:33 Uhr) Grund: \newcolumntype{C}{...} geändert und verwendet

  7. #7
    Registrierter Benutzer
    Registriert seit
    09.10.2012
    Beiträge
    8
    Vielen Dank Elke,

    das Beispiel mit tabularx hat genau das gemacht was ich wollte

    Nur eine Frage: Die Zeile "\newcolumntype{C}{>{\centering}X}", wozu ist die gut? Die wird doch eigentlich garnicht gebraucht oder?
    Und verstehe ich den Rest richtig? Alle Felder die mit X markiert werden haben eine flexible Größe und der >{\centering} Part zentriert den Inhalt dann innerhalb des Felds?

  8. #8
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Hallo,

    das Beispiel mit tabularx habe ich verändert, so dass der newcolumntype jetzt auch verwendet wird.

    Der verfügbare Platz wird gleichmäßig auf die X-Spalten verteilt. Sind noch andere Spaltentypen wie z.B. r oder p{...} angegeben wird nur der restliche Platz verteilt.

    >{...} stammt aus dem array Paket und sorgt dafür, dass der Code in der Klammer vor dem Beginn der folgenden Spalte ausgeführt wird, d.h. >{\Centering} zentriert den Inhalt der folgenden Spalte.

    Gruß
    Elke

  9. #9
    Registrierter Benutzer
    Registriert seit
    09.10.2012
    Beiträge
    8
    Ok, verstanden

    Danke nochmal für die Erläuterung.

  10. #10
    Registrierter Benutzer
    Registriert seit
    28.04.2011
    Beiträge
    105
    Aber schau dir für die zukunft mal das von hakaze vorgeschlagene Paket bytefield mal an, das ist echt genial. Hab´s heute auch das erste mal gesehen.

Lesezeichen

Berechtigungen

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