Vertikale und horizontale Ausrichtung von Zellen in einer Tabelle mit darin enthaltenen Gesamtstrukturen

Vertikale und horizontale Ausrichtung von Zellen in einer Tabelle mit darin enthaltenen Gesamtstrukturen

Hier ist ein MWE, in dem ich eine Tabelle mit einer Zeile reinem Text, einer weiteren Zeile mit Tikz-Knoten und noch einer weiteren mit Waldzellen erstelle. Ich versuche, die Option [t] der Tabellenumgebung zu verwenden, um die Zellen oben auszurichten, und den Spaltenbezeichner c, um die Zellen vertikal zu zentrieren.

\documentclass{standalone}
\usepackage{forest}
\begin{document}
\forestset{c/.style={circle,draw},t/.style={},}
\def\bb{ \draw[fill=blue,opacity=0.2] (current bounding box.south west) rectangle (current bounding box.north east);}
\def\xx#1#2{
  #1
  \begin{tikzpicture}
    \node [fill=green,opacity=0.2,draw,minimum width=#1cm, minimum height=#2cm] {#1#2};
  \end{tikzpicture}
  #2
}
\begin{tabular}[t]{|c|c|c|c|c|c|}
  $(ab.cd)$                                                           &
  $(abcd.\bot)$                                                       &
  $(ab.(c.d))$                                                        &
  $((a.b).(c.d))$                                                     &
  $(a.(b.(c.d)))$                                                     &
  $(((a.b).c).d)$                                                       \\
  \hline
  \xx23                                                               &
  \xx34                                                               &
  \xx24                                                               &
  \xx14                                                               &
  \xx41                                                               &
  \xx43                                                                 \\
  \hline
  \scriptsize
  \Forest{for tree [{},c[$ab$,t][$cd$,t]]\bb}                         &
  \scriptsize
  \Forest{for tree [{},c[$abcd$,t][$\bot$,t]]\bb}                     &
  \scriptsize
  \Forest{for tree [{},c[$ab$,t][{},c[$c$,t][$d$,t]]]\bb}             &
  \scriptsize
  \Forest{for tree [{},c[{},c[$a$,t][$b$,t]][{},c[$c$,t][$d$,t]]]\bb} &
  \scriptsize
  \Forest{for tree [{},c [{},c [{},c[a,t][b,t]] [c,t]] [d,t] ] \bb}   &
  \scriptsize
  \Forest{for tree [{},c [{}, c [{}, c
        [a,t][b,t]] [c,t] ] [d,t]] \bb}
\end{tabular}
\end{document}

Die Ausgabe zeigt jedoch, dass dies nicht funktioniert

Bildbeschreibung hier eingeben

Antwort1

Es gibt zwei Probleme.

  1. Zunächst einmal gibt es einen Fehler in pgf, der falsche Leerzeichen einfügt. Eine temporäre Lösung für diesen Fehler wurde bereitgestellt.Hier. In zukünftigen Versionen von pgf wird dieser Fehler behoben.
  2. Zweitens werden die Zellen in der Tabelle bei [t]in \begin{tabular}[t]{...}nicht oben ausgerichtet. Ich habe einen Spaltentyp hinzugefügt , der dies mithilfe von und Ttut .collcelladjustbox

Code:

\documentclass{standalone}
\usepackage{forest}
\usepackage{adjustbox}
\usepackage{collcell}
\makeatletter
% remove the stray space https://tex.stackexchange.com/a/513549
\patchcmd{\pgfutilsolvetwotwoleqfloat}
  { \noexpand\pgfmathfloatdivide@}
  {\noexpand\pgfmathfloatdivide@}
  {}{}
\makeatother
\newcommand{\TopAlign}[1]{\adjustbox{valign=t}{#1}}
\newcolumntype{T}{>{\collectcell{\TopAlign}}c<{\endcollectcell}}

\begin{document}
\forestset{c/.style={circle,draw},t/.style={},}
\def\bb{ \draw[fill=blue,opacity=0.2] (current bounding box.south west) rectangle (current bounding box.north east);}
\def\xx#1#2{
  #1
  \begin{tikzpicture}
    \node [fill=green,opacity=0.2,draw,minimum width=#1cm, minimum height=#2cm] {#1#2};
  \end{tikzpicture}
  #2
}
\begin{tabular}{*{6}{|T}|}
  $(ab.cd)$                                                           &
  $(abcd.\bot)$                                                       &
  $(ab.(c.d))$                                                        &
  $((a.b).(c.d))$                                                     &
  $(a.(b.(c.d)))$                                                     &
  $(((a.b).c).d)$                                                       \\
  \hline
  \xx23                                         &
  \xx34                                                              &
  \xx24                                                             &
  \xx14                                                              &
  \xx41                                                              &
  \xx43                                                                \\
  \hline
  \scriptsize
  \Forest{for tree [{},c[$ab$,t][$cd$,t]]\bb}                         &
  \scriptsize
  \Forest{for tree [{},c[$abcd$,t][$\bot$,t]]\bb}                     &
  \scriptsize
  \Forest{for tree [{},c[$ab$,t][{},c[$c$,t][$d$,t]]]\bb}             &
  \scriptsize
  \Forest{for tree [{},c[{},c[$a$,t][$b$,t]][{},c[$c$,t][$d$,t]]]\bb} &
  \scriptsize
  \Forest{for tree [{},c [{},c [{},c[a,t][b,t]] [c,t]] [d,t] ] \bb}   &
  \scriptsize
  \Forest{for tree [{},c [{}, c [{}, c
        [a,t][b,t]] [c,t] ] [d,t]] \bb}
\end{tabular}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen