Use una cantidad arbitraria de subrayados + descripciones usando TikZ en partes de palabras

Use una cantidad arbitraria de subrayados + descripciones usando TikZ en partes de palabras

Esta es una extensión deesta pregunta. En lingüística, los análisis de palabras suelen ser necesarios y creo que TikZ es una excelente herramienta para darle vida, color y, sobre todo, claridad a la escena. No tengo la habilidad para lograr esto, por eso he elaborado un boceto de lo que me gustaría hacer.

Utilizando elotra preguntayel siguiente bocetoComo punto de partida, espero que alguna mente inteligente encuentre una solución flexible.

Una lista provisional de criterios

  1. Las llaves apuntan a letras específicas para envolverNO LOGRADO
  2. Las llaves (llaves) deben poder superponerse entre síNO LOGRADO
  3. La distancia entre llaves y la palabra debe ser variable.(cumplido en otra pregunta)
  4. Descripción La distancia a la riostra debe ser variable.(realizado ver actualización del 2 de abril de 2013)
  5. La descripción debe ser lo suficientemente flexible como para colocarse en algún lugar lejos de la riostra y conectarse a la riostra con una línea de puntos (o algún tipo de línea).(realizado ver actualización del 2 de abril de 2013)
  6. Las llaves deben poder colocarse encima y debajo de una palabra.NO LOGRADOalgo así como ver la respuesta de percusse
  7. Flexible y fácil de aplicar a un párrafo completo de palabras (como el Padre Nuestro en finlandés, por ejemplo). (TikZ calcula el ancho de las llaves a partir de letras específicas en la palabra)NO LOGRADO

Ejemplo de análisis de palabras de TikZ:

Análisis de palabras TikZ


ACTUALIZAR2 de abril de 2013: Criterios 4 y 5

¡Pude cumplir con los criterios 4 y 5 hoy! Es un trabajo complicado y posiblemente podría simplificarse (¡buscamos un profesional para hacer esto!).

Tomé el código de la otra pregunta y agregué

  • variables
    • ajustar verticalmente(yshift=)ubicación del texto
    • horizontal(xcambio=)ubicación del texto
    • ajustar el ancho de la descripción(ancho del texto =)
  • Encimera
    • nombres de nodos automáticos
    • relacionar descripciones con llaves(usando "texto#" y "llave#")permitiendo una manera fácil de conectar descripciones con las llaves correctas

Cómo funciona

Para agregar una llave a una palabra, use el comando \tikzbrace. A continuación se muestran las opciones y un ejemplo.

\tikzbrace[brace yshift]{palabra}{descripción}[text width=20ex][texto yshift][texto xshift]

por ejemplo, en acción * Tenga en cuenta el ancho del texto redundante dentro de la variable (no estoy seguro de cómo solucionarlo; consulte la sección "Un poco de confusión")

\tikzbrace[-1ex]{palabra}{Nom.Sg. Sufijo -me}[ancho del texto=20ex][5ex][xshift=4cm]

Un poco de confusión

Tenga en cuenta que el orden de las variables en el comando\NuevoComandoDocumentoson confusos y tuve que experimentar un poco con el orden de ellos. Probablemente debido al orden en que TikZ analiza los parámetros. También tengo un redundanteancho del texto =opción codificada, pero aún es necesario incluir el texto ancho = en la variable. Quizás alguien sepa cómo solucionar este problema.

¿Por qué estoy usando la dependencia de TikZ?

Dos cosas deben funcionar:

  • Haga referencia a palabras completas (para las traducciones literales) (palabras anteriores)

Y

  • Todavía tiene nodos separados que comienzan o terminan en letras específicas. (debajo de las palabras)

Esto podría resolverse si alguien sabe cómo resolver el criterio n.° 2 usando letras como referencias (parte de la flexibilidad de este proyecto)

Hacer

  • Cumplir con los criterios que faltan (consulte la lista de verificación anterior, que actualizaré hasta que se resuelva)
  • permitir el retorno de carro dentro de las descripciones (no funciona incluso cuando se establece el ancho del texto)Logrado (SOLUCIÓN: Necesita el parámetro align= para el nodo de descripción, por ejemplo, align=left)

Ejemplo actualizado de los criterios 4 y 5

\documentclass[]{beamer}
\usepackage{fontspec}
\usepackage{tikz-dependency}

\newcounter{mycounter}
\setcounter{mycounter}{1}


\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing,calc}
\usepackage{xparse}

% TikZ Command for Brace
\NewDocumentCommand{\tikzbrace}{O{-2.5ex} m m O{} O{1ex} O{} O{0ex}}{%
   \tikz[remember picture]\coordinate (left brace coord);%
   #2%
   \tikz[remember picture]\coordinate (right brace coord);%
   \begin{tikzpicture}[remember picture,overlay,
      transform canvas={yshift=#1}]
      \draw [decoration={amplitude=1ex,brace},decorate,#4] %
         (right brace coord) -- (left brace coord)
         node [#6,xshift=#7,midway,below=#5,font=\scriptsize] (text\arabic{mycounter}) {#3};
      \path (right brace coord) -- (left brace coord) node[midway,yshift=#1] (brace\arabic{mycounter}) {\stepcounter{mycounter}};
   \end{tikzpicture}%
}

\begin{document}
  \begin{frame}{Satz 1}
    \begin{dependency}[edge style={red,densely dotted}]
      \begin{deptext}
        \tikzbrace[-1ex]{Isae}{Vater} \& meidän, \& joka \& \tikzbrace[-1ex]{olet}{2Psg} \& \tikzbrace[-1ex]{taiva}{-\emph{issa}=pl (sg -\emph{ssa}) Inessiv, ähnlich Lokativ, e.g. talossa "in dem Haus"}[text width=20ex][10ex][xshift=0cm]\tikzbrace[-1ex]{issa}{-issa=pl von -ssa Inessiv (ähnlich wie Lokativ). Trägt die Bedeutung „in“
z.B talossa=in the house
}[text width=20ex][5ex][xshift=4cm],\\
      \end{deptext}
      \deproot[edge unit distance=1ex]{1}{Vater}
      \deproot[edge unit distance=1ex]{2}{unserer}
      \deproot[edge unit distance=1ex]{3}{wer}
    \end{dependency}
    % Lines - Description to Brace
    \begin{tikzpicture}[remember picture, overlay]
    \draw[red, dotted] (text4.north) to [out=90,in=270](brace4.south);
    \draw[red, dotted] (text3.north) to [out=90,in=270](brace3.south);
    \end{tikzpicture}
  \end{frame}
\end{document}

Respuesta1

Puedes usar la misma idea con diferentes posibilidades como raisela decoración, o cambiar las coordenadas, usar anclajes, etc.

\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.pathmorphing,calc}
\begin{document}
\begin{tikzpicture}
\node[outer sep=0,inner sep=1pt] (w) {\Large Reenactment};
%The angle anchors
\draw[decoration={brace,raise=1mm},decorate,] (w.166) -- (w.13) 
node[midway,above=2mm,align=center,anchor=south] {Some linguistic\\ text here};

% The explicit coord calc
\draw[decoration={brace,raise=1mm,mirror},decorate] (w.south west) -- ($(w.south)-(8mm,0)$)
coordinate [midway,below=2mm] (c1);
\draw[densely dashed] ([yshift=-2mm]c1) --++(0,-1cm) node[below] {Prefix-re};

\draw[decoration={brace,raise=20mm,mirror},decorate] (w.south west) -- (w.south);

\draw[decoration={brace,mirror},decorate] 
     ([yshift=-3cm]w.south west) -- ([yshift=-3cm]w.south east);
\end{tikzpicture}
\end{document}

La colocación del nodo se puede realizar mediante midwayel medio o pos=numberla opción. El desplazamiento de nodos se puede lograr proporcionando distancia aboveo belowcomo argumentos.

ingrese la descripción de la imagen aquí

información relacionada