
これは、この質問言語学では、単語の分析が必要になることが多く、TikZ はシーンに生命と色彩、そして何よりも明瞭さをもたらす優れたツールだと思います。私にはこれを実現するスキルがないので、やりたいことのスケッチを描きました。
使用方法その他の質問そして次のスケッチこれを出発点として、賢明な人が柔軟な解決策を考え出してくれることを期待します。
暫定的な基準リスト
- 括弧は特定の文字を囲む対象です未達成
- 中括弧は互いに重ねることができる必要があります未達成
- 単語までの括弧の距離は可変であるべきである(他の質問で達成)
- 説明ブレースまでの距離は可変である必要があります(達成済み。2013 年 4 月 2 日の更新を参照)
- 説明は、ブレースから離れた場所に配置し、点線(または何らかの線)でブレースに接続できるほど柔軟である必要があります。(達成済み。2013 年 4 月 2 日の更新を参照)
- 括弧は単語の上下に配置できる必要があります未達成percusseの答えを見る
- 柔軟性があり、段落全体の単語に適用しやすい(たとえば、フィンランド語の主の祈りなど)(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))
\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
への距離を引数として指定することで実現できます。above
below