単語の一部にTikZを使用して任意の数の下線と説明を使用する

単語の一部にTikZを使用して任意の数の下線と説明を使用する

これは、この質問言語学では、単語の分析が必要になることが多く、TikZ はシーンに生命と色彩、そして何よりも明瞭さをもたらす優れたツールだと思います。私にはこれを実現するスキルがないので、やりたいことのスケッチを描きました。

使用方法その他の質問そして次のスケッチこれを出発点として、賢明な人が柔軟な解決策を考え出してくれることを期待します。

暫定的な基準リスト

  1. 括弧は特定の文字を囲む対象です未達成
  2. 中括弧は互いに重ねることができる必要があります未達成
  3. 単語までの括弧の距離は可変であるべきである(他の質問で達成)
  4. 説明ブレースまでの距離は可変である必要があります(達成済み。2013 年 4 月 2 日の更新を参照)
  5. 説明は、ブレースから離れた場所に配置し、点線(または何らかの線)でブレースに接続できるほど柔軟である必要があります。(達成済み。2013 年 4 月 2 日の更新を参照)
  6. 括弧は単語の上下に配置できる必要があります未達成percusseの答えを見る
  7. 柔軟性があり、段落全体の単語に適用しやすい(たとえば、フィンランド語の主の祈りなど)(TikZ は単語内の指定された文字から括弧の幅を計算します)未達成

TikZ 単語分析の例:

TikZ 単語分析


アップデート2013 年 4 月 2 日: 基準 #4 および #5

今日は基準 4 と 5 を満たすことができました。これはハックジョブであり、合理化できる可能性があります (これを実行できるプロを探しています)。

他の質問からコードを取得して追加しました

  • 変数
    • 垂直に調整(yシフト=)テキストの位置
    • 水平(xshift=)テキストの位置
    • 説明の幅を調整する(テキスト幅=)
  • カウンター
    • 自動ノード名
    • 説明を括弧に関連付ける(「text#」と「brace#」を使用)説明を正しい括弧に簡単に接続できるようにする

使い方

単語に中括弧を追加するには、\tikzbrace コマンドを使用します。以下にオプションと例を示します。

\tikzbrace[ブレース yshift]{単語}{説明}[テキスト幅=20ex][テキスト yshift][テキスト xshift]

例: 動作中 * 変数内の冗長なテキスト幅に注意してください (これを修正する方法はわかりません。セクション「ちょっとした混乱」を参照してください)

\tikzbrace[-1ex]{単語}{名詞・名詞・接尾辞 -me}[テキスト幅=20ex][5ex][xshift=4cm]

ちょっとした混乱

コマンド内の変数の順序に注意してください\新規ドキュメントコマンド混乱を招くので、順序を少し試す必要がありました。おそらくTikZがパラメータを解析する順序によるものです。また、冗長なテキスト幅=オプションはハードコードされていますが、変数にテキスト width= を含める必要があります。おそらく誰かがこれを修正する方法を知っているでしょう。

なぜ TikZ 依存関係を使用するのですか?

次の 2 つのことが機能する必要があります。

  • 単語全体を参照(直訳の場合)(上記の単語)

そして

  • 特定の文字で開始/終了する個別のノードがまだあります。(単語の下)

これは、文字を参照として使用して基準 2 を解決する方法を知っている人がいれば解決できます (このプロジェクトの柔軟性の一部)

やること

  • 不足している基準を満たす(上記のチェックリストを参照してください。解決されるまで更新します)
  • 説明内での改行を許可する(テキスト幅が設定されていても機能しない)達成 (解決策: 説明ノードに align= パラメータが必要です (例: align=left))

基準4および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}

答え1

同じアイデアをraise装飾などのさまざまな可能性で使用したり、アンカーなどを使用して座標をシフトしたりできます。

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

midwayノードの配置は、中間の またはオプションを使用して行うことができます。ノードの移動は、またはpos=numberへの距離を引数として指定することで実現できます。abovebelow

ここに画像の説明を入力してください

関連情報