为什么我的树在没有换行的情况下就无法工作?

为什么我的树在没有换行的情况下就无法工作?

我正在使用 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-qtreeforest,但也有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}

森林 <code>avm</code> 和 <code>仅 avm</code>

答案2

我发现通过保留 parsetree 并用 gb4e 替换 linguex 也可以获得正确的结果。

相关内容