Linhas tachadas em uma árvore fonológica

Linhas tachadas em uma árvore fonológica

Estou me perguntando como posso adicionar algumas linhas tachadas em uma árvore fonológica. Aqui está o meu código:

\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}

Isto é o que produz:

insira a descrição da imagem aqui

Vi em um artigo uma árvore fonológica semelhante com algumas linhas tachadas que simbolizavam que certas características acabaram não aparecendo na realização fonética da palavra. Parecia assim:

insira a descrição da imagem aqui

Eles estão acima do “b” e do “i” nessa imagem.

Existe algum código assim que eu possa colocar na minha árvore fonológica? Gostaria de adicioná-lo à linha entre o sigma e o "t" e entre esse mesmo sigma e o mu logo abaixo dele.

Qualquer ajuda é muito apreciada.

Obrigado!

Responder1

EDIT: Seguindo a sugestão de Alan Munn, um \tinysinal de igual parece melhor e reduz a necessidade de mudança de nó.


Você pode colocar um nó com o símbolo =nas bordas da árvore para simular um tachado.

Para as linhas manuais (por exemplo, entre o nó xe a) você pode adicionar um nó na posição intermediária na instrução de desenho de linha. Para as linhas automáticas (por exemplo, entre σ e μ), você pode adicionar um nó separado no ponto intermediário. Observe que você deve dar um nome aos nós da árvore para poder calcular a posição intermediária. Observe também que você precisa da calctikzlibrary.

Se você quiser que o tachado seja girado (como no exemplo), você pode adicionar rotate=ao nó. Você também pode calcular automaticamente o ângulo usando \pgfmathanglebetweenpointsse não quiser estimar manualmente o valor. No entanto, alguns ajustes manuais ainda podem ser necessários. IMHO, um tachado não girado também parece bom.

Você pode mudar a posição vertical do tachado alterando a proporção para, por exemplo, 0.6, e a posição horizontal adicionando uma pequena quantidade à coordenada, por exemplo, +(0.05,0)(ou mudar ambos com um componente y diferente de zero).

MWE:

\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}

Resultado:

insira a descrição da imagem aqui

Responder2

Aqui está uma abordagem diferente para o problema que requer menos intervenção manual e possui uma sintaxe intuitiva. Também permite usá-lo como um \edgeestilo em um ramo existente da árvore sem especificar nenhum nó.

\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}

saída de código

Uma forestsolução

O forestpacote fornece uma maneira mais simples de adicionar nós nomeados às árvores, então, pessoalmente, eu usaria forestpara fazer esse tipo de árvore. O mesmo delinkestilo também pode ser usado com ele. Aqui está o mesmo código usando forest. Adicionei código para formatar automaticamente a camada segmental usando tipa(para que você não precise envolvê-los \textipa) e então cada segmento estará na mesma fonte. Para que isso funcione, se um nó mora não tiver dependência segmental direta (ou seja, estiver vinculado a um segmento que já é dominado por um nó mora), será necessário declarar explicitamente que o nó está na moracamada.

\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}

saída do código florestal

informação relacionada