Hallo,

Hat ein Array Stretch Befehl für die ganze Tabelle Gültigkeit?

Open in Online-Editor
\renewcommand{\arraystretch}{2}

Ich finde leider keine Möglichkeit dies nur für eine bestimmte Anzahl von Zeilen zu verwenden.

Was wäre wenn ich nur für die ersten 5 Zeilen einen Array Stretch brauchen sollte?

Hochachtungsvoll, Stefan

(Ich bin neu ich hoffe trotzdem ihr seid so lieb und helft mir lol)

gefragt 20 Feb '15, 13:09

Steff1's gravatar image

Steff1
2112
Akzeptiert-Rate: 0%

bearbeitet 20 Feb '15, 17:18

saputello's gravatar image

saputello
10.8k103963

Willkommen auf TeXwelt! Könntest Du bitte zukünftig ein Minimalbeispiel einfügen? Also ein möglichst kurzes, aber komplettes Dokument, von \documentclass{...} bis zu \end{document}, was das Problem zeigt. Das vereinfacht die Bearbeitung erheblich und ist meist eine Garantie für eine Lösung.

Außerdem sei darauf hingewiesen, dass wir hier Markdown-Syntax für die Textformatierung verwenden. Ich habe das schon gestern einmal in Deiner Frage umgesetzt, soweit ich die gewünschte Formatierung erahnen konnte.

(21 Feb '15, 14:06) saputello

\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:

Open in Online-Editor
\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

Permanenter link

beantwortet 20 Feb '15, 16:46

Henri's gravatar image

Henri
14.6k53340
Akzeptiert-Rate: 46%

bearbeitet 20 Feb '15, 19:48

@Henri hat das in seiner Antwort schon sehr schön analysiert und ausgeführt. Ich würde jedoch eine leicht abweichende Definition empfehlen:

Open in Online-Editor
\documentclass{article}
\usepackage{siunitx,booktabs,chemmacros}

\makeatletter
\newcommand\setarraystretch[1]{%
  \noalign{\ifnum0=`}\fi
  \gdef\arraystretch{#1}%
  \global\setbox\@arstrutbox\hbox{%
    \vrule \@height\arraystretch\ht\strutbox%
           \@depth\arraystretch \dp\strutbox%
           \@width\z@}%
  \ifnum0=`{\fi}%
}
\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}

Durch diese Form der Definition wird \setarraystretch nicht zu einem Teil der ersten Spalte, sondern wie \hline oder \cline quasi zwischen den Zeilen angewendet. Dadurch ist auch kein % mehr nach \setarraystretch{2} erforderlich, wenn in der ersten Spalte etwas steht (und diese beispielsweise linksbündig ausgerichtet ist).

Permanenter link

beantwortet 21 Feb '15, 14:05

saputello's gravatar image

saputello
10.8k103963
Akzeptiert-Rate: 51%

+1 Man kann bei meiner Definition auch \ignorespaces anhängen und sich die Prozente sparen.

(21 Feb '15, 17:00) Henri
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×9

gestellte Frage: 20 Feb '15, 13:09

Frage wurde gesehen: 8,739 Mal

zuletzt geändert: 21 Feb '15, 17:00