音韵树上的删除线

音韵树上的删除线

我想知道如何在音韵树上添加一些删除线。这是我的代码:

\documentclass{article}

\usepackage{tikz}
\usepackage{tikz-qtree}
\usepackage{tipa}

\begin{document}

\begin{tikzpicture}[baseline]
\tikzset{frontier/.style={distance from root=85pt}}
\Tree
[.$\omega$
[.$\sigma$ \textipa{P} [.$\mu$ e ] [.$\mu$ \node(a){t}; ] ] [.\node(x){$\sigma$}; [.$\mu$ e ] ]
[.\node(b){$\sigma$};  n [.$\mu$ \node(c){e}; ] [.\node(d){$\mu$};  ] ] [.$\sigma$ h [.$\mu$ \node(f){u};  ] [.\node(e){$\mu$}; ] ] ]


\draw (d.south) -- (c.north);
\draw (e.south) -- (f.north);
\draw (x.south) -- (a.north);

\end{tikzpicture}
\end{document}



\end{document}

其结果如下:

在此处输入图片描述

我在一篇文章中看到过类似的音系树,其中有一些删除线,表示某些特征最终没有出现在单词的语音实现中。它看起来像这样:

在此处输入图片描述

它们位于图像中的“b”和“i”上方。

有没有类似的代码可以放入我的音位树中?我想将其添加到 sigma 和“t”之间的线以及同一 sigma 和其下方的 mu 之间的线。

非常感谢您的帮助。

谢谢你!

答案1

编辑:根据 Alan Munn 的建议,\tiny等号看起来更好,并且减少了节点移动的需要。


您可以将带有符号的节点放置=在树的边缘来模拟删除线。

对于手动线(例如,节点x和之间a),您可以在线条绘制语句中的中间位置添加一个节点。对于自动线(例如,σ和μ之间),您可以在中间点添加一个单独的节点。请注意,您应该为树节点命名,以便能够计算中间位置。还请注意,您需要 tikzlibrary calc

如果您希望删除线旋转(如示例中所示),您可以将其添加rotate=到节点。\pgfmathanglebetweenpoints如果您不想手动估算值,也可以使用自动计算角度。但是,可能仍需要进行一些手动调整。恕我直言,不旋转的删除线看起来也不错。

您可以通过将比例更改为(例如)来移动删除线的垂直位置0.6,并通过在坐标上添加少量来移动水平位置,例如+(0.05,0)(或使用非零 y 分量移动两者)。

梅威瑟:

\documentclass{article}
\usepackage{tikz}
\usepackage{tikz-qtree}
\usepackage{tipa}
\usetikzlibrary{calc}
\begin{document}

\begin{tikzpicture}[baseline]
\tikzset{frontier/.style={distance from root=85pt}}
\Tree
[.$\omega$
[.$\sigma$ \textipa{P} [.$\mu$ e ] [.$\mu$ \node(a){t}; ] ] [.\node(x){$\sigma$}; [.\node(y){$\mu$}; e ] ]
[.\node(b){$\sigma$};  n [.$\mu$ \node(c){e}; ] [.\node(d){$\mu$};  ] ] [.$\sigma$ h [.$\mu$ \node(f){u};  ] [.\node(e){$\mu$}; ] ] ]

% compute angle between nodes
\pgfmathanglebetweenpoints{\pgfpointanchor{x}{center}}{\pgfpointanchor{a}{center}}
\edef\angleXA{\pgfmathresult}

\draw (d.south) -- (c.north);
\draw (e.south) -- (f.north);
\draw (x.south) -- (a.north) node[rotate=60-\angleXA,pos=.5,font=\tiny] (st1) {=};
% alternative, not rotated
%\draw (x.south) -- (a.north) node[pos=.5,font=\tiny] (st1) {=};

% shifted node, normal size
% \node at ($(x)!0.6!(y)+(0.04,0)$) (st2) {=};
% alternative, not shifted, font=\tiny:
\node[font=\tiny] at ($(x)!0.5!(y)$) (st2) {=};

\end{tikzpicture}
\end{document}

结果:

在此处输入图片描述

答案2

这是解决该问题的一种不同方法,它需要的手动干预较少,并且语法直观。它还允许您将其用作\edge树的现有分支上的样式,而无需指定任何节点。

\documentclass{article}
\usepackage{tikz}
\usepackage{tikz-qtree}
\usepackage{tipa}
\usetikzlibrary{decorations,decorations.text}
\tikzset{delink/.style={
    decorate,
    postaction={decorate,
    decoration={text along path,
        text align=center,
        text={|\tiny|=},
        transform={rotate=90}}}}}


\begin{document}

\begin{tikzpicture}[baseline]
\tikzset{frontier/.style={distance from root=85pt}}
\Tree
[.$\omega$ \edge[delink];
[.$\sigma$ \textipa{P}  [.$\mu$ e ] [.$\mu$ \node(a){t}; ] ]
[.\node(x){$\sigma$}; [.\node(y){$\mu$}; e ] ]
[.\node(b){$\sigma$}; \edge[delink];  n [.$\mu$ \node(c){e}; ] [.\node(d){$\mu$};  ] ]
[.$\sigma$ h [.$\mu$ \node(f){u};  ] [.\node(e){$\mu$}; ] ]
]

\draw[delink] (d.south) -- (c.north);
\draw[delink] (e.south) -- (f.north);
\draw[delink] (x.south) -- (a.north);

\end{tikzpicture}
\end{document}

代码输出

一个forest办法

forest包提供了一种更简单的方法来向树中添加命名节点,因此我个人会用它forest来制作这些类型的树。delink也可以使用相同的样式。这是使用 的相同代码forest。我添加了代码以使用 自动格式化分段层tipa(因此您不需要将它们包装在 中\textipa),然后每个段将使用相同的字体。为了使其工作,如果 mora 节点没有直接的分段依赖(即,它链接到已经由 mora 节点主导的段),则需要明确说明该节点位于层上mora

\documentclass{article}
\usepackage{tikz}
\usepackage[linguistics]{forest}
\usepackage{tipa}
\usetikzlibrary{decorations,decorations.text}
\tikzset{delink/.style={
    decorate,
    postaction={decorate,
    decoration={text along path,
        text align=center,
        text={|\tiny|=},
        transform={rotate=90}}}}}

\newcommand{\syl}{$\sigma$}
\newcommand{\mor}{$\mu$}
\newcommand{\word}{$\omega$}
\forestset{prosodic tree/.style=
   {for tree={if n children=0{tier=seg,font=\tipaencoding}{},inner sep=0pt,s sep=1em}}}
\begin{document}
\begin{forest}prosodic tree
[\word 
[\syl,edge=delink [P]  [\mor [e] ] [\mor [t,name=a ] ] ]
[\syl,name=x  [\mor,name=y  [e] ] ]
[\syl,name=b [n] [\mor [e,name=c ] ]  [\mor,name=d,tier=mora ] ]
[\syl [h] [\mor  [u,name=f ] ]  [\mor,name=e,tier=mora ] ]
]
{\draw[delink] (d.south) -- (c.north);
\draw[delink] (e.south) -- (f.north);
\draw[delink] (x.south) -- (a.north);}
\end{forest}
\end{document}

森林代码输出

相关内容