TikZ で中括弧を使用して同じ単語の複数の部分に下線を引くにはどうすればよいですか?

TikZ で中括弧を使用して同じ単語の複数の部分に下線を引くにはどうすればよいですか?

更新: 関連する質問を投稿しましたここ

私は言語学の分野で働いており、単語の接頭辞、接尾辞、接尾辞を分析する必要がある場合があります。TikZ を使用して単語のさまざまな部分に注釈を追加できると便利です。これまでのところ、ほぼ希望どおりのことができます。問題は、間に不自然なスペースを入れずに単語の複数の部分を別々のノードに配置することができないことです(複数の単語のように見えます) 例えば、taivaissaは1つの単語であるべきです(語源であるtaivaに下線を引いて、その下に説明を入れ、接尾辞-issaに下線を引いて、その下に説明を入れたいと思います)。

基準:

  • このソリューションでは、同じ単語内で長い説明を使用するときに重複する可能性を回避するために、中括弧 (波括弧) の下部 (または方向に応じて上部) から説明までの距離を制御できるようにする必要があります。 (理想的には、以下の例のように、波括弧から単語までの距離も可変になります。)

  • このソリューションには dependency-tikz パッケージを含める必要はありません。個々の単語を明確かつ文字通りに翻訳する簡単な方法であるため、ここでそれを使用しています。ただし、それがあればプラスになります。

スライド例 コード:

\documentclass[]{beamer}
\usepackage{fontspec}
\usepackage{tikz-dependency}
% Klammern in Formeln
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing,calc}
\usepackage{xparse}
\NewDocumentCommand{\tikzbrace}{O{-2.5ex} m m O{} O{}}{%
   \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 [midway,below=1ex,font=\scriptsize,#5] {#3};
   \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[-5ex]{taiva}{-\emph{issa}=pl (sg -\emph{ssa}) Inessiv, ähnlich Lokativ, e.g. talossa "in dem Haus"}issa,\\
\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}
\end{frame}
\end{document}

答え1

の定義の\tikzbrace直後に「漏れスペース」があります\end{tikzpicture}。したがって、解決策は、次のようにパーセント記号を後ろに付けることです。

\NewDocumentCommand{\tikzbrace}{O{-2.5ex} m m O{} O{}}{%
   \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 [midway,below=1ex,font=\scriptsize,#5] {#3};
   \end{tikzpicture}%
}

関連情報