我对 LaTeX 还很陌生,遇到了一个问题,Google 似乎无法帮助我解决。基本上,我需要一些帮助才能完成一些比我目前的技能所能处理的更复杂的事情。
基本上,我想要做的是这样的:
我目前可以使用以下代码获得上图右侧所示的树:
\documentclass{article}
\usepackage{tikz-qtree}
\usepackage{upgreek}
\begin{document}
\begin{tikzpicture}
\Tree [ [ \node(onset){r}; ] [ \node(mora1){e}; ].$\upmu$ [ ].\node(mora2){$\upmu$}; ].$\upsigma$
\draw (mora1) -- (mora2);
\end{tikzpicture}
\end{document}
但是,这是我所知道的最好的办法。我还需要:
- 如何绘制曲线而不是直线?
- 最重要的是,我怎样才能使两个父节点共享一个子节点,而又不像现在这样看起来像垃圾?
我意识到这些问题可能比较幼稚,但请理解我确实尝试过在 Google 上搜索我的问题,但就是找不到我需要的信息。完整的 TikZ 手册超出了我的理解范围,而且手册中tikz-qtree
没有涵盖我的情况。
非常感谢您能给我的任何指点。
答案1
正如安德鲁所说,你画的这种自分段表示并不是真正的树。如果你可能会画很多这样的树,你可能需要研究一下非常强大(但也非常复杂)的pst-asr
包裹。
同时,这里有一种混合方法,tikz-qtree
但使用 TikZ 的范围机制手动定位分段层。
\documentclass{article}
\usepackage{tikz-qtree}
\usetikzlibrary{positioning}
\usepackage{upgreek}
\begin{document}
\begin{tikzpicture}[level 1/.style={sibling distance=.75cm}]
\Tree [.\node (syll) {$\upsigma$}; [.\node(m1) {$\upmu$}; ] [.\node (m2) {$\upmu$}; ] ]
\begin{scope}[yshift=-2cm]
\node (e) {e};
\node (r) [left=1cm of e] {r};
\draw (e.north) -- (m1);
\draw (e.north) -- (m2);
\draw (r.north) edge[out=90,in=180] (syll.south);
\end{scope}
\end{tikzpicture}
\end{document}