答え1
これを行う方法は次の通りですTikz
。
基本的な考え方:
- 線を引く
\node
下のラベルにsをいくつか入れてください\draw
上には装飾された小道がいくつかあるcoordinate
これらのアクションをサポートするために関連するsを覚えておいてください/.style
コードを簡素化し、パラメータの変更を1か所だけで行えるように、define を使用します。- 初心者でも難しくないバランスの取れたアプローチを試み、より良いコードのためにパス機能を使用する
行:
最初のものを消化してみましょう。
\draw[bar] (0,0) coordinate (A) -- (1.5,0) coordinate (B) node[a]{$a$};
まず絶対座標で単純な線を描くことを考えてみましょう。
\draw (0,0) -- (1.5,0);
Tikz
はセミコロンで終わるパスに関するものなので;
、パスが終了する前に を削除しながらノードを追加できます。したがって、これは (1.5,0) に到達した後にテキスト (ラベル) を含むノードを配置します。これは、数式モードなど、\
何らかのスタイルを持つテキストを受け入れます。a
$a$
\draw (0,0) -- (1.5,0) node[a]{$a$};
線のスタイル情報を先頭に配置し、先頭のスタイル セクションで、ここに何を描画するかを詳細に指定します。
\draw[bar] (0,0) -- (1.5,0) node[a]{$a$};
最後に、\coordinate
特定の場所を記憶するためにパスにステートメントを追加し、\
描画されるパスが同じままであるため を削除します。これで完了です。
\draw[bar] (0,0) coordinate (A) -- (1.5,0) coordinate (B) node[a]{$a$};
他のパスも同様に、相対的な動きと絶対座標の組み合わせを使用し--++(1.5,0)
、ここで 5mm と定義されているノードの最小幅に関する知識を使用して作成されます。これは、確かに、より体系的に行うことができます。
下のラベル:
% ~~~ labels below ~~~~~~~~~~
\node[mth] at (A) {$1$};
\node[mth] at ([xshift=-2.5mm]C) {$f(i) + 1$};
これは非常に簡単です。最初の行は、スタイルを使用して、テキストを$1$
記憶された位置に配置し、そのテキストを y 方向に少し下に移動します。(A)
mth
2 番目は、私が行った方法でノードを配置することによって多少の複雑さが生じていることを除けば、非常に似ています$a$
。したがって、位置を修正する 1 つの方法は、 を使用し(C)
、少し後方にシフトすることです (最小幅の半分)。
([xshift=-2.5mm]C)
。
オーバーブレース:
% ~~~ labels above ~~~~
\draw[decorate,blue] ([ys]A) -- ([ys]B) node[alf]{$\alpha$};
\draw[decorate,blue] ([ys]D) -- ([ys]E) node[alf]{$\alpha$};
decorate
これは、tikz ライブラリによって提供される を使用しながら、上記の概念を組み合わせますdecorations.pathreplacing
。
- 上(A)から上(B)へのパスを描きます。
- それをブレースに置き換える
- 青色の
- $\alpha$ の中間と少し上にノードを配置します。
スタイルブロック:
\begin{tikzpicture}[
a/.style={anchor=west,minimum width=5mm}, % for the node containing "a"
bar/.style={{Bar[]}-{Bar[]}}, % start- and end-tipps as Bars
bar2/.style={-{Bar[]}}, % only end-tipp as bar
mth/.style={yshift=-5mm}, % for placing the math-labels
decoration=brace, % the overbrace
alf/.style={midway,yshift=3mm}, % placing \alpha there
ys/.style={yshift=5mm}, % shortcut for these yshifts
]
少なくとも私の場合、この部分は進むにつれて次のように発展していきます。
- 上記の行部分を思い出してください
- 便利なスタイルオプションを直接入力し
draw
てnode
- 長すぎますか? それとも少なくとも 2 回必要になりますか?
- 便利な名前を付けてここに移動してください
- 後でラベルのシフトなどを簡単に調整できます
コード:
\documentclass[10pt,border=3mm,tikz]{standalone}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}[
a/.style={anchor=west,minimum width=5mm}, % for the node containing "a"
bar/.style={{Bar[]}-{Bar[]}}, % start- and end-tipps as Bars
bar2/.style={-{Bar[]}}, % only end-tipp as bar
mth/.style={yshift=-5mm}, % for placing the math-labels
decoration=brace, % the overbrace
alf/.style={midway,yshift=3mm}, % placing \alpha there
ys/.style={yshift=5mm}, % shortcut for these yshifts
]
% ~~~ lines ~~~~~~~~~~~~
\draw[bar] (0,0) coordinate (A) -- (1.5,0) coordinate (B) node[a]{$a$};
\draw[bar] (2,0) coordinate (C) -- (3.5,0) coordinate (D);
\draw[bar2](3.5,0) --++(1.5,0) coordinate (E) node[a]{$a$};
\draw[bar] (5.5,0) --++(1.5,0) node[a]{$P$};
% ~~~ labels below ~~~~~~~~~~
\node[mth] at (A) {$1$};
\node[mth] at ([xshift=-2.5mm]C) {$f(i) + 1$};
\node[mth] at (D) {$i - f(i) + 1$};
\node[mth] at ([xshift=+2.5mm]E) {$i + 1$};
% ~~~ labels above ~~~~
\draw[decorate,blue] ([ys]A) -- ([ys]B) node[alf]{$\alpha$};
\draw[decorate,blue] ([ys]D) -- ([ys]E) node[alf]{$\alpha$};
\end{tikzpicture}
\end{document}