我正在使用 linguex、parsetree 和 avm 包来制作一个包含两个短语圣诞树的表格的示例。我希望表格与示例编号在同一行开始。但是当我开始表格环境而不添加换行符时,树就不会生成。
右线,树木不起作用
线路错误,树木有效
我该怎么做才能使表格与示例从同一行开始?
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[]{linguex}
\usepackage[]{parsetree}
\usepackage[]{avm}
\begin{document}
\ex.
\begin{tabular}[t]{cc}
\begin{parsetree}
(
.\begin{avm}
\[
X \\
Y
\]
\end{avm}.
.\begin{avm}
\[
X \\
Y
\]
\end{avm}.
.\begin{avm}
\[
X \\
Y
\]
\end{avm}.
)
\end{parsetree}
&
\begin{parsetree}
(
.\begin{avm}
\[
X \\
Y
\]
\end{avm}.
.\begin{avm}
\[
X \\
Y
\]
\end{avm}.
.\begin{avm}
\[
X \\
Y
\]
\end{avm}.
)
\end{parsetree}
\end{tabular}
\end{document}
答案1
这不是对你问题的直接回答,但可能是一个建议。切换到更现代的树绘制包可能会对你有益。两个流行的 Ti钾基于 Z 的包有tikz-qtree
和forest
,但也有pstricks
其他选项。Ti 的钾基于Z的选项,Forest是最强大和最灵活的。
avm
这是一个基于 Forest 的解决方案,它使用了在中定义的样式的修改版本我之前的回答到qtree-使用 avm 减少多行节点标签中行之间的间距和一种变体avm only
。
avm only
仅适用于每个节点都只是一个avm
环境的树。
avm
适用于某些节点不包含avm
环境或在环境之前包含内容的树avm
。在这种情况下,avm
环境应以 为前缀:
,任何先前的内容应以 为前缀:
。
\documentclass{article}
\usepackage[linguistics]{forest}
\usepackage{avm,array,linguex}
\forestset{%
avm/.style={%
TeX={\setlength\extrarowheight{-10pt}},
before typesetting nodes={%
for tree={%
split option={content}{:}{content,make avm},
},
},
},
avm only/.style={%
TeX={\setlength\extrarowheight{-10pt}},
before typesetting nodes={%
for tree={%
make pure avm,
},
},
},
make avm/.style={%
if content={}{
content=#1,
make pure avm,
}{
content+={%
\\\begin{avm}#1\end{avm}
},
},
},
make pure avm/.style={%
content/.wrap value={%
\begin{avm}##1\end{avm}
},
plain content,
},
}
\begin{document}
\ex.
\begin{forest}
avm,
[:\[X\\Y\]
[:\[X\\Y\]
]
[:\[X\\Y\]
]
]
\end{forest}
\begin{forest}
avm only,
[\[X\\Y\]
[\[X\\Y\]
]
[\[X\\Y\]
]
]
\end{forest}
\end{document}
答案2
我发现通过保留 parsetree 并用 gb4e 替换 linguex 也可以获得正确的结果。