PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle Formatiren



xMeaningx
24-11-2008, 20:18
Abend
In folgender Tabelle habe ich ein "Problem"


\begin{tabular}{c|>{\centering}p{0.33\textwidth}|c}
\cline{2-2}
&Mitte Oben & \tabularnewline
\hline
\multicolumn {1}{|>{\centering}p{0.33\textwidth}|}{Links Mitte} & Mitte Mitte &
\multicolumn {1}{|>{\centering}p{0.33\textwidth}|}{ Mitte} \tabularnewline
\hline
& Mitte Unten & \tabularnewline
\cline{2-2}

1. Ich muss die Spaltenbreite immer mit 0.33\textwidth angeben da sonst wenn zuviel text in einer Zelle steht die Tabelle nach rehcts über den Dokument rand verschoben wird, gibt es da auch eine andere Möglichkeit ?

2. Gibt es einen Möglichkeit den Text z.B in der Mittlern Zelle auch Vertikal zu zentrieren??


3. Wenn ich eine Tabelle innerhalb einer Aufzählung habe verschiebt sich diese nach rechts. Gibt es eine Möglichkeit diese Aus der Aufzählung zu "entfernen" diese aber trotzdem Weiterlaufen lassen ?


\begin{itemize}
\item
Tabelle
\end{itemize}

Danke schon mal

mechanicus
24-11-2008, 20:30
1. Ich muss die Spaltenbreite immer mit 0.33\textwidth angeben da sonst wenn zuviel text in einer Zelle steht die Tabelle nach rehcts über den Dokument rand verschoben wird, gibt es da auch eine andere Möglichkeit ?
Ja. Was willst du denn genau? Wenn du die Standarausrichtung verwendest ( l r c ), dann ist kein Zeilenumbruch möglich. Somit wird die Tabelle ewig breit.



3. Wenn ich eine Tabelle innerhalb einer Aufzählung habe verschiebt sich diese nach rechts. Gibt es eine Möglichkeit diese Aus der Aufzählung zu "entfernen" diese aber trotzdem Weiterlaufen lassen ?

Wie willst du denn Bei itemize was zählen?

Was willst du denn genau haben.

Gruß
Marco

localghost
24-11-2008, 20:33
Bei der Tablle hilft hinsichtlich der Breite tabularx (http://ctan.org/pkg/tabularx) vielleicht.

\begin{tabularx}{\linewidth}{>{\centering}X|>{\centering}X|>{\centering}X} \cline{2-2}
& Mitte Oben & \tabularnewline \hline
Links Mitte & Mitte Mitte & Rechts Mitte \tabularnewline \hline
& Mitte Unten & \tabularnewline \cline{2-2}
\end{tabularx}
Mit enumitem (http://ctan.org/pkg/enumitem) kannst Du die Aufzählung unterbrechen und später fortsetzen.

\begin{enumerate}
\item Eins
\item Zwei
\end{enumerate}

% Code für die Tabelle

\begin{enumerate}[resume]
\item Drei
\item Vier
\end{enumerate}
Alles Weitere klärt die Anleitung.


MfG
Thorsten¹

xMeaningx
24-11-2008, 22:01
Das mit dem resume hat nicht funktioniert, aber ich habe das gefunden.
Mit \usepackage{mdwlist}

\begin{enumerate}
\item first
\item list
\suspend{enumerate}
regular text
\resume{enumerate}
\item resumed
\end{enumerate}

Gibt es sowas auch für itemize wenn diese verschachtelt wäre das hilfreich.

Aber trotzdem schon mal Danke
Bei der tabularx hab ich das Problem das er meine gleichmäßige Dreiteilung nicht einhält, wie lässt sich das beheben ?

localghost
25-11-2008, 14:14
Das mit dem resume hat nicht funktioniert
Zeige mir das doch bitte mal an einem Minimalbeispiel (http://www.minimalbeispiel.de). Folgendes funktioniert.

\documentclass[11pt,a4paper]{article}
\usepackage{enumitem}

\begin{document}
\begin{enumerate}
\item Eins
\item Zwei
\end{enumerate}

% Code für die Tabelle

\begin{enumerate}[resume]
\item Drei
\item Vier
\end{enumerate}
\end{document}

xMeaningx
25-11-2008, 21:31
Sorry geht doch ab was mit dem Package falsch gemacht ka was ......

Hat wer ne Lösung dazu ?
Bei der tabularx hab ich das Problem das er meine gleichmäßige Dreiteilung nicht einhält, wie lässt sich das beheben ?

mechanicus
25-11-2008, 21:39
Hat wer ne Lösung dazu ?
Bei der tabularx hab ich das Problem das er meine gleichmäßige Dreiteilung nicht einhält, wie lässt sich das beheben ?
Kannst du das auch mal an einem Beispiel zeigen. Auch Thorsten hat dir eines gemacht, um eine bessere Grundlage zu haben.

Gruß
Marco

xMeaningx
25-11-2008, 22:35
\begin{document}


\begin{tabularx}{\linewidth}{>{\centering}X|>{\centering}X|>{\centering}X} \cline{2-2}
& Mitte Oben & \tabularnewline \hline
\multicolumn {1}{|c|}{Links Mitte} & Mitte Mitte & \multicolumn {1}{ c|}{Rechts Mitte Rechts Mitte Rechts Mitte Rechts Mitte Rechts Mitte Rechts Mitte } \tabularnewline \hline
& Mitte Unten & \tabularnewline \cline{2-2}
\end{tabularx}

\end{document}

Wie hier es sollten eigentlich alle drei Spalten gleich groß sein also 1/3 der Arbeitsfläche.

Wenn ich aber bei einen Normalen Tabelle alle spalten auf 0.33\textwidth definieren ist die Tabelle zu groß und hängt nach rechts


\begin{tabular}{c|>{\centering}p{0.33\textwidth}|c}
\cline{2-2}
& Mitte Oben & \tabularnewline
\hline
\multicolumn {1}{|>{\centering}p{0.33\textwidth}|}{Links Mitte} & Mitte Mitte & \multicolumn {1}{>{\centering}p{0.33\textwidth}|}{Rechts Mitte Rechts Mitte Rechts Mitte Rechts Mitte Rechts Mitte} \tabularnewline
\hline
& Mitte Unten & \tabularnewline
\cline{2-2}
\end{tabular}

mechanicus
25-11-2008, 22:45
\begin{document}


\begin{tabularx}{\linewidth}{>{\centering}X|>{\centering}X|>{\centering}X} \cline{2-2}
& Mitte Oben & \tabularnewline \hline
\multicolumn {1}{|c|}{Links Mitte} & Mitte Mitte & \multicolumn {1}{ c|}{Rechts Mitte Rechts Mitte Rechts Mitte Rechts Mitte Rechts Mitte Rechts Mitte } \tabularnewline \hline
& Mitte Unten & \tabularnewline \cline{2-2}
\end{tabularx}

\end{document}

Wie hier es sollten eigentlich alle drei Spalten gleich groß sein also 1/3 der Arbeitsfläche.
Das geht leider nicht auf, weil du ein multicolumn nutzt, welches die Spaltendefinition c hat. In dieser ist kein Zeilenumbruch möglich.(1) Wenn du es wie folgt änders:

\documentclass[12pt,ngerman]{scrreprt}
\usepackage{babel}
\usepackage[showframe]{geometry}
\usepackage{tabularx}
\begin{document}
\null\vfill\centering
\begin{tabularx}{\linewidth}{>{\centering}X|>{\centering}X|>{\centering}X}
\cline{2-2}
& Mitte Oben & \tabularnewline \hline
\multicolumn {1}{|X|}{Links Mitte} & Mitte Mitte & \multicolumn {1}{ X|}{Rechts Mitte Rechts Mitte Rechts Mitte Rechts Mitte Rechts Mitte Rechts Mitte } \tabularnewline \hline
& Mitte Unten & \tabularnewline \cline{2-2}
\end{tabularx}
\vfill
\end{document}
funktioniert es.




Wenn ich aber bei einen Normalen Tabelle alle spalten auf 0.33\textwidth definieren ist die Tabelle zu groß und hängt nach rechts

Hallo, dass ist auch richtig so. Bei der Spaltenlänge von 0.33\textwidth ist wirklich nur die reine Spaltenlänge gemein. Du hast auch noch einen Spaltentrenner | drin. Dieser benötigt 6pt (ohne Gewähr). Also ergibt es in der Summer mehr als textwidth. Zusätlich gilt Bedingung (1).

Hoffe ist verständlich.

Gruß
Marco

rais
26-11-2008, 00:10
@xMeaningx: was genau versuchst Du mit dem \multicolumn{1}... hier eigentlich zu erreichen?

MfG

xMeaningx
26-11-2008, 11:53
@rais

Mit dem Multicolum wird die "+" Form erreicht, weil es sonst nicht möglich ist Linien nur über hier höhe einer Spalte zu ziehen.

Wenn du ne bessere Möglichkeit kennst dann erklär sie mir bitte.

@mechanicus

Danke genau das wars ^^

Gruß Fabi

Anhang
Dank mechanicus hab ich es jetzt geschafft die Spalten zusammenzufassen und zu zentriert sowie Zeilen Umbrüche innerhalb einer Zeile zu machen.

Leider schiebt sich bei dieser Formatierung die Rechte Linie nach aussen um ca 1 cm wie lässt sich das Vermeiden.


\documentclass[12pt,a4paper,ngerman]{scrreprt}
\usepackage{babel}
\usepackage[latin1]{inputenc}
\usepackage{blindtext}
\usepackage{tabularx}
\usepackage{booktabs}
\begin{document}

\begin{tabularx}{\linewidth}{>{\centering}X>{\centering}X}
\toprule
\multicolumn{2}{>{\centering}p{\linewidth}}{Mitte\\ hier wurde umgebrochen}\tabularnewline
\multicolumn{2}{>{\centering}p{\linewidth}}{Mitte 2}\tabularnewline
\multicolumn{2}{>{\centering}p{\linewidth}}{Mitte 3}\tabularnewline
\midrule
Links & \blindtext \tabularnewline
\bottomrule
\end{tabularx}
\end{document}


@mechanicus wieso ist mein Blind text auf Latein und deiner Auf deutsch ich kriegs nicht hin.....

mechanicus
26-11-2008, 22:23
Jetzt auf diesem Weg:


\documentclass[12pt,a4paper,ngerman]{scrreprt}
\usepackage[showframe]{geometry}
\usepackage{babel}
\usepackage[latin1]{inputenc}
\usepackage{blindtext}
\usepackage{tabularx}
\usepackage{booktabs}

\begin{document}
\blindtext

\begin{center}
\begin{tabularx}{\linewidth}{>{\centering}X>{\centering}X}
\toprule
\multicolumn{2}{>{\centering}p{\linewidth}}{Mitte\\ hier wurde umgebrochen}\tabularnewline
\multicolumn{2}{>{\centering}p{\linewidth}}{Mitte 2}\tabularnewline
\multicolumn{2}{>{\centering}p{\linewidth}}{Mitte 3}\tabularnewline
\midrule
Links & \blindtext \tabularnewline
\bottomrule
\end{tabularx}
\end{center}
\end{document}



Leider schiebt sich bei dieser Formatierung die Rechte Linie nach aussen um ca 1 cm wie lässt sich das Vermeiden.

Begründung: Du hast einen voreingestellen Absatzeinzug (genauen Wert weiß ich jetzt nicht). Für latex ist die alleinstehende tabular-Umgebung ein neuer Absatz. Daher dieser Versatz. Ein alternative wäre also auch parindent auf 0pt zu setzen.




wieso ist mein Blind text auf Latein und deiner Auf deutsch ich kriegs nicht hin.

Keine Ahnung. hast du vergessen die Sprache einzustellen?

Gruß
Marco

xMeaningx
26-11-2008, 23:02
Also irgendwie steh ich aufm schlauch.
Ich schaff es nicht mit den von dir beschriebenen Methoden das untere So aus sehen zu lassen wie das obere.


\begin{tabularx}{\linewidth}{|>{\centering}X|>{\centering}X|}
\multicolumn{2}{c}{Mitte 1}\tabularnewline
\multicolumn{2}{c}{Mitte 2}\tabularnewline
\multicolumn{2}{c}{Mitte 3}\tabularnewline \hline
Links & Rechts \tabularnewline \hline
\multicolumn{2}{|c|}{Unten Mitte}\tabularnewline \hline
\end{tabularx}



\begin{tabularx}{\linewidth}{|>{\centering}X|>{\centering}X|}
\multicolumn{2}{>{\centering}p{\linewidth}}{Mitte 1 \\ Mitte 2 \\ Mitte 3}\tabularnewline \hline
Links & Rechts \tabularnewline \hline
\multicolumn{2}{|>{\centering}p{\linewidth}|}{Unten Mitte}\tabularnewline \hline
\end{tabularx}

\end{document}

mechanicus
26-11-2008, 23:18
Hallo,

wie oben beschrieben, Spaltentrenner brauchen auch Platz.


\documentclass[12pt,a4paper,ngerman]{scrreprt}
%\usepackage[showframe]{geometry}
\usepackage{babel}
\usepackage[latin1]{inputenc}
\usepackage{blindtext}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{calc}
\begin{document}
\blindtext

\begin{center}

\begin{tabularx}{\textwidth}{|>{\centering}X|>{\centering}X|}
\multicolumn{2}{>{\centering}p{\textwidth-12pt}}{Mitte 1 \\ Mitte 2 \\ Mitte 3}\tabularnewline \hline
Links & Rechts \tabularnewline \hline
\multicolumn{2}{|>{\centering}p{\textwidth-12pt}|}{Unten Mitte}\tabularnewline \hline
\end{tabularx}

\begin{tabularx}{\linewidth}{|>{\centering}X|>{\centering}X|}
\multicolumn{2}{c}{Mitte 1}\tabularnewline
\multicolumn{2}{c}{Mitte 2}\tabularnewline
\multicolumn{2}{c}{Mitte 3}\tabularnewline \hline
Links & Rechts \tabularnewline \hline
\multicolumn{2}{|c|}{Unten Mitte}\tabularnewline \hline
\end{tabularx}

\end{center}
\end{document}

Gruß
Marco

xMeaningx
26-11-2008, 23:47
Ich sagte doch ich steh aufm schlauch ^^
Nur so es sind 6.5 Pro | und das ich das jetzt richtig versteh Anzahl |*6.5pt ist dass was ich abziehen muss oder?

Eine Frage noch kann ich auch etwas innerhalb Einer Zelle Vertikal Zentrieren??

mechanicus
27-11-2008, 06:50
Hallo,


\documentclass[12pt,a4paper,ngerman]{scrreprt}
\usepackage[showframe]{geometry}
\usepackage{babel}
\usepackage[latin1]{inputenc}
\usepackage{blindtext}
\usepackage{tabularx}
\usepackage{booktabs}

\begin{document}
\blindtext

\begin{center}
\renewcommand{\tabularxcolumn}[1]{m{#1}}

\begin{tabularx}{\linewidth}{>{\centering}X>{\centering}X}
\toprule
\multicolumn{2}{>{\centering}p{\linewidth}}{Mitte\\ hier wurde umgebrochen}\tabularnewline
\multicolumn{2}{>{\centering}p{\linewidth}}{Mitte 2}\tabularnewline
\multicolumn{2}{>{\centering}p{\linewidth}}{Mitte 3}\tabularnewline
\midrule
Links & \blindtext \tabularnewline
\bottomrule
\end{tabularx}
\end{center}
\end{document}

Gruß
Marco

xMeaningx
27-11-2008, 13:15
ah sehr schön kannst du mir den Befehl nur kurz erklären ich kapier das ned ganz.
Lässt der Effekt auch nur auf eine Zelle begrenzen ?

Danke dir soweit

Xenara
27-11-2008, 13:46
Mechanicus setzt mit
\renewcommand{\tabularxcolumn}[1]{m{#1}}
den Text in allen Zellen vertikal zentriert.

Edit:
In diesem Thread (http://mrunix.de/forums/showthread.php?t=58653) gibt es eine sehr schöne Lösung, indem einfach ein neuer Spaltentyp definiert wird, der jedoch mittels multicolumn nur auf eine Zelle angewendet wird.

xMeaningx
28-11-2008, 18:54
Ah ok Danke dir
Aber ich hab folgendes Problem
Hier schreibt er den Text nicht über beide Spalten aber wieso ?


\begin{tabularx}{\linewidth}{|X|X|X|}
\hline
& Rechts & Links \tabularnewline \hline
Punkt1 & \multicolumn{2}{X|}{Multicolumn Multicolumn Multicolumn Multicolumn Multicolumn Multicolumn Multicolumn Multicolumn Multicolumn Multicolumn} \tabularnewline
& Links & Rechts \tabularnewline \hline

\end{tabularx}

René Geppert
28-11-2008, 18:57
du verbindest zwei X-Spalten nochmal und sagst, das soll wieder eine X-Spalte sein
das verwirrt TeX

xMeaningx
28-11-2008, 19:02
hm wie lässt sich das lösen wenn ich c als Formatierung angebe und der Text länger wird zerstört er alles.

René Geppert
28-11-2008, 19:23
Suche nutzen: http://mrunix.de/forums/showthread.php?t=46716

xMeaningx
28-11-2008, 19:43
hm damit komm ich auch nicht weiter, wenn ich

\newcolumntype{Z}{>{\centering\arraybackslash}X} und dann z also Formatierung für multicolumn dann is das der gleiche Effekt wie X

xMeaningx
01-12-2008, 17:16
hat sich erledigt dafür hab ich ein anderes Problem

Ich habe ein Dokument das ich in Tex schreiben möchte.
Es ist eine Tabelle mit 3 Spalten links sinds ungefähr 20% mitte 20% und Rechts 60%. Wobei in Links und Mitte jeweils nur ein paar Wörter stehen und Rechts längerer Text.
Da das Dokument über zwei seiten geht, kommt nur longtabel in frage oder ?
Last sich die 20/20/60 auch schöner lösen als mit 20\textwidth, weil sonst muss ich die pt zahlen abziehen um links nicht in den Rand zu kommen.


\begin{longtable}{p{0.2\textwidth-12.6pt}|p{0.20\textwidth-12.6pt}|p{0.6\textwidth-12.6pt}}

Zusätzlich will ich den Text in der Rechern Spalte manchmal umbrechen zwegs Formatierung, mit multicolumn bringt er mir immer ne Fehler meldung und das is auch nicht unbedingt schön also gibs dazu ne alternative.

Danke schon mal

localghost
01-12-2008, 17:33
Du kannst ltxtable (http://ctan.org/pkg/ltxtable) nehmen. Es kombiniert longtable (http://ctan.org/pkg/longtable) und tabularx (http://ctan.org/pkg/tabularx).


MfG
Thorsten¹

xMeaningx
01-12-2008, 18:03
damit kann ich jetzt irgendwie gar nix anfangen könntst du mir nen beispiel geben

localghost
01-12-2008, 18:07
Schau doch einfach mal in die Anleitung. Dafür ist sie ja schließlich da. Danach machst Du einen Ansatz, an dem sich dann herumbasteln lässt.