Use uma quantidade arbitrária de sublinhados + descrições usando TikZ em partes de palavras

Use uma quantidade arbitrária de sublinhados + descrições usando TikZ em partes de palavras

Esta é uma extensão deessa questão. Em linguística, muitas vezes são necessárias análises de palavras e acho que o TikZ é uma excelente ferramenta para trazer um pouco de vida, cor e, acima de tudo, clareza à cena. Não possuo habilidade para fazer isso, por isso elaborei um esboço do que gostaria de fazer.

Usando ooutra questãoeo seguinte esboçocomo ponto de partida, espero que alguma mente inteligente encontre uma solução flexível.

Uma lista provisória de critérios

  1. Os colchetes têm como alvo letras específicas para envolverNÃO ATINGIDO
  2. Chaves (colchetes) devem ser capazes de se sobreporNÃO ATINGIDO
  3. A distância da chave até a palavra deve ser variável(realizado em outra questão)
  4. Descrição a distância até o suporte deve ser variável(concluído, consulte atualização de 2 de abril de 2013)
  5. A descrição deve ser flexível o suficiente para ser colocada em algum lugar longe da cinta e conectada à cinta com uma linha pontilhada (ou algum tipo de linha)(concluído, consulte atualização de 2 de abril de 2013)
  6. Os colchetes devem poder ser colocados acima e abaixo de uma palavraNÃO ATINGIDOmeio que veja a resposta de percusse
  7. Flexível e fácil de aplicar a um parágrafo inteiro de palavras (como o Pai Nosso em finlandês, por exemplo!) (TikZ calcula a largura dos colchetes a partir de letras específicas no Word)NÃO ATINGIDO

Exemplo de análise de palavras TikZ:

Análise de palavras TikZ


ATUALIZAR2 de abril de 2013: Critérios nº 4 e nº 5

Consegui atender aos critérios 4 e 5 hoje! É um trabalho de hack e pode ser simplificado (procurando um profissional para fazer isso!).

Peguei o código da outra pergunta e adicionei

  • Variáveis
    • ajustar verticalmente(yshift=)localização do texto
    • horizontal(xshift=)localização do texto
    • ajustar a largura da descrição(largura do texto =)
  • Contador
    • nomes de nós automáticos
    • relacionar descrições com colchetes(usando "text#" e "brace#")permitindo uma maneira fácil de conectar descrições aos colchetes corretos

Como funciona

Para adicionar colchetes a uma palavra, você usa o comando \tikzbrace. A seguir são mostradas as opções e um exemplo.

\tikzbrace[brace yshift]{palavra}{descrição}[largura do texto=20ex][texto yshift][texto xshift]

por exemplo, em ação * Observe a largura redundante do texto dentro da variável (não sei como corrigir isso - consulte a seção "Um pouco de confusão")

\tikzbrace[-1ex]{palavra}{Nom.Sg. Sufixo -me}[largura do texto=20ex][5ex][xshift=4cm]

Um pouco de confusão

Observe que a ordem das variáveis ​​no comando\NewDocumentCommandsão confusos e tive que experimentar um pouco a ordem deles. Provavelmente devido à ordem em que o TikZ analisa os parâmetros. Eu também tenho um redundantelargura do texto =opção codificada, mas ainda é necessário incluir o texto width= na variável. Talvez alguém saiba como consertar isso.

Por que estou usando a dependência do TikZ?

Duas coisas devem funcionar:

  • Faça referência a palavras inteiras (para as traduções literais) (acima das palavras)

E

  • Ainda tem nós separados começando/terminando em letras específicas. (abaixo das palavras)

Isso poderia ser resolvido se alguém soubesse como resolver o critério nº 2 usando letras como referências (parte da flexibilidade deste projeto)

Pendência

  • Atenda aos critérios ausentes (veja a lista de verificação acima, que atualizarei até ser resolvida)
  • permitir retorno de carro nas descrições (não funciona mesmo quando a largura do texto está definida)Alcançou (SOLUÇÃO: precisa do parâmetro align= para o nó de descrição, por exemplo, align=left)

Exemplo atualizado dos critérios 4 e 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}

Responder1

Você pode usar a mesma ideia com diferentes possibilidades como raisedecoração, ou mudar as coordenadas usando âncoras 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}

A colocação do nó pode ser feita através midwaydo meio ou pos=numberopção. O deslocamento do nó pode ser alcançado fornecendo distância aboveou belowcomo argumentos.

insira a descrição da imagem aqui

informação relacionada