PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabularx \small



B-ellanna
17-06-2010, 16:43
Hi ihr Lieben!
Ich möchte gerne wie hier im Beispiel die Tabellenschriftgröße verändern:


\documentclass[a4paper]{scrbook}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{tabularx, booktabs}

\newenvironment{tabularsmall}[2][c]{\small %oder \footnotesize, \scriptsize, \tiny, \large ...
\begin{tabular}[#1]{#2}}{\end{tabular}\normalsize}

\begin{document}

\begin{table} [hbt]
\begin{tabularsmall}{p{.25\textwidth} p{.25\textwidth}}
\toprule
römisch & arabisch\\
\midrule
I & 1\\
II & 2\\
\bottomrule
\end{tabularsmall}
\end{table}

\end{document}


Nun würde ich das auch gerne für tabularx Umgebungen hinbiegen, das geht aber leider nicht, und ich kann mir nicht erklären warum. Es kompiliert einfach nciht wenn ich den Befehl umändere... Und gibt Fehler ala Missing number treated as zero und so was:


\documentclass[a4paper]{scrbook}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{tabularx, booktabs}

\newenvironment{tabularxsmall}[2][c]{\huge %oder \footnotesize, \scriptsize, \tiny, \large ...
\begin{tabularx}[#1]{#2}}{\end{tabularx}\normalsize}

\begin{document}

\begin{table} [hbt]
\begin{tabularxsmall}{\textwidth}{X p{.25\textwidth}}
\toprule
römisch & arabisch\\
\midrule
I & 1\\
II & 2\\
\bottomrule
\end{tabularxsmall}
\end{table}

\end{document}

Ich wäre dankbar wenn mir jemand auf die Sprünge hilft.
Geht es eventuell auch global mit einem \renewcommand oder so für alle table Umgebungen?

Liebe Grüße
B-ellanna

mechanicus
17-06-2010, 17:02
Hi,


\documentclass[a4paper]{scrbook}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{tabularx, booktabs}

\def\tabularxsmall#1#2{\huge\tabularx{#1}{#2}}
\def\endtabularxsmall{\endtabularx\normalsize}

\begin{document}

\begin{table} [hbt]
\begin{tabularxsmall}{\textwidth}{X p{.25\textwidth}}
\toprule
römisch & arabisch\\
\midrule
I & 1\\
II & 2\\
\bottomrule
\end{tabularxsmall}
\end{table}

\end{document}

Gruß
Marco

B-ellanna
17-06-2010, 17:45
Danke Marco!

Kann mir bitte noch jemand erklären warum das so funktioniert und das andere zuvor nicht?
Ich will ja nicht nächstes Mal wieder fragen müssen, sondern dazulernen.

Habt Dank!
B-ellanna

Xenara
18-06-2010, 07:04
Die Erklärung findet sich in der Doku (http://www-control.eng.cam.ac.uk/~pcr20/latex/tabularx.pdf)auf Seite 4:


This mechanism of grabbing an environment body does have the disadvantage
(shared with the AMS alignment environments) that you can not make extension
environments by code such as
\newenvironment{foo}{\begin{tabularx}{XX}}{\end{ta bularx}}
as the code is looking for a literal string \end{tabularx} to stop scanning. Since
version 2.02, one may avoid this problem by using \tabularx and \endtabularx
directly in the definition:
\newenvironment{foo}{\tabularx{XX}}{\endtabularx}


So gehts übrigens auch mit newenvironment:



\documentclass[a4paper]{scrbook}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{tabularx, booktabs}

\newenvironment{tabularxsmall}[2]{\small %oder \footnotesize, \scriptsize, \tiny, \large ...
\tabularx{#1}{#2}}{\endtabularx\normalsize}

\begin{document}

\begin{table} [hbt]
\begin{tabularxsmall}{\textwidth}{XX}
\toprule
römisch & arabisch\\
\midrule
I & 1\\
II & 2\\
\bottomrule
\end{tabularxsmall}
\end{table}

\end{document}

rais
18-06-2010, 11:29
Moin moin,
als kleiner Zusatz vllt




\newenvironment{tabularxsmall}[2][c]{\huge %oder \footnotesize, \scriptsize, \tiny, \large ...

Du definierst hier eine Umgebung mit zwei Parametern, von denen der Erste optional ist ...



\begin{tabularxsmall}{\textwidth}{X p{.25\textwidth}}


... rufst die Umgebung aber auf, als hättest Du sie ohne optionales Argument definiert. Was hier passieren dürfte: {\textwidth} geht als zweites Argument an tabularxsmall -- ein optionales Argument wurde ja nicht übergeben -- und die Spaltendeklaration `{X p{.25\textwidth}}' fällt untern Teppich.:p

BTW: den \normalsize am Ende der tabularxsmall-Umgebung kannst Du auch weglassen, die Schriftgrößenänderung sollte sich eh nur lokal auf eben diese Umgebung auswirken.;)

MfG

B-ellanna
18-06-2010, 15:52
Nun bin ich schlauer!
Schönes Wochenende!
B-ellanna