
Ich versuche, eine Tabelle vertikal zu zentrieren, aber zentriert auf eine bestimmte Komponente. Ich hoffe, dass mir das auf allgemeine Weise gelingt, da ich das LaTeX algorithmisch generiere.
Hier ist ein MWE:
\documentclass[a4paper, 10pt]{scrartcl}
\usepackage{soul}
\usepackage[cm]{fullpage}
\usepackage{array}
\usepackage{tikz}
\begin{document}
\thispagestyle{empty}
\begin{center}
% Table for row 1, which has 2 columns.
%\begin{table}[h]
\begin{tabular}{>{\centering\arraybackslash}m{7cm}l>{\centering\arraybackslash}m{4cm}}
% SHAPE: rect
\parbox[c][4.4cm][c]{7cm}{\begin{tikzpicture}
% *** RECTANGLE FOR ROW 1, COLUMN 1 *******
\draw (0cm,0cm) -- (0cm,4cm) -- (7cm,4cm) -- (7cm,0cm) -- cycle;
\end{tikzpicture}
\center first}
& \hspace{1cm} & % SHAPE: rect
\parbox[c][3.4cm][c]{4cm}{\begin{tikzpicture}
% *** RECTANGLE FOR ROW 1, COLUMN 2 *******
\draw (0cm,0cm) -- (0cm,3cm) -- (4cm,3cm) -- (4cm,0cm) -- cycle;
\end{tikzpicture}
\center second}
\\
\end{tabular}
\end{center}
\end{document}
was Folgendes erzeugt:
Die Absicht dahinter war, es vertikal zu zentrieren (was aber anscheinend nicht perfekt funktioniert hat, da es ein Problem mit dem Begrenzungsrahmen gab, nehme ich an).
Was ich jedoch wirklich möchte, ist, die Tikz-Boxen vertikal auszurichtenihreZentren, aber der Text hängt immer noch direkt unter der Box, wie im obigen Diagramm. Um es klarzustellen: Ich möchte, dass die Boxen wie folgt an ihren vertikalen Mitten ausgerichtet sind (die gepunktete Linie dient nur als Orientierung):
Antwort1
So was:
\documentclass[a4paper, 10pt]{scrartcl}
\usepackage{soul}
\usepackage[cm]{fullpage}
\usepackage{array}
\usepackage{tikz}
\begin{document}
\thispagestyle{empty}
\begin{center}
% Table for row 1, which has 2 columns.
\begin{tabular}{>{\centering\arraybackslash}m{7cm}l>{\centering\arraybackslash}m{4cm}}
% SHAPE: rect
\begin{tikzpicture}
% *** RECTANGLE FOR ROW 1, COLUMN 1 *******
\draw (0,0) rectangle (7,4);
\draw [red,dotted] (0,2) -- (7,2);
\end{tikzpicture}\begin{center}
first
\end{center}
& \hspace{1cm} & % SHAPE: rect
\begin{tikzpicture}
% *** RECTANGLE FOR ROW 1, COLUMN 2 *******
\draw (0,0) rectangle (4,3);
\draw [red,dotted] (0,1.5) -- (4,1.5);
\end{tikzpicture}\begin{center}
second
\end{center}\\
\end{tabular}
\end{center}
\end{document}
Aktualisieren:
>{\centering\arraybackslash}
Ich sollte das vorher erwähnen. Sie brauchen das vor dem m
Spaltenspezifizierer eigentlich nicht . Der m
Spaltenspezifizierer zentriert standardmäßig jeden Eintrag vertikal und horizontal innerhalb der Zelle im Verhältnis zum Rest der Zeile. Wenn Sie also nur die tikz
Bilder haben, werden sie immer so ausgerichtet, als wären sie in der Zelle zentriert (sowohl horizontal als auch vertikal). Der Text unter dem Bild kann jedoch Probleme verursachen. Wenn der Text verschiedene Zeilen einnimmt, weil der gesamte Inhalt vertikal zentriert ist, wird das Bild versetzt. Um das Bild wieder zentriert auszurichten, müssen Sie den Text darunter in die gleichen Zeilen einordnen (z. B. eine leere Zeile erstellen). Hier ist ein Beispiel:
\documentclass[a4paper, 10pt]{scrartcl}
\usepackage{soul}
\usepackage[cm]{fullpage}
\usepackage{array}
\usepackage{tikz}
\begin{document}
\thispagestyle{empty}
\begin{center}
% Table for row 1, which has 2 columns.
\begin{tabular}{|m{7cm}|l|m{4cm}|}
% SHAPE: rect
\begin{tikzpicture}
% *** RECTANGLE FOR ROW 1, COLUMN 1 *******
\draw (0,0) rectangle (7,4);
\draw [red,dotted] (0,2) -- (7,2);
\end{tikzpicture}\begin{center}
first
\end{center}
& \hspace{1cm} & % SHAPE: rect
\begin{tikzpicture}
% *** RECTANGLE FOR ROW 1, COLUMN 2 *******
\draw (0,0) rectangle (4,3);
\draw [red,dotted] (0,1.5) -- (4,1.5);
\end{tikzpicture}\begin{center}
second picture have long text under the picture
\end{center}\\
\end{tabular}
\end{center}
The second example centered the picure again by putting a empty line below first.
\begin{center}
%Table for row 1, which has 2 columns.
\begin{tabular}{|m{7cm}|l|m{4cm}|}
% SHAPE: rect
\begin{tikzpicture}
% *** RECTANGLE FOR ROW 1, COLUMN 1 *******
\draw (0,0) rectangle (7,4);
\draw [red,dotted] (0,2) -- (7,2);
\end{tikzpicture}\begin{center}
first\\\null%put a manually line break and empty contents for the new line
\end{center}
& \hspace{1cm} & % SHAPE: rect
\begin{tikzpicture}
% *** RECTANGLE FOR ROW 1, COLUMN 2 *******
\draw (0,0) rectangle (4,3);
\draw [red,dotted] (0,1.5) -- (4,1.5);
\end{tikzpicture}\begin{center}
second picture have long text under the picture
\end{center}\\
\end{tabular}
\end{center}
\end{document}
Ausgabe: