表格中的 synttree:其他列的垂直对齐

表格中的 synttree:其他列的垂直对齐

synttree 是一个包,它允许你以简单的方式定义树形图。现在我尝试将这样的树放入表格单元格中,如下所示:

\begin{tabular}{lp{3cm}}
...
My left column &
   \synttree[A [B] [C]]\\
...
\end{tabular}

不幸的是,右列中的使用\synttree会影响左列的垂直对齐。通常,“我的左列”会出现在单元格的顶部,但在我的示例中,它写在单元格的底部:

+----------------+----------+
| My left column |     A    |
|                |    / \   |
|                |   B   C  |
+----------------+----------+

(预期的)

+----------------+----------+
|                |     A    |
|                |    / \   |
| My left column |   B   C  |
+----------------+----------+

(实际的)

我怎样才能使左列中的文本移到单元格的顶部?

答案1

快速解决方法:

\documentclass{article}
\usepackage{synttree}
\usepackage{array}

\begin{document}
\begin{tabular}{l>{\vspace{-.5\baselineskip}}p{3cm}}
My left column & \synttree[A [B] [C]]\\\hline
My left column & \synttree[A [B] [C]]\\
\end{tabular}
\end{document}

在此处输入图片描述

这是精确的解决方案。我们计算树根中字母“A”的额外高度:

\documentclass{article}
\usepackage{synttree}
\usepackage{array}
\makeatletter
\settoheight\@tempdima{A}
\newcolumntype{P}[1]{>{\vspace{-\@tempdima}}p{#1}}
\makeatother
\begin{document}
\begin{tabular}{lP{3cm}}
\hline
My left column & \synttree[A [B] [C]]\\\hline
My left column & My right column\\
\hline
\end{tabular}
\end{document}

在此处输入图片描述


另一种选择是使用qtree包来qtree产生更好的语法树输出。

\documentclass{article}
\usepackage{qtree}
\begin{document}
\qtreecenterfalse % do not center
\begin{tabular}{lp{9cm}}
My left column & \Tree[.A [.B ] [.C ] ] \\
\end{tabular}
\end{document}

在此处输入图片描述

答案2

请按如下方式使用:

\documentclass{article}
\usepackage{synttree}
\usepackage{array}
\newcolumntype{P}[1]{>{\vspace{0pt}}p{#1}}

\begin{document}
\begin{tabular}{P{3cm}P{3cm}}\hline
My left column & \synttree[A [B] [C]]\\\hline
\end{tabular}

\end{document}

在此处输入图片描述

相关内容