PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit Tabularx eine Tabelle mit bestimmten Spaltenverhältnis erstellen



ccAZRAEL
09-07-2009, 08:59
Moin moin,

bin gerade dabei mich in die tabularx Umgebung hineinzuarbeiten. Allerdings bin ich dabei so eben auf folgendes Problem gestoßen:

Ich möchte eine Tabelle erstellen. Diese soll 6 Spalten im Verhältnis 1:1:1:4:1:1 haben und automatisch an die Seitenbreite angepasst werden. Meine bisherige Lösung sieht folgendermaßen aus:

Mein Header:


\documentclass[a4paper,11pt]{article}
\usepackage{german}
\usepackage{textcomp}
\usepackage{graphicx}
\usepackage{graphics}
\usepackage{setspace}
\usepackage[automark,headsepline,nouppercase]{scrpage2}
\usepackage[ansinew]{inputenc}
\usepackage{jurabib}
\usepackage{lscape}
\usepackage{tabularx}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}} % zentrierte Spalten mit Breitenangabe
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}} % rechtsbündig mit Breitenangabe
\newcommand{\ctab}{\centering\arraybackslash } % Tabellenabschnitt zentrieren
\newcommand{\rtab}{\raggedleft\arraybackslash} % Tabellenabschnitt rechtsbündig
\newcommand{\ltab}{\raggedright\arraybackslash} % Tabellenabschnitt linksbündig
\setlength{\oddsidemargin}{1.75cm}
\setlength{\evensidemargin}{1.75cm}
\setlength{\textwidth}{14cm}
\setlength{\topmargin}{0.3cm}
\setlength{\textheight}{23.5cm}
\setlength{\headheight}{1.4\baselineskip}
\automark[section]{subsection}
\jurabibsetup{
% authorformat=year,
commabeforerest,
see,
% titleformat={commasep,all},
}
\renewcommand*{\jbauthorfont}{\textsc} %Formatierung Nachname Fließtext
\renewcommand*{\biblnfont}{\textsc} %Formatierung Nachname Bibliography
\renewcommand*{\bibfnfont}{\normalfont} %Formatierung Vorname
\renewcommand*{\bibtfont}{\textsl} %Formatierung Buchtitel
\newcommand*{\kcite}[3]{%
(\cite[#1][#2]{#3})%
}


Der entsprechende Ausschnitt im Dokument:



\begin{landscape}
\subsubsection{Verlauf der Stunde}

\begin{tabularx}{|>{\setlength{\hsize}{0.66\hsize}}X|>{\setlength{\hsize}{0.66\hsize}}X|>{\setlength{\hsize}{0.66\hsize}}X|>{\setlength{\hsize}{2.7\hsize}}X|>{\setlength{\hsize}{0.66\hsize}}X|>{\setlength{\hsize}{0.66\hsize}}X|}

Dieser Text soll in der Tabelle stehen & Dieser in der zweiten Spalte und dabei auch automatisch umgebrochen werden & Die dritte Spalte ist leerer & Für die vierte fällt mir nichts sinnvolles mehr ein & 5. Spalte \\ \hline

\end{tabularx}
\end{landscape}



Nun gibt er mir allerdings folgende Fehlermeldung aus:

(praxis.tex [1]
! Missing number, treated as zero.
<to be read again>
|
l.20 ...ze}}X|>{\setlength{\hsize}{0.66\hsize}}X|}

?

Hoffe ihr könnt mir bei der Lösung meines Problems helfen.

Mit besten Dank im Voraus,
Christian

u_fischer
09-07-2009, 09:12
Tja, dann schrumpfen wir das mal etwas ein:


\documentclass{article}
\usepackage{tabularx}
\begin{document}
\begin{tabularx}{|X}
Dieser Text soll in der Tabelle stehen
\end{tabularx}

\end{document}

Siehst du jetzt deinen Fehler?

Ulrike Fischer

bobmalaria
09-07-2009, 09:19
hi,

du kannst doch einfach die textbreite durch 9 teilen. das als länge definieren und dann diese länge in eine p{\länge} bzw p{4\länge} packen.

gruss

Xenara
09-07-2009, 09:22
Das mit dem Minimalbeispiel solltest du dir unbedingt nochmal anschauen, denn so macht das Fehlersuchen mal überhaupt keinen Spass. Abgesehen davon willst du 6 Spalten haben, gibst aber in deinem Tabellenschnipsel nur 5 vor...
Du hast vergessen, der Tabelle die vorgesehene Breite mitzugeben. So gehts:


\documentclass[a4paper,11pt]{article}
\usepackage[ngerman]{babel} % Statt \usepackage{german}
\usepackage[ansinew]{inputenc}
\usepackage{lscape}
\usepackage{tabularx}

\begin{document}

\begin{landscape}
\subsubsection{Verlauf der Stunde}
%
\begin{tabularx}{\textwidth}{|%
>{\setlength{\hsize}{0.66\hsize}}X|%
>{\setlength{\hsize}{0.66\hsize}}X|%
>{\setlength{\hsize}{0.66\hsize}}X|%
>{\setlength{\hsize}{2.7\hsize}}X|%
>{\setlength{\hsize}{0.66\hsize}}X|%
>{\setlength{\hsize}{0.66\hsize}}X|%
}
%
Dieser Text soll in der Tabelle stehen & Dieser in der zweiten Spalte und dabei auch automatisch umgebrochen werden & Die dritte Spalte ist leerer & Für die vierte fällt mir nichts sinnvolles mehr ein & 5. Spalte & 6. Spalte \\\hline
\end{tabularx}
\end{landscape}

\end{document}

localghost
09-07-2009, 10:02
Das mit dem Minimalbeispiel solltest du dir unbedingt nochmal anschauen, denn so macht das Fehlersuchen mal überhaupt keinen Spass. Abgesehen davon willst du 6 Spalten haben, gibst aber in deinem Tabellenschnipsel nur 5 vor...
Du hast vergessen, der Tabelle die vorgesehene Breite mitzugeben.
Hast Du dir eigentlich mal Gedanken über den Sinn des Beitrags von Ulrike gemacht? Offensichtlich nicht.


MfG
Thorsten¹

Xenara
09-07-2009, 10:07
Hast Du dir eigentlich mal Gedanken über den Sinn des Beitrags von Ulrike gemacht? Offensichtlich nicht.

Ich hab es eben etwas ausführlicher formuliert und mich tatsächlich auch noch die Lösung angegeben...
Ist das mittlerweile in diesem Forum unerwünscht?

localghost
09-07-2009, 10:10
Ich hab es eben etwas ausführlicher formuliert und mich tatsächlich auch noch die Lösung angegeben...
Ist das mittlerweile in diesem Forum unerwünscht?
Sicherlich nicht. Aber Denkanstöße sind manchmal mehr wert als die fertige Lösung auf einem Silbertablett. Sonst ist der Lerneffekt gleich Null.

ccAZRAEL
09-07-2009, 10:13
Vielen vielen Dank, dass du dich trotzdem durch gewurschtelt hast :-)

Vor allem so ein blöder Fehler... :rolleyes:

Nun hätte ich allerdings gerne, dass die Tabelle die DinA4 Seite im Querformat relativ ausfüllt. Habe deswegen statt textwidth textheight eingegeben, das hat aber leider nicht den gewünschten Effekt gehabt.



\documentclass[a4paper,11pt]{article}
\usepackage[ngerman]{babel}
\usepackage[ansinew]{inputenc}
\usepackage{lscape}
\usepackage{tabularx}

\begin{document}

\begin{landscape}
\subsubsection{Verlauf der Stunde}
%
\begin{tabularx}{\textheight}{|%
>{\setlength{\hsize}{0.66\hsize}}X|%
>{\setlength{\hsize}{0.66\hsize}}X|%
>{\setlength{\hsize}{0.66\hsize}}X|%
>{\setlength{\hsize}{2.7\hsize}}X|%
>{\setlength{\hsize}{0.66\hsize}}X|%
>{\setlength{\hsize}{0.66\hsize}}X|%
}
\hline
Dieser Text soll in der Tabelle stehen & Dieser in der zweiten Spalte und dabei auch automatisch umgebrochen werden & Die dritte Spalte ist leerer & Für die vierte fällt mir nichts sinnvolles mehr ein & 5. Spalte & 6. Spalte \\\hline
\end{tabularx}
\end{landscape}

\end{document}

u_fischer
09-07-2009, 10:17
Ich hab es eben etwas ausführlicher formuliert und mich tatsächlich auch noch die Lösung angegeben...
Ist das mittlerweile in diesem Forum unerwünscht?

Es ist deine persönliche Entscheidung, wie du auf Fragen antwortest. Ich werde dir da nicht reinreden.

Ulrike Fischer

u_fischer
09-07-2009, 10:22
Füge mal diesen Code vor und nach \begin{landscape} ein. Dann kannst du am Terminal oder in der log-Datei die Werte vergleichen.




\showthe\textheight
\showthe\textwidth
\showthe\linewidth


landscape ist schon etwas etwas seltsam ...

Ulrike Fischer

Xenara
09-07-2009, 10:22
Nimm \linewidth statt \textheight, damit klappts.
Weshalb das so ist, weiss ich nicht genau, das können die Profis hier aber sicher erklären.

Edit: Zu langsam, die Erklärung hast du grad von Ulrike schon bekommen.

ccAZRAEL
09-07-2009, 10:23
Dumdidum, ich habe ja schon eingesehen, dass ich einen blöden Fehler gemacht habe...

Und das mein Beispiel nicht gerade ein Minimalbeispiel ist, habe ich auch erkannt. Wenn das der Lerneffekt ist, den ihr haben wolltet.

ccAZRAEL
09-07-2009, 10:31
Sonderbar, das funktioniert. Besten Dank :)


Verstanden hätte ich es gerne, allerdings funktioniert der "\showthe\textheight" - Befehl bei mir nicht.

u_fischer
09-07-2009, 10:38
Was heißt "funktioniert nicht". Bekommst du keine Ausgabe? Dann verwendest du wahrscheinlich ein System, das im Scrollmode läuft und nicht daher anhält. (Ich habe noch nie verstanden, wieso soviele LaTeX in diesem Modus benutzen, ich will Fehler und Meldungen immer sofort sehen). Die log-Datei müsste aber die Werte enthalten.

Du kannst aber auch \the\textheight benützen. Dann werden die Werte in dein Dokument geschrieben.

Ulrike Fischer

ccAZRAEL
09-07-2009, 10:54
Ach, mein Fehler...

Das Fenster hält schon automatisch an, wenn er die Werte anzeigt. Ganz davon abgesehen lasse ich mir das Dokument immer als DVI anzeigen, dadurch bleibt das Fenster auch erhalten.

Hier die Werte für jene, die das auch interessiert:

linewidth vorher: 398.33858pt
textheight vorher:668.63976pt
textwidth vorher: 398.33858pt
\begin{landscape}
linewidth nachher: 668.63976pt
textheight nachherher:398.33858pt
textwidth nachher: 398.33858pt

Die haben bei landscape anscheinend vergessen an die textwidth zu denken.