LaTeXで図を扱いたいとき,もともと画像ファイルを作っておいて,それをgraphicxなどのパッケージで挿入する方法があります.
しかし,図とLaTeXの文字のバランスの調整が難しかったり,図の挿入が綺麗に挿入できないことも少なくありません.
そこで,本稿ではTeXファイルに直接記述することで,直線,曲線,グラフなどの図を描くことができるパッケージのTikzのLaTeXでの使い方を紹介します.
画像ファイルを挿入する方法だと,図に修正を加えたいときに別ソフトで画像ファイルの編集をする必要があります.
一方,直接記述して表示できるTikZを用いれば図の修正がTeX上で完結するので,これは大きなメリットですね.
「TikZの基本」の一連の記事はこちら
【LaTeXで図を直接描けるTikZの使い方1|基本的な描線】←今の記事 【LaTeXで図を直接描けるTikZの使い方2|線のスタイル】 【LaTeXで図を直接描けるTikZの使い方3|グラフの描き方】 【LaTeXで図を直接描けるTikZの使い方4|座標の定義と計算】 【LaTeXで図を直接描けるTikZの使い方5|領域に色を塗る】
目次
TikZの準備
TikZはパッケージなので,次の準備が必要です.
- TikZパッケージをインストールする.
- プリアンブルにTikZパッケージを使う宣言をする.
TikZパッケージはLaTeXの環境を整えた時点で元から準備されていることが多いので,実際に簡単なコードでTikZを動かしてみて動かないときにインストールされてない可能性を疑えばよいでしょう.
そのため,TikZパッケージのインストールはこの記事では省略します.
もしTikZが準備されていなさそうであれば,「TikZ ダウンロード」などと検索して,TikZパッケージをダウンロードし,適切な場所に配置してください.
TikZパッケージの宣言
LaTeXのパッケージを知っている人なら,パッケージを使用するためにはプリアンブル(\documentclassと\begin{document}の間)でパッケージを使う宣言が必要であることは基本的でしょう.
TikZパッケージも例外ではありません.
まずは,あえて何も説明せず使える状態にしましょう.
.texファイルに以下のように
1 2 3 4 5 6 7 |
\documentclass[dvipdfmx]{jsarticle} \usepackage{tikz} \usetikzlibrary{intersections, calc, arrows.meta} \begin{document} \end{document} |
と記述してください.これだけで既にTikZを使える状態になっています.
簡単な説明
ここでは,プリアンブルの
1 2 3 |
\documentclass[dvipdfmx]{jsarticle} \usepackage{tikz} \usetikzlibrary{intersections, calc, arrows.meta} |
の部分の説明をします,「とりあえず使いたいんや!」という方は飛ばしても構いません.
ドライバの宣言
冒頭の
1 |
\documentclass[dvipdfmx]{jsarticle} |
ですが,これは「“dvipdfmx”というドライバを使い,和文(jsarticle)で作成する」という宣言です.
ドライバは.texファイルをコンパイルしたときにTikZの図を表示するために必要なものですが,詳しい説明はここではしません.ひとまずはTikZの図を表示させるために,なんらかのドライバが必要だという認識で構いません.
パッケージの宣言
核となるのは
1 |
\usepackage{tikz} |
で,これは「tikzパッケージを使う」という宣言です.
正確にはtikz.styというスタイルファイルではなく,いくつかのスタイルファイルの集合体をTikZと呼んでいます.
そして,これらTikZにまつわるいくつかのスタイルファイルを”\usepackage{tikz}”で一斉に呼び出しているというわけです.
詳しい説明は省略するが,このパッケージにTikZを使うための基本的な道具が詰まっているわけですね.
ライブラリの宣言
ライブラリはTikZの機能を拡張させるものです.
1 |
\usetikzlibrary{intersections, calc, arrows.meta} |
は「intersectionsとcalcとarrows.metaのライブラリを使う」という宣言になっています.
TikZ単体では,線の交点を求めたり,内分点を求めるなどの座標の計算ができません.そこで
- intersectionsを使えば,線の交点を求められるようになる
- calcを使えば,座標計算ができるようになる
- arrows.metaを使えば,様々な矢印のスタイルを使えるようになる
というように,ライブラリにより機能を拡張することができます.
他にもいくつかライブラリは存在しますが,ひとまずこれら3つのライブラリだけでもTikZの利便性が大きく向上します.
TikZのコマンドの基本
準備が終わったので,ここからは具体的にTikZを使っていきましょう.
なお,以下は全て \begin{document}と \end{document}の間に記述します.
基本の描画
命令の意味はあとで説明するとして,例えば
1 |
\tikz \draw (0,0)--(2,0); |
と記述すれば,
と表示されます.このように,
1 |
\tikz 描画; |
の形で記述することにより,簡単に図を描くことができます.
最後のセミコロン;は必ず必要なので,忘れないように注意してください.
複数の描画
1行で図の記述が終わる場合には \tikzを前に書くことで描画できますが,複数行の命令が必要な場合に \tikz を前に書く代わりに,
1 2 3 4 |
\begin{tikzpicture} \draw (0,0)--(2,0); \draw (1,1)--(3,1); \end{tikzpicture} |
のように記述すればよく,この場合には
と表示されます.
このように,複数行の記述が必要な場合には,
1 2 3 4 5 |
\begin{tikzpicture} 描画; 描画; …… \end{tikzpicture} |
の形で記述します.
線分を描く
それでは,まずは最も基本的な「線分の描き方」を説明します.
単純な線分,折れ線
まずは次のように記述します.
1 |
\tikz \draw (0,0)--(2,1); |
これをコンパイルすると以下のように表示される.
すなわち,直交座標上で
- 点 (0,0)と
- 点 (2,1)を
- 結んで( --)
- 描け( \draw)
という命令になっています.
このように,座標と座標を2個の半角ダッシュ-で結べば,この2点間を結ぶ線分が描画できます.
また,描画は相対位置で描画されるので,上のものの全ての第1成分に5を加えて
1 |
\tikz \draw (0+5,0)--(2+5,1); |
と記述しても上と同じく
と表示されます.
線分を順次つなげていくこともできます.
1 |
\tikz \draw (0,0)--(2,1)--(3,-1); |
と記述し,コンパイルすると以下のように表示されます.
閉じた線
閉じた線を記述することもできます.
1 |
\tikz \draw (0,0)--(2,1)--(3,-1)--cycle; |
と最後に cycleを記述すれば,
と閉じた線となります.
ここで,「 cycleを使わなくても, \tikz \draw (0,0)--(2,1)--(3,-1)--(0,0); とすれば良いのではないか」という疑問が湧きますが,この記述と上のcycleを使った閉じた線は異なった線を描きます.
違いを分かりやすくするため,両者を極太の線分
1 2 3 4 |
\begin{tikzpicture} \draw[ultra thick] (0,0)--(2,1)--(3,-1)--cycle; \draw[ultra thick] (4,0)--(6,1)--(7,-1)--(4,0); \end{tikzpicture} |
で描いてみると,それぞれ以下のようになります.
両者の三角形の左の頂点に注目すると,前者はとんがっていますが後者はとんがっていません.
これは図を拡大してみるとよく分かります.
このように, cycle を使わないと「2つの端点が集まっているだけ」の不恰好な頂点となってしまいます.
なお,線を太くしたりといった,線のスタイルの変更は次の記事を参照してください.
【次の記事:LaTeXで図を直接描けるTikZの使い方2|線のスタイル】
TikZで描いた線は太くしたり,波線にしたり,矢印にしたり,色を変えたりと「線のスタイル」を変更することができる.次の記事では,線のスタイルの変更の方法を説明する.
長方形
指定した2点を対角線とする長方形を描くことができます.
1 |
\tikz \draw (0,0) rectangle (2,3); |
と2点で“rectangle”を挟んで記述すれば,
と2点$(0,0)$, $(2,3)$を結んだ線分を対角線とする長方形が描かれます.
垂線
点から線分に下ろした垂線を描くことができます.
1 2 3 4 |
\begin{tikzpicture} \draw (0,0)--(3,0); \draw (1,1)--(\$(0,0)!(1,1)!(3,0)\$); \end{tikzpicture} |
と記述すれば,
のように
- 2点$(0,0)$, $(3,0)$を結んだ線分
- 2点$(0,0)$, $(3,0)$を結んだ直線に点$(1,3)$から下ろした垂線
が描かれます.すなわち,
1 |
(\$(a1,a2)!(x,y)!(b1,b2)\$) |
は2点$(a1,a2)$, $(b1,b2)$を結んだ直線に点$(x,y)$から下ろした「垂線の足」を意味します.
曲線の描き方
次に,曲線の描き方を説明します.
円の描き方
曲線の中でも円を描く機会は多いでしょう.例えば,
1 2 3 4 |
\begin{tikzpicture} \draw(0,0) circle (1); \draw(1,1) circle (2); \end{tikzpicture} |
と記述すれば,
と表示されます.すなわち,点$(a,b)$中心,半径$r$の円は
1 |
\tikz \draw (a,b) circle (r); |
と記述することにより描くことができます.
実はこの \draw (a,b) circle (r);はかっこ( )を座標以外で使いたくないという理由から「古い構文」とされています.
個人的には簡潔なこの「古い構文」を好んで用いていますが,公式には \draw (a,b) circle [radius=1];が推奨された書き方です.
楕円の描き方
例えば,
1 |
\tikz \draw (0,0) circle [x radius=2, y radius=1, rotate=30]; |
と記述すれば,
と表示されます.
すなわち,点$(a,b)$中心,第1成分の径の長さが$p$,第2成分の径の長さが$q$の楕円を$t^\circ$傾けた図形は
1 |
\tikz \draw (a,b) circle [x radius=p, y radius=q, rotate=t]; |
と記述することにより描くことができます.
円弧/楕円弧の描き方
例えば,
1 |
\tikz \draw (0,0) arc (30:70:3); |
と記述すれば,
と表示されます.
すなわち,点$(a,b)$から始まる半径$r$の円の偏角$s^\circ$から$t^\circ$の弧は
1 |
\tikz \draw (a,b) arc (s:t:r); |
と記述することにより描くことができます.
また,点$(a,b)$から始まる$x$方向の径が$r$,$y$方向の径が$r’$の楕円の偏角$s^\circ$から$t^\circ$の弧は
1 |
\tikz \draw (a,b) arc [start angle=s,end angle=t,x radius=r,y radius=r']; |
と記述することにより描くことができます.
始点と終点への向きを指定する方法1
例えば,
1 |
\tikz \draw (0,0) to [out=45,in=135] (4,0); |
と記述すれば,
と表示されます.
すなわち,点$(a,b)$から偏角$t$の方向へ出て,点$(p,q)$へ偏角$s$の方向から入る曲線は
1 |
\tikz \draw (a,b) to [out=t,in=s] (p,q); |
と記述することにより描くことができます.
始点と終点への向きを指定する方法2
今の図の曲線を$45^\circ$回転させる場合には,
1 |
\tikz \draw (0,0) to [out=45,in=135,relative] ({2*sqrt(2)},{2*sqrt(2)}); |
と曲線のオプションに”relative”を記述することで,この2点を基準の軸とした偏角で表すことができます.これにより,
と表示されます.
すなわち,点$(a,b)$から点$(p,q)$の向きを基準として,点$(a,b)$から偏角$t^{\circ}$の方向へ出て,点$(p,q)$へ偏角$s^{\circ}$の方向から入る曲線は
1 |
\tikz \draw (a,b) to [out=t,in=s,relative] (p,q); |
と記述することにより描くことができます.
もっとも回転させるだけなら,
1 |
\tikz \draw[rotate=45] (0,0) to [out=45,in=135] (4,0); |
という回転のオプション [rotate=角度]を”\draw”の直後に記述すれば,
となります.
なお,終点$(4,0)$を単に$(3,3)$に移して
1 |
\tikz \draw (0,0) to [out=45,in=135] (3,3); |
と記述した場合には,
と表示されます.
これは to [out=45,in=135] で指定している$45^\circ$と$135^\circ$はあくまで$x$軸正方向からの偏角なので,単に終点の位置を移動させても図形自体が回転するわけではありません.
図に文字を書き込む方法
以下のように”node”を用いれば,図中に文字を書き込むことができます.
例えば,
1 2 3 4 5 6 7 |
\begin{tikzpicture} \draw (0,0)--(2,1)--(3,-1)--(1,-1)--cycle; \draw (0,0)node{A}; \draw (2,1)node{B}; \draw (3,-1)node{C}; \draw (1,-1)node{D}; \end{tikzpicture} |
と記述すれば,
と表示されます.しかし,これでは図と文字が被って美しくありませんので,これを文字の位置をズラしましょう.
具体的には,
1 2 3 4 5 6 7 |
\begin{tikzpicture} \draw (0,0)--(2,1)--(3,-1)--(1,-1)--cycle; \draw (0,0)node[left]{A}; \draw (2,1)node[above]{B}; \draw (3,-1)node[right]{C}; \draw (1,-1)node[below]{D}; \end{tikzpicture} |
とすれば,
と表示されます.すなわち,
1 |
\tikz \draw (a,b) node[上下左右]{文字}; |
と書くことによって,「点$(a,b)$の[上下左右]に{文字}を書け」という命令になります.
[上下左右]には
- above(上)
- below(下)
- left(左)
- right(右)
と,これらを組み合わせた
- above right(右上)
- above left(左上)
- below right(右下)
- below left(左下)
の全8方向を指定できます.
なお,実は node は
1 |
\tikz \draw (0,0)node[left]{A}--(2,1)node[above]{B}--(3,-1)node[right]{C}--(1,-1)node[below]{D}--cycle; |
ように,折れ線の記述の中でも正しく機能し,上と同じ図が描けます.
次の記事では,「線の太さ」「デザイン(点線,破線など)」「矢印」といった線のスタイルを変える方法を説明します.
「TikZの基本」の一連の記事はこちら
【LaTeXで図を直接描けるTikZの使い方1|基本的な描線】 【LaTeXで図を直接描けるTikZの使い方2|線のスタイル】←次の記事 【LaTeXで図を直接描けるTikZの使い方3|グラフの描き方】 【LaTeXで図を直接描けるTikZの使い方4|座標の定義と計算】 【LaTeXで図を直接描けるTikZの使い方5|領域に色を塗る】
参考文献
LaTeX2e美文書作成入門 改訂第8版
(奥村晴彦 著/技術評論社)
$\TeX$はDonald E. Knuth氏が開発した数式処理に特化した組版処理システム(ざっくり言えば文書ソフト)です.
現在ではほとんどの数学の論文雑誌では$\LaTeX$により書かれた論文が標準となっています.
そのため,ほとんどの数学の研究者が論文作成の際に$\LaTeX$を使っていると言ってよいでしょう.
著者の奥村氏は日本における$\TeX$の第一人者で,本書は$\LaTeX$初心者から中級者まで幅広い層に役立つ$\LaTeX$の教科書です.
数式処理だけでなく$\LaTeX$を扱う際に便利な多くの機能の解説が載っており,しっかり理解して$\LaTeX$を習得することができます.
本書にはDVD-ROMが付属しておりインストール用がすぐにできるので,$\LaTeX$を始める人が苦戦しがちな環境整備がすぐにできます.