
Ich habe schon ein wenig im Forum gesucht, konnte aber keine zufriedenstellende Lösung für mein Problem finden.
Ich möchte eine Tabelle erstellen, in der ich zwei verschiedene Situationen vergleiche, und eine Zeile des Vergleichs ist ein Array/eine Matrix. Ich möchte, dass der Abstand für die Tabelle etwas größer ist, da alles zu eng ist. Daher verwende ich eine Änderung \arraystretch
innerhalb von Gruppen:
\begin{center}
\renewcommand*{\arraystretch}{1.5}
\begin{tabular}{|c|c|}
\hline
Problem (1) & Problem (2)\\
\hline
\begingroup
\renewcommand*{\arraystretch}{1}
$\left\{
\begin{array}{c}
G_1 = 1\\
G_2 = 0
\end{array}
\right.$
\endgroup
&
\begingroup
\renewcommand*{\arraystretch}{1}
$\left\{
\begin{array}{c}
G_1 = 0\\
G_2 = 1
\end{array}
\right.$
\endgroup
\\
\hline
displacement $u_1(x,y) = \chi_1(y)$ & displacement $u_1(x,y) = \chi_2(y)$\\
\hline
\end{tabular}
\end{center}
Es funktioniert gut für die Textzeilen, aber mit dem Array/der Matrix darin fügt es oben und unten keinen zusätzlichen Platz hinzu, was nicht das ist, was ich erwartet habe. Wenn Sie den \arraystretch
Wert 3
jedoch vergrößern, sehen Sie oben in den Arrays einen Platz, und wenn Sie ihn dann vergrößern, 4
sehen Sie den Platz unten.
Hat jemand eine Idee, wie man LaTeX verständlich macht, dass das Array von Leerzeichen umgeben sein soll?
Zusatzfrage: Bei einer großen Zahl für \arraystretch
(über 4
) erscheint die vertikale Ausrichtung nicht zentriert, sondern etwas weiter unten. Gibt es da eine andere Möglichkeit als tabularx
, Minipages etc. zu verwenden?
Antwort1
Sie müssen den Wert von nicht wirklich ändern \arraystretch
. Das makecell
Paket kann Zeilen vertikal auffüllen. Darüber hinaus können Sie mit dem gleichnamigen Befehl Linien mit variabler Dicke und Zeilenumbrüche innerhalb von Zellen erstellen. Für die Formeln ist es einfacher, die cases
Umgebung zu verwenden.
Ich stimme @Micos Kommentaren zur Verwendung des Booktabs-Regelbefehls und keinen vertikalen Regeln zu. Sollten Sie vertikale Regeln verwenden, zeige ich Ihnen, wie Sie solche Tabellen (nach meinem Geschmack!) verbessern können.
\documentclass{article}
\usepackage{array, booktabs}
\usepackage{makecell}
\setcellgapes{3pt}
\usepackage{mathtools}
\begin{document}
\begin{center}
\makegapedcells
\begin{tabular}{!{\vrule width 1pt}c|c!{\vrule width 1pt}}
\Xhline{1pt}
Problem (1) & Problem (2) \\
\hline
$ \begin{cases}
G_1 = 1\\
G_2 = 0
\end{cases}$
&
$ \begin{cases}
G_1 = 0\\
G_2 = 1
\end{cases} $
\\
\hline
\makecell{displacement \\$u_1(x,y) = \chi_1(y)$} & \makecell{displacement \\ $u_1(x,y) = \chi_2(y)$}\\
\Xhline{1pt}
\end{tabular}
\end{center}
\vskip1cm
\begin{center}
\makegapedcells
\begin{tabular}{@{}cc@{}}
\toprule
Problem (1) & Problem (2) \\
\cmidrule(lr){1-1}\cmidrule(lr){2-2}
$ \begin{dcases}
G_1 = 1\\
G_2 = 0
\end{dcases}$
&
$ \begin{cases}
G_1 = 0\\
G_2 = 1
\end{cases} $
\\
\addlinespace
displacement $u_1(x,y) = \chi_1(y)$ & displacement $u_1(x,y) = \chi_2(y)$ \\
\bottomrule
\end{tabular}
\end{center}
\end{document}
Antwort2
Anstatt Zeit damit zu verbringen, den Abstand über und unter verschiedenen \hline
s herauszufinden, können Sie einfach die inneren horizontalen Linien (und alle vertikalen Linien) entfernen und die Linienzeichnungsmakros desBuchtabsPaket zum Zeichnen der oberen und unteren Linien. Natürlich können Sie die Anleitung trotzdem verwenden, \renewcommand{\arraystretch}{1.5}
wenn Sie möchten.
Ich hoffe, Sie stimmen mir zu, dass dieses Layoutmindestensgenauso lesbar wie die mit viel mehr vertikalen und horizontalen Linien ...
\documentclass{article}
\usepackage{amsmath} % for 'cases' environment
\usepackage{booktabs} % for \toprule, \bottomrule, and \addlinespace macros
\begin{document}
\begin{center}
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{@{}cc@{}}
\toprule
Problem (1) & Problem (2) \\ \addlinespace
$\begin{cases}
G_1 = 1\\G_2 = 0
\end{cases}$
&
$\begin{cases}
G_1 = 0\\G_2 = 1
\end{cases}$ \\ \addlinespace
displacement $u_1(x,y) = \chi_1(y)$ &
displacement $u_1(x,y) = \chi_2(y)$ \\
\bottomrule
\end{tabular}
\end{center}
\end{document}