PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neue Spaltendefinition mit tabularx



mr. pelle
27-02-2005, 19:49
Moin moin,

ich habe mir folgende neue Spaltendefinition erstellt:


\newcolumntype{R}{>{\centering $}X<{$}}

Allerdings erzeugt dieser Spaltentyp immer Fehlermeldungen, wenn die rechte Spalte vom Typ R ist. Ohne \centering gibt es diese Fehlermeldungen nicht.

Hier dazu zwei Minimalbeispiele:

Dieser Code erzeugt den Fehler:


\documentclass{article}
\usepackage{tabularx}

\begin{document}

\newcolumntype{R}{>{\centering $}X<{$}}

\begin{tabularx}{5cm}{|R|R|}
\hline
a=2&a=2\\
\hline
\end{tabularx}

\end{document}


Dieser Code läuft einwandfrei durch:


\documentclass{article}
\usepackage{tabularx}

\begin{document}

\newcolumntype{R}{>{\centering $}X<{$}}

\begin{tabularx}{5cm}{|R|X|}
\hline
a=2&a=2\\
\hline
\end{tabularx}

\end{document}


Vielleicht hat von euch ja jemand eine Idee, woran das liegen könnte.

MfG

Mr. Pelle

bischi
27-02-2005, 20:13
versuch mal ein \begin{center} \end{center} anstatt dem centering.

MfG Bischi

mr. pelle
27-02-2005, 22:11
Moin bischi,

klappt leider auch nicht. Es kommen die gleichen Fehlermeldungen.

MfG

Mr. Pelle

edico
28-02-2005, 08:31
... ich versteh jetzt dein Problem nicht - du hast doch - oh Freude- eine Lösung, die funktioniert! Oder ist es ein akademisches? Dass die «Variante» nicht läuft, erklärt sich AFAIK aus genau dem Grunde der Definition dieses Styles:
Mit tabularx wird ja gerade die neue Spalte X einführt und somit erwartet, die du auch definierst, aber dann im Beispiel nicht einbindest. Wenn du \begin{tabularx}{5cm}{|X|X|} wählst, läufst (logischerweise) wieder.
edico

mr. pelle
28-02-2005, 23:26
Moin edico,

mein Problem ist, dass ich eine Lösung gefunden habe, die jedoch nicht in der letzten Spalte einer Tabelle funktioniert. Aus diesem Grund erhalte ich bei
...\begin{tabularx}{5cm}{|R|R|}... Fehlermeldungen, und bei
...\begin{tabularx}{5cm}{|R|X|}... keine Fehlermeldungen.
Allerdings ist die letzte Spalte dann ja nicht wunschgemäß formatiert. Aus den Fehlermeldungen kann ich leider nicht darauf zurückschließen, was ich ändern sollte (There's no line here to end).

Wenn du Zeit und Lust hast, kannst du ja mal die Minimalbeispiele durchlaufen lassen. Vielleicht wird es dann deutlicher, worum es mir geht.

MfG

Mr. Pelle

edico
01-03-2005, 08:15
... mir ist unklar, was dein Ziel ist.
Die Fehlermeldung «theres no line end» entsteht, weil du mit \tabularnewline statt \\ abschliessen musst.
edico

mr. pelle
01-03-2005, 18:20
Moin edico,

ich habe in einer Tabelle nur Formeln stehen, die ich allesamt gerne zentrieren möchte. Um mir ein wenig Schreibarbeit zu sparen, habe ich mir die neue Spaltendefinition erstellt. So viel zur Motivation.

In der Tat funktioniert es mit \tabularnewline. Für diesen Tip schonmal vielen Dank. Nun aber die Frage, warum es nicht mit \\ funktioniert. An tabularx kann es ja nich liegen, schließlich kann ich eine X-Zeile auch mit \\ beenden.

MfG

Mr. Pelle

edico
01-03-2005, 23:37
Tut mir auch leid, dass ich die Erklärung nicht gleich mitgeliefert habe ... aber ich hatte sie in meinem sample nicht (gleich) gefunden und konnte mich nur erinnern, dass es in bestimmten Fällen der Umdefinition Probleme mit \\ gibt; hier die Erklärung von David Carlisle:
...
The problem here is that your >{\raggedright}X redefines \\ to mean the
ragged-right-new-line and so it no longer means end-of-tabular-row
within the X column. This does not matter except the cases where the
X column is the last column (as in the other cases you don't need the
tabular version of \\ in the X column).

This problem is mentioned in The LaTeX companion, but since that time
a better fix has been added to latex than the fix suggested in that
book. As explained in usrguide.tex you can use \tabularnewline instead
of \\ to end your table rows and that will always have the correct
meaning, even if \\ has changed meaning locally.
...
edico

mr. pelle
02-03-2005, 15:08
Moin edico,

vielen Dank für deine Antwort. Jetzt ist mir auch klar, warum der Fehler entstanden ist.

MfG
Mr. Pelle

mr. pelle
07-03-2005, 18:33
Nur zur Info: Ich bin noch auf eine andere Möglichkeit gestoßen, die Umdefinition wieder rückgängig zu machen. Und zwar mit dem Befehl \arraybackslash, der beim tabularx.sty mit dabei ist.

\newcolumntype{R}{>{\centering\arraybackslash $}X<{$}}

edico
07-03-2005, 20:54
Ja, klar! Sehr schön! Findet man auch in vielen Macros.
edico