Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

20 Feb '15, 19:48

Henri's gravatar image

Henri
15.7k133943

`\arraystretch` ist der Skalierungsfaktor für die Höhe und Tiefe der `\@arstrutbox`. Diese wird am Anfang von `\@array` gesetzt. Wenn man also mitten in einer Tabelle den `\arraystretch` mit dem Resultat ändern möchte, dass die Zellenhöhe beeinflusst wird muss man auch `\@arstrutbox` neu setzen. Da der Inhalt jeder Zelle in einer eigenen Gruppe expandiert wird muss man das ganze noch `\global` machen. Der Einfachheit halber habe ich dazu ein Makro `\setarraystretch` vorbeireitet, das als Argument den neuen `\arraystretch` nimmt. Hier ein Beispiel: \documentclass{article} \usepackage{siunitx,booktabs,chemmacros} \makeatletter \newcommand\setarraystretch[1]{% \gdef\arraystretch{#1}% \global\setbox\@arstrutbox\hbox{% \vrule \@height\arraystretch\ht\strutbox% \@depth\arraystretch \dp\strutbox% \@width\z@}% } \makeatother \begin{document} \sisetup{table-format=1.4} \begin{tabular}{r@{\qquad}SSSSSS[table-format=4.0]} \toprule \setarraystretch{2}% & {$x_l$} & {$x_0$} & {$x_r$} & {$\nu_0$} & {$\Delta \nu$} & {$Q$} \\ \setarraystretch{1}% {Sample} & [\si{\milli\metre}] & [\si{\milli\metre}] & [\si{\milli\metre}] & [\si{\GHz}] & [\si{\kHz}] & [\si{1}] \\ \midrule empty & 7.808 & 7.832 & 7.848 & 9.518 & 5.363 & 1775 \\ \ch{DPPH} & 7.868 & 7.888 & 7.908 & 9.511 & 5.326 & 1786 \\ \ch{CuSO4} & 7.876 & 7.896 & 7.920 & 9.510 & 5.852 & 1625 \\ \ch{Mn^2+} & 7.808 & 7.832 & 7.852 & 9.518 & 5.898 & 1614 \\ \bottomrule \end{tabular} \end{document} > ![alt text][1] [1]: http://texwelt.de/wissen/upfiles/u_174.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

20 Feb '15, 16:46

Henri's gravatar image

Henri
15.7k133943

`\arraystretch` ist der Skalierungsfaktor für die Höhe und Tiefe der `\@arstrutbox`. Diese wird am Anfang von `\@array` gesetzt. Wenn man also mitten in einer Tabelle den `\arraystretch` mit dem Resultat ändern möchte, dass die Zellenhöhe beeinflusst wird muss man auch `\@arstrutbox` neu setzen. Da der Inhalt jeder Zelle in einer eigenen Gruppe expandiert wird muss man das ganze noch `\global` machen. Der Einfachheit halber habe ich dazu ein Makro `\setarraystretch` vorbeireitet, das als Argument den neuen `\arraystretch` nimmt. Hier ein Beispiel: \documentclass{article} \usepackage{siunitx,booktabs,chemmacros} \makeatletter \newcommand\setarraystretch[1]{% \gdef\arraystretch{#1}% \global\setbox\@arstrutbox\hbox{% \vrule \@height\arraystretch\ht\strutbox% \@depth\arraystretch \dp\strutbox% \@width\z@}% } \makeatother \begin{document} \sisetup{table-format=1.4} \begin{tabular}{r@{\qquad}SSSSSS[table-format=4.0]} \toprule \setarraystretch{2}% & {$x_l$} & {$x_0$} & {$x_r$} & {$\nu_0$} & {$\Delta \nu$} & {$Q$} \\ \setarraystretch{1}% {Sample} & [\si{\milli\metre}] & [\si{\milli\metre}] & [\si{\milli\metre}] & [\si{\GHz}] & [\si{\kHz}] & [\si{1}] \\ \midrule empty & 7.808 & 7.832 & 7.848 & 9.518 & 5.363 & 1775 \\ \ch{DPPH} & 7.868 & 7.888 & 7.908 & 9.511 & 5.326 & 1786 \\ \ch{CuSO4} & 7.876 & 7.896 & 7.920 & 9.510 & 5.852 & 1625 \\ \ch{Mn^2+} & 7.808 & 7.832 & 7.852 & 9.518 & 5.898 & 1614 \\ \bottomrule \end{tabular} \end{document} > ![alt text][1] [1]: http://texwelt.de/wissen/upfiles/u_174.png