PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \extrarowheight hat nur auf eine Spalte Auswirkung



gurkensalat
13-10-2011, 15:54
Hallo,
ich habe folgende Tabelle:



\setlength{\extrarowheight}{10pt}
\begin{filecontents*}{tabelletest.tex}
\begin{longtable}{|c|>{\hangindent 1em}X|c|}
\hline
\textbf{ABCDEF} & \textbf{Testspalte} & \textbf{XYZABC} \\
\hline
\addlinespace
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
\end{longtable}
\end{filecontents*}
{\def\tabularxcolumn#1{m{#1}}% verwende m- statt p-Spalten für X-Spalten
\LTXtable{\linewidth}{tabelletest.tex}}


Das Problem ist nun, dass sich


\setlength{\extrarowheight}{10pt}
nur auf die mittlere Spalte auswirkt, die erste und letzte Spalte bleiben davon unberührt... Wieso ist das so? Was muss ich ändern, damit alle Spalten davon betroffen sind?

u_fischer
13-10-2011, 16:24
Mach aus deinen Codeschnipseln ein lauffähiges Beispiel.

Sepp99
13-10-2011, 17:57
Gleiche Frage unter http://www.golatex.de/extrarowheight-hat-nur-auf-eine-spalte-auswirkung-t7617.html
Sepp.-

gurkensalat
14-10-2011, 08:02
hi, das folgende müsste lauffähig sein:



\documentclass[a4paper,11pt,parskip]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[table]{xcolor}
\usepackage{ltxtable}
\usepackage{filecontents}
\usepackage{booktabs}
\setlength{\extrarowheight}{10pt}
\begin{filecontents*}{tabelletest.tex}
\begin{longtable}{|c|>{\hangindent 1em}X|c|}
\hline
\textbf{ABCDEF} & \textbf{Testspalte} & \textbf{XYZABC} \\
\hline
\addlinespace
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
\end{longtable}
\end{filecontents*}
{\def\tabularxcolumn#1{m{#1}}% verwende m- statt p-Spalten für X-Spalten
\LTXtable{\linewidth}{tabelletest.tex}}

u_fischer
14-10-2011, 09:25
hi, das folgende müsste lauffähig sein:

Nun, da du dir unsicher bist, erkläre ich dir, wie du die Aussage überprüfen kannst: Füge genau in diesen Code in eine leere (!!) test.tex, kompiliere test.tex mit pdflatex und dann überprüfe, 1. ob du eine pdf-Datei erhalten hast und 2. ob in der log-Datei ein Fehler erwähnt wird.

rstuby
14-10-2011, 09:32
Also bei mir läuft es nicht.
Und kann es ja eigentlich auch nicht, da weder \begin{document} noch \end{document} vorhanden sind. Oder?
Es ist mir auch nicht gelungen, es zu einem (bei mir) lauffähigen Beispiel umzubasteln.

gurkensalat
14-10-2011, 09:54
Tut mir Leid, ihr habt natürlich Recht. Habe es nun mehrmals geprüft und jedes mal ohne Fehler und mit PDF-Datei.


\documentclass[a4paper,11pt,parskip]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[table]{xcolor}
\usepackage{ltxtable}
\usepackage{filecontents}
\usepackage{booktabs}
\begin{document}
\setlength{\extrarowheight}{10pt}
\begin{filecontents*}{tabelletest.tex}
\begin{longtable}{|c|>{\hangindent 1em}X|c|}
\hline
\textbf{ABCDEF} & \textbf{Testspalte} & \textbf{XYZABC} \\
\hline
\addlinespace
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
\end{longtable}
\end{filecontents*}
{\def\tabularxcolumn#1{m{#1}}% verwende m- statt p-Spalten für X-Spalten
\LTXtable{\linewidth}{tabelletest.tex}}
\end{document}

u_fischer
14-10-2011, 10:14
Dein \extrarowheight wird schon überall benutzt. Aber in Kombination mit der m-Spalte bekommst du nicht das gewünschte Ergebnis, was du besser sehen kannst, wenn mal einen höheren Wert und eine geringere Tabellenbreite nimmst:


\documentclass[a4paper,11pt,parskip]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[table]{xcolor}
\usepackage{ltxtable}
\usepackage{filecontents}
\usepackage{booktabs}
\begin{document}
\setlength{\extrarowheight}{3cm}
\begin{filecontents*}{tabelletest.tex}
\begin{longtable}{|c|X|c|}
\hline
\textbf{ABCDEF} & \textbf{Testspalte} & \textbf{XYZABC} \\
\hline
\addlinespace
\hline
abc123 & text TextTextTextTextTextTextTextText & 123xyz\\
\hline
abc123 & text TextTextTextTextTextTextTextText & 123xyz\\
\hline
abc123 & Text TextTextTextTextTextTextText & 123xyz\\
\hline
\end{longtable}
\end{filecontents*}
{\def\tabularxcolumn#1{m{#1}}% verwende m- statt p-Spalten für X-Spalten
\LTXtable{6cm}{tabelletest.tex}}
\end{document}

Du kannst versuchen, auf \extrarowheight zu verzichten und dafür lieber in den Spalten einen Strut einfügen. Da kannst du dann unterschiedliche Werte für die Spaltentypen verwenden:


\begin{longtable}{|>{\rule{0pt}{3cm}}c|>{\rule{0pt}{1cm}}X|c|}

Aber ob dabei rauskommt, was du dir vorstellst, hängt vom Inhalt der Tabelle ab. Die Ausrichtung von m-Spalten ist komplexer als die von p-Spalten.

gurkensalat
14-10-2011, 12:32
Danke dir schonmal für die schnelle Antwort. Ich steh aber irgendwie immer noch auf dem Schlauch. Im Grunde genommen möchte ich eine Tabelle haben, bei der mehrere Zeilen Text in eine Zelle passen. Der folgende Code macht aber keinen Zeilenumbruch:

\documentclass[a4paper,11pt,parskip]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[table]{xcolor}
\usepackage{ltxtable}
\usepackage{filecontents}
\usepackage{booktabs}
\begin{document}
\setlength{\extrarowheight}{10pt}
\begin{tabular}{|c|l|c|}
\hline
\textbf{ABCDEF} & \textbf{Testspalte} & \textbf{XYZABC} \\
\hline
\addlinespace
\hline
abc123 & TextTextTextTextTextTextTextText TextTextTextTextTextTextTextText TextTextTextTextTextTextTextText TextTextTextTextTextTextTextText TextTextTextTextTextTextTextText & 123xyz\\
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
\end{tabular}
\end{document}
Darum habe ich eben das mit den m/p Spalten gemacht (habe ich aus nem anderen Forum). Da wird nämlich ein Zeilenumbruch eingefügt. Bei obigen Code funktioniert das \extrarowheight wunderbar und bei allen Spalten gleichmäßig.
Mein Problem ist nun, wie ich beide Dinge zusammen bekomme, also \extrarowheight und Zeilenumbruch...

u_fischer
14-10-2011, 12:49
Zeilenumbruch bekommst du mit m-/p-/b-Spalten. (Sollte das erste Wort sehr lang sein, empfiehlt sich aber ein \hspace{0pt} davor, sonst wird nicht getrennt).

Aber \extrarowheight fügt einfach am Anfang der Zelle einen entsprechenden Strich der Breite 0 ein. Und das verändert den Mittelpunkt einer m-Spalte und dann bekommst du nicht mehr die Ausrichtung, die du wahrscheinlich willst:


\documentclass[a4paper,11pt,parskip]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{array}
\begin{document}
%Effekt von \setlength{\extrarowheight}{1cm}
% durch \rule{3pt}{1cm} sichtbar gemacht:

\begin{tabular}{>{\rule{3pt}{1cm}}c>{\rule{3pt}{1cm}}p{3cm}>{\rule{3pt}{1cm}}m{3cm}}
a & text TextTextTextTextTextTextTextText & text TextTextTextTextTextTextTextText\\
\end{tabular}

\begin{tabular}{cp{3cm}m{3cm}}
a & text TextTextTextTextTextTextTextText & text TextTextTextTextTextTextTextText\\
\end{tabular}
\end{document}

gurkensalat
14-10-2011, 13:14
Sorry, nehmt es mir nicht übel, aber ich verstehe es einfach nicht. Ich hab irgendwie kein Talent durch die Logik da durchzusteigen. Ist es generell überhaupt möglich extrarowheight und Zeilenumbruch zusammen in eine Tabelle zu bringen?

Ich habe halt eine Tabelle mit 3 Spalten. In der ersten und dritten steht jeweils nur ein Wort (Länge ca 13 Zeichen). In der mittleren Spalte steht meistens sehr viel Text über ein bis zwei Sätze verteilt. Dann soll dieser über mehrere Zeilen in der Zelle verteilt werden. Die ganze Tabelle soll dabei einen Rahmen (=Aussehen) haben wie die hier:

\documentclass[a4paper,11pt,parskip]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[table]{xcolor}
\usepackage{ltxtable}
\usepackage{filecontents}
\usepackage{booktabs}
\begin{document}
\setlength{\extrarowheight}{10pt}
\begin{tabular}{|c|l|c|}
\hline
\textbf{ABCDEF} & \textbf{Testspalte} & \textbf{XYZABC} \\
\hline
\addlinespace
\hline
abc123 & TextTextTextTextTextTextTextText TextTextTextTextTextTextTextText TextTextTextTextTextTextTextText TextTextTextTextTextTextTextText TextTextTextTextTextTextTextText & 123xyz\\
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
\end{tabular}
\end{document}

Ist sowas überhaupt machbar mit Latex? Wäre wirklich dankbar für eure Hilfe, da ich da einfach Schwierigkeiten habe, durchzusteigen. Vielen Dank!

u_fischer
14-10-2011, 13:18
Hast du meinen Code ausprobiert oder hast du ihn dir nur verzweifelt angeschaut?


Ist es generell überhaupt möglich extrarowheight und Zeilenumbruch zusammen in eine Tabelle zu bringen?

Ja. Schon in deinem ersten Beispiel hast du es ja genutzt.

gurkensalat
14-10-2011, 14:05
Ich habe ihn ausprobiert. Er zeigt mir die 3 schwarzen senkrechten Balken an, ich glaube du wolltest damit demonstrieren, was das extrarowheight macht, im Grunde genommen einen unsichtbaren Balken einfügen, damit der Text nach unten versetzt wird oder?

In meinem ersten Bsp. habe ich es schon gemacht, aber wie gesagt, es wird nicht gleichmäßig auf alle Spalten übertragen. Der Inhalt der mittleren Spalte ist dann immer tiefer als der aus der ersten und dritten. Ich weiß ehrlich gesagt nicht, wie ich da weiter vorgehen kann.

Mir fehlt noch die Aussage deines Codes mit den 3 schwarzen Balken in Bezug auf mein Problem. Also ich sehe einfach keine Lösung, sry wenn ich mich saudumm anstelle..

u_fischer
16-10-2011, 17:14
ich glaube du wolltest damit demonstrieren, was das extrarowheight macht, im Grunde genommen einen unsichtbaren Balken einfügen,

Es sollte auch das unterschiedliche Verhalten von p- und m-Spalten demonstrieren.

In deinem Beispiel verwendest du ganz bewusst m-Spalten:


{\def\tabularxcolumn#1{m{#1}}% verwende m- statt p-Spalten für X-Spalten

Die sind auch bei mir nicht auf einer Höhe mit einzeiligen-Spalten und werden es auch nie sein - das ist so gedacht. Wenn du deren Verhalten nicht magst, warum benutzt du sie dann?

gurkensalat
17-10-2011, 07:51
Die sind auch bei mir nicht auf einer Höhe mit einzeiligen-Spalten und werden es auch nie sein - das ist so gedacht. Wenn du deren Verhalten nicht magst, warum benutzt du sie dann?
Als Lösung, dass viel Text in einer Zelle mit Zeilenumbruch dargestellt wird. Das ist der einzige Grund. Bevor ich sie benutzt habe, hatte ich folgenden Code, und da wird leider kein Zeilenumbruch eingefügt:

\documentclass[a4paper,11pt,parskip]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[table]{xcolor}
\usepackage{ltxtable}
\usepackage{filecontents}
\usepackage{booktabs}
\begin{document}
\setlength{\extrarowheight}{10pt}
\begin{tabular}{|c|l|c|}
\hline
\textbf{ABCDEF} & \textbf{Testspalte} & \textbf{XYZABC} \\
\hline
\addlinespace
\hline
abc123 & TextTextTextTextTextTextTextText TextTextTextTextTextTextTextText TextTextTextTextTextTextTextText TextTextTextTextTextTextTextText TextTextTextTextTextTextTextText & 123xyz\\
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
\end{tabular}
\end{document}

EDIT: Habe jetzt nochmal selber rumprobiert. Mit folgendem Code funktioniert extrarowheight wie gewünscht und es werden Zeilenumbrüche eingefügt. Das Problem ist aber, dass bei einer sehr langen Tabelle kein Seitenumbruch (!!) gemacht wird, bzw die Textabschnitte vor der Tabelle (nicht im Codebeispiel dabei) plötzlich viel größeren Abstand voneinander haben. Wieso ist das denn auf einmal so? Jetzt blick ich erst recht nicht durch, warum auf einmal kein Seitenumbruch mehr gemacht wird?!!

\documentclass[a4paper,11pt,parskip]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[table]{xcolor}
\usepackage{ltxtable}
\usepackage{filecontents}
\usepackage{booktabs}
\begin{document}
\setlength{\extrarowheight}{10pt}
\begin{tabular}{c|p{9cm}|c}
\hline
\textbf{ABCDEF} & \textbf{Testspalte} & \textbf{XYZABC} \\
\hline
\addlinespace
\hline
abc123 & TextTextTextTextTextTextTextText TextTextTextTextTextTextTextText TextTextTextTextTextTextTextText TextTextTextTextTextTextTextText TextTextTextTextTextTextTextText & 123xyz\\
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
abc123 & TextTextTextTextTextTextTextText & 123xyz\\
\hline
\end{tabular}
\end{document}
Um den Effekt des fehlenden Seitenumbruches zu merken, muss man halt ganz viele Zeilen einfügen, was ich hier aufgrund der Übersichtlichkeit nicht gemacht habe.

u_fischer
17-10-2011, 09:22
Wenn du in einer Tabelle Spalten mit Zeilenumbruch willst, nimm Spalten vom Typ p, b, m oder X (tabularx/ltxtable)

Wenn du eine Tabelle mit Seitenumbruch willst, benutze, wie du es am Anfang getan hast, longtable.

http://www.tex.ac.uk/cgi-bin/texfaq2html?label=longtab

Und ich rate dir, wenn du LaTeX weiter verwenden willst:

1. Lies eine Einführung in latex, damit du Spaltentypen in Tabellen nicht mehr nach dem Zufallsprinzip aussuchst.

2. Höre auf Code und Lösungsvorschläge aus irgendwelchen Foren/Googletreffern einfach abzuschreiben ohne sie zu verstehen. Die in deinem Beispiel benutzen Pakete haben alle Dokumentationen. Lies sie zumindest soweit, dass du ein Vorstellung hast, wozu sie da sind, und dann entscheiden kannst, ob du sie benutzen willst.

gurkensalat
17-10-2011, 09:40
Wenn du in einer Tabelle Spalten mit Zeilenumbruch willst, nimm Spalten vom Typ p, b, m oder X (tabularx/ltxtable)

Wenn du eine Tabelle mit Seitenumbruch willst, benutze, wie du es am Anfang getan hast, longtable.
Vielen Dank! Das war die Lösung, jetzt sieht es so aus wie ich es mir vorgestellt habe. Seitenumbruch, Zeilenumbruch und extrarowheight. Prima :)