
LaTeXで図を扱いたいとき,もともと画像ファイルを作っておいて,それをgraphicxなどのパッケージで挿入する方法がある.
しかし,図とLaTeXの文字のバランスの調整が難しかったり,図の挿入が綺麗に挿入できないことも少なくない.
そこで,本稿ではTeXファイルに直接記述することで,直線,曲線,グラフなどの図を描くことができるパッケージのTikzのLaTeXでの使い方を紹介する.
画像ファイルを挿入する方法だと,図に修正を加えたいときに別ソフトで画像ファイルの編集をする必要がある.
一方,直接記述して表示できるTikZを用いれば,図の修正がTeX上で完結する.これはメリットであろう.
一連の記事は以下の通りである.
【LaTeXで図を直接描けるTikZの使い方1|基本的な描線】←この記事
【LaTeXで図を直接描けるTikZの使い方2|線のスタイル】
【LaTeXで図を直接描けるTikZの使い方3|グラフの描き方】
【LaTeXで図を直接描けるTikZの使い方4|座標の定義と計算】
【SPONSORED LINK】
目次
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} \begin{document} \end{document} |
と記述する.これだけで既にTikZを使える状態になっている.
簡単な説明
ここでは,プリアンブルの
1 2 3 |
\documentclass[dvipdfmx]{jsarticle} \usepackage{tikz} \usetikzlibrary{intersections, calc} |
の部分の説明をするが,「とりあえず使いたいんや!」という方は飛ばしても構わない.
ドライバの宣言
冒頭の
1 |
\documentclass[dvipdfmx]{jsarticle} |
であるが,これは「”dvipdfmx”というドライバを使い,和文(jsarticle)で作成する」という宣言である.
ドライバは.texファイルをコンパイルしたときにTikZの図を表示するために必要なものであるが,詳しい説明はここではしない.ひとまずはTikZの図を表示させるために,なんらかのドライバが必要だという認識でよい.
また,jsarticleに関してはTikZに対して,本質的に関わってくるものではないので説明は省略する.
パッケージの宣言
核となるのは
1 |
\usepackage{tikz} |
である.
これは「”tikz”というパッケージを使う」という宣言である.
正確には”tikz.sty”というスタイルファイルは存在せず,いくつかのスタイルファイルの集合体をTikZと呼んでいる.そして,これら”TikZ”にまつわるいくつかのスタイルファイルを”\usepackage{tikz}”で一斉に呼び出している.
詳しい説明は省略するが,このパッケージにTikZを使うための基本的な道具が詰まっている.
ライブラリの宣言
ライブラリはTikZの機能を拡張させるものである.
1 |
\usetikzlibrary{intersections, calc, arrows} |
は「”intersections”と”calc”と”arrows”のライブラリを使う」という宣言になっている.
TikZ単体では,線の交点を求めたり,内分点を求めるなどの座標の計算ができない.そこで
- “intersections”を使えば,線の交点を求められるようになる
- “calc”を使えば,座標計算ができるようになる
というように,ライブラリにより機能を拡張することができる.
他にもいくつかライブラリは存在するが,ひとまずこの2つのライブラリだけでもTikZの利便性が大きく向上する.
線分を描く
準備が終わったので,ここからは具体的にTikZを使っていく.
ここでは,まずは最も基本的な「線分の描き方」を説明する.
なお,以下は全て\begin{document}と\end{document}の間に記述する.
単純な線分,折れ線
まずは次のように記述する.
1 |
\tikz \draw (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 |
\tikz \draw[ultra thick] (0,0)--(2,1)--(3,-1)--cycle; \tikz \draw[ultra thick] (0,0)--(2,1)--(3,-1)--(0,0); |
で描いてみると,それぞれ以下のようになる.
両者の三角形の左の頂点に注目すると,前者はとんがっているが後者はとんがっていない.拡大してみるとよく分かる.
このように,“cycle”を使わないと「2つの端点が集まっているだけ」の不恰好な頂点となってしまう.
なお,銭を太くしたりといった,線のスタイルの変更は次の記事を参照されたい.
【次の記事:LaTeXで図を直接描けるTikZの使い方2|線のスタイル】
TikZで描いた線は太くしたり,波線にしたり,矢印にしたり,色を変えたりと「線のスタイル」を変更することができる.次の記事では,線のスタイルの変更の方法を説明する.
長方形
指定した2点を対角線とする長方形を描くことができる.
1 |
\tikz \draw (0,0) rectangle (2,3); |
と2点で”rectangle”を挟んで記述すれば,
と2点,
を結んだ線分を対角線とする長方形となる.
複数の描画をする
1行で図の記述が終わる場合には, \tikz を前に書くことで描画できるが,複数行の命令が必要な場合にはこの記述ではうまく動かない.
1つの図の中に複数行の命令で描画したい場合には,”\tikz”を前に書く代わりに,
1 2 3 4 |
\begin{tikzpicture} \draw (0,0)--(2,0); \draw (0,1)--(2,1); \end{tikzpicture} |
とすれば,
と表示される.
このように,複数行の記述が必要な場合には,
1 2 3 4 5 |
\begin{tikzpicture} 描画; 描画; …… \end{tikzpicture} |
の形で記述すれば良い.
図に文字を書き込む方法
以下のように“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; |
ように,折れ線の記述の中でも正しく機能し,上と同じ図が描ける.
曲線の描き方
次に,曲線の描き方を説明する.
円の描き方
曲線の中でも円を描く機会は多いであろう.例えば,
1 2 3 4 |
\begin{tikzpicture} \draw(0,0) circle (1); \draw(1,1) circle (2); \end{tikzpicture} |
と記述すれば,
と表示される.すなわち,点中心,半径
の円は
1 |
\tikz \draw (a,b)circle(r); |
と記述することにより描くことができる.
楕円の描き方
例えば,
1 |
\tikz \draw (0,0) circle [x radius=2, y radius=1, rotate=30]; |
と記述すれば,
と表示される.
すなわち,点中心,第1成分の径の長さが
,第2成分の径の長さが
の楕円を
傾けた図形は
1 |
\tikz \draw (a,b) circle [x radius=p, y radius=q, rotate=t]; |
と記述することにより描くことができる.
始点と終点への向きを指定する方法1
例えば,
1 |
\tikz \draw (0,0) to [out=45,in=135] (4,0); |
と記述すれば,
と表示される.
すなわち,点から偏角
の方向へ出て,点
へ偏角
の方向から入る曲線は
1 |
\tikz \draw (a,b) to [out=t,in=s] (p,q); |
と記述することにより描くことができる.
始点と終点への向きを指定する方法2
今の図の曲線を回転させる場合には,
1 |
\tikz \draw (0,0) to [out=45,in=135,relative] ({2*sqrt(2)},{2*sqrt(2)}); |
と曲線のオプションに”relative”を記述することで,この2点を基準の軸とした偏角で表すことができる.これにより,
と表示される.
すなわち,点から点
の向きを基準として,点
から偏角
の方向へ出て,点
へ偏角
の方向から入る曲線は
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”の直後に記述すれば,
となる.
なお,終点を単に
に移して
1 |
\tikz \draw (0,0) to [out=45,in=135] ({2*sqrt(2)},{2*sqrt(2)}); |
と記述した場合には,
と表示される.
これは
to [out=45,in=135] で指定していると
はあくまで
軸正方向からの偏角なので,単に終点の位置を移動させても図形自体が回転するわけではない.
参考文献
以下はLaTeXに関しての参考文献である.
著者の奥村氏は日本におけるTeXの第一人者であり,本書はLaTeX初心者から中級者まで幅広い層に役立つLaTeXの教科書である.
非常に詳しく解説が載っており,しっかり理解して習得することができる.
本書にはDVD-ROMが付属しており,LaTeXのインストール用がすぐにできるので,LaTeXをはじめる人が苦戦しがちな環境整備がすぐにできる.
ただし,本稿の内容のTikZについての記述はないので注意.
コメント