![表格中的 synttree:其他列的垂直对齐](https://linux22.com/image/234538/%E8%A1%A8%E6%A0%BC%E4%B8%AD%E7%9A%84%20synttree%EF%BC%9A%E5%85%B6%E4%BB%96%E5%88%97%E7%9A%84%E5%9E%82%E7%9B%B4%E5%AF%B9%E9%BD%90.png)
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}