Líneas tachadas en un árbol fonológico

Líneas tachadas en un árbol fonológico

Me pregunto cómo puedo agregar algunas líneas tachadas en un árbol fonológico. Aquí está mi 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}

Esto es lo que produce:

ingrese la descripción de la imagen aquí

Vi en un artículo un árbol fonológico similar con algunas líneas tachadas que simbolizaban que ciertas características no terminaban aflorando en la realización fonética de la palabra. Se veía así:

ingrese la descripción de la imagen aquí

Están encima de la "b" y la "i" en esa imagen.

¿Existe algún código como ese que pueda poner en mi árbol fonológico? Me gustaría agregarlo a la línea entre sigma y "t" y entre esa misma sigma y mu justo debajo.

Se agradece mucho cualquier ayuda.

¡Gracias!

Respuesta1

EDITAR: Siguiendo la sugerencia de Alan Munn, un \tinysigno igual se ve mejor y reduce la necesidad de cambiar de nodo.


Puede colocar un nodo con el símbolo =en los bordes del árbol para simular un tachado.

Para las líneas manuales (por ejemplo, entre el nodo xy a), puede agregar un nodo en la posición intermedia en la declaración del dibujo lineal. Para las líneas automáticas (por ejemplo, entre σ y μ), puede agregar un nodo separado en el punto medio. Tenga en cuenta que debe darle un nombre a los nodos del árbol para poder calcular la posición intermedia. Tenga en cuenta también que necesita calctikzlibrary.

Si desea rotar el tachado (como en el ejemplo), puede agregarlo rotate=al nodo. También puede calcular automáticamente el ángulo \pgfmathanglebetweenpointssi no desea estimar el valor manualmente. Sin embargo, es posible que aún sean necesarios algunos ajustes manuales. En mi humilde opinión, un tachado sin rotación también se ve bien.

Puede cambiar la posición vertical del tachado cambiando la relación a, por ejemplo 0.6, y la posición horizontal agregando una pequeña cantidad a la coordenada, por ejemplo, +(0.05,0)(o cambiar ambas con un componente y distinto de cero).

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:

ingrese la descripción de la imagen aquí

Respuesta2

Aquí hay un enfoque diferente al problema que requiere menos intervención manual y tiene una sintaxis intuitiva. También le permite usarlo como \edgeestilo en una rama existente del árbol sin especificar ningún nodo.

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

salida de código

Una forestsolución

El forestpaquete proporciona una forma más sencilla de agregar nodos con nombre a los árboles, por lo que personalmente usaría foresteste tipo de árboles. delinkTambién se puede utilizar el mismo estilo. Aquí está el mismo código usando forest. Agregué código para formatear automáticamente el nivel segmentario usando tipa(para que no sea necesario envolverlos \textipa) y luego cada segmento tendrá la misma fuente. Para que esto funcione, si un nodo mora tiene un dependiente segmentario directo (es decir, está vinculado a un segmento que ya está dominado por un nodo mora), debe indicar explícitamente que el nodo está en el moranivel.

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

salida del código forestal

información relacionada