TeXに直接作図しよう!2

すでにTikZがインストールされていて,TeX文書ののコンパイルにはdvipdfmxを使うものと仮定して話を進めていきます。

パッケージを読み込もう

TikZをLaTeXで使うには,プリアンブルに次のように書く必要があります。

これでよさそうなのですが,これだけではdvipdfmxではうまく表示できません。画像関係の扱いはソフト固有の処理があるらしく,TikZに「dvipdfmxを使いますよ」と教えてあげなければなりません。そこで次の一行を加えます。

あるいは,次のようにgraphicxパッケージを読み込むのであれば上の一行は不要になります。

結局,

または

とプリアンブルに書くことで,TikZを使う準備が整いました。

必要に応じてTikZのライブラリーも読み込もう

\usepackage{tikz}だけではすべてのTikZの機能が使えません。この記事では必要に応じてまた説明しますが,例えば「calc」というTikZのライブラリーに含まれている機能が使いたければ,

のようにプリアンブルに書く必要があります。

TikZコマンドの書き方

TikZのコマンド(\pathや\drawなど)はtikzpicture環境の中に記述します。tikzpicture環境の外に書くとエラーが出ます。

\tikz{…}という書き方もあるのですが,基本的には,TikZのコマンドは必ずtikzpicture環境の中に記述するものだと思っておいてください。また,各行の最後にはセミコロン「;」を打ってください。ただし,行の最後というのは,改行の位置ではなく,ひとつのコマンドの最後という意味です。

点の座標(coordinate)のプリミティブな定め方を知る

TikZでは直線・曲線を引いたり,円を描いたりするときに,点の座標を指定します。点を指定するだけではまだ画面に何も表示させられませんが,最初が肝心ですので辛抱強く耐えてください。その指定方法には次のものがあります。

直交座標系(デカルト座標系:Cartesian coordinates)

Rendered by QuickLaTeX.com

中学・高校の数学でもよく使う座標系なのでなじみがあるでしょう。右向きの上向きが正の向きです。スクリーン座標系(下向きが正)ではありません。x座標がay座標がbなら,

と書きます。単位は付けても付けなくてもかまいません。付けなければ多分[cm]になります。

極座標(Polar coordinates)

Rendered by QuickLaTeX.com

高校数学の最後のあたりで習い,しかも文系なら習わないかもしれない,でも大学入試でサッと使えるとたまに便利な,あの極座標です。原点Oからの距離がrで,x軸の正の向きとのなす角がθとなる点を

と書きます。高校で習う極座標の書き方は(r, θ)ですが,それとは違うので,注意しておいてください。また別の書き方として,

と書くこともできます。ただし,上の二つのいずれの場合もrには単位(px, cm など)をつける必要があります。(付けなくてもコンパイルは通りますが,直交座標に単位を明示しなかったときとは違う単位になります。)

直交座標で単位を明示しないときと同じ単位を使う場合は,

とでき,rに単位をつける必要はありません。(逆に単位を付けるとコンパイルが通りません)

ある座標に名前をつける

数学でも「三角形ABCの重心をGとおく。」のように,点に名前をつけることがありますが,TikZでも点の座標に名前をつけると便利なことがあります。名前を付けたい座標を「(座標)」,名前を「name」とすると,

というコマンドを書きます。この省略形の

と書くこともできます。「(座標)」の部分には,直交座標(a,b)でも極座標(θ:r) or (xy polar cs:angle=θ, radius=r)でも,どんな指定方法の座標でも入ります。「name」は何文字でも構わないのですが,数学の慣習的に大文字のアルファベット一文字にすることが多いでしょうか。例を挙げますと,

というコマンドを書いておけば,後ろの場所で「(0, 0)」の代わりに「(O)」と書くことができます。

プリミティブな相対座標

相対的な座標を用いる方法は他にもありますが,まずはtikzパッケージを読み込んだだけで使える相対座標を説明します。相対座標は《現在の座標》からの変位を,

で表します。例えば,点Pがすでに与えられているとき,点Pからx軸方向にa, y軸方向にbだけ移動した点にQという名前を付けたければ,

と書けます。直交座標に限らす,極座標でも大丈夫です。これは,\pathコマンドの後ろが左から順番に解釈されるときに,まず(P)で《現在の座標》が点Pになり,次に++(a, b)で《現在の座標》を(a, b)分変位させ,最後にcoordinate(Q)で《現在の座標》にQという名前をつけているのだと考えることが出来ます。ですので,そのように解釈できない次のコードは不正です。

\coordinate (Q) at(P) ++(a, b);

++(変位)」は《現在の座標》に《現在の座標》を変位させた後の座標を代入しますが,

とすると《現在の座標》は変更されません。

例えば,「++(変位)」の場合,《現在の座標》が次々に移っていくので,

と同じ図形を相対座標を用いずに書くなら,

Rendered by QuickLaTeX.com

となりますが,「+(変位)」だと,

と同じ図形を相対座標を用いずに書けば,

Rendered by QuickLaTeX.com

となります。これは《現在の座標》がずっと(1,1)のまま変わらないので,「+(変位)」では(1,1)から変位させたものが計算されるためです。

いずれまた,もっと複雑な点の指定方法を説明しますが,とりあえず次回は図形の描画から説明を始めましょう。

TeXに直接作図しよう!1

TeXを好んで使うのは,主に「物理・数学な人」と「プログラマーな人」ですね。前者は言うまでも無くTeXの独壇場ともいえる高度な数式の扱いによるものですが,後者は一体なぜなんでしょう。

世の中には妄信的に,MS Wordを使いこなせる人が偉い,と考える人が少なからずいて,そういう人たちに言わせれば

  • 「いまどきWordが主流なんだよ(笑)」
  • 「かっこつけてTeXを使ってるだけだろ」
  • 「つーかTeXとか聞いたことねーし」

みたいな答えが返ってきてしまいますが,プログラマーがTeXを好むのは,別に「使えたらかっこいいから」などといった安っぽい話ではなく,ただ,便利だから,それ以上でもそれ以下でもありません。

プログラマーな人はテキストファイルが好き

一般人はファイルの種類を区別するのに「.docx」や「.jpg」のような,いわゆる拡張子で分類するかもしれません。しかしプログラマーはそうではないのです。プログラマーの目には,ファイルの種類は二個にしか映りません。「テキストファイル」と「バイナリファイル」の二種類です。

ざっくりした説明をしましょう。「テキストファイル」とは,メモ帳のようなテキストエディタで開いたときに文字の列として人間が読めるものです。一方,「バイナリファイル」は文字の列ではなくプログラムを制御するためのコードの列であるため,無理やりテキストエディタで開くと文字化けしたような感じになります(下図を参照)。

多くのワープロソフトでは保存形式にバイナリファイルが用いられています。これはソフトウェアメーカーが「専用形式にすることでソフトのシェアを独占できる」と考えたから,というのも多少はあったかもしれませんが,それ以上に複雑な機能を持つソフトを制御するのにはバイナリファイルを使うほうが効率がよかったのでしょう。

繰り返しますが,バイナリファイルは人間の目で内容を確認することが出来ません。プログラマーは得体の知れないファイルを扱うのが好きではないのです。ファイルが破損して開けなくなったり,そのバイナリファイルを読み書きするソフトが市場から消えたときに,対処できないからです。何より,テキストファイルであれば,自分でファイルを検索したり管理したりするためのツールが簡単に作れるのです。そういう訳でプログラマーはTeXを好む傾向にあります。

でもWord方が優れている点もある

数学者なら知りませんけど(笑),普通の文書には図が挿入されることが多いですね。もちろんTeXでも画像の挿入は行えます。以下はdvipdfmxでコンパイルすると仮定したときのLaTeXで画像を挿入するためのコードのサンプルです。

このように記述して,TeXファイルと同じディレクトリ(フォルダー)に「graph1.png」を置いておけば文書中に挿入されます。

もちろんこのまま印刷したりPDFに出力するのであれば問題ないのですが,TeXファイルのまま他人に送らなければならないとき,トラブルが発生する可能性があります。

急いでいると人間はミスを犯します。「早く送れ!!」といわれたら,あせってTeXファイルだけ送って,挿入している画像ファイルは送り忘れてしまうかもしれません。こんなミスはWordでは起きるはずがないですよね。文書に挿入した画像は通常「.doc(x)」ファイル内に格納され,文書が「.doc(x)」ファイルひとつで完結しているからです。

ていうか,画像ファイルってバイナリファイルだよね

バイナリファイル怖い!それはともかく,出来ればひとつの文書はひとつのファイルで完結させたい!

そんなわがままな人のためにか,一応TeXには簡単な作図を行うための機能が用意されています。picture環境です。これを使えば直線・楕円・文字(数式)・ベジェ曲線を用いて自由に作図が出来るよ!やったね!

ベジェ曲線が使えるんだからなんでも描ける!!!……,はずはない。そりゃがんばればy=exsinxのグラフを近似したものが描けるかもしれない。しかしそれは人間の手で保守できるコードではありません。実はy=e2xsinx

のグラフが欲しかったんだ~~!!,となったときに一から描き直さなければなりません。もうTeXなんてオワコンじゃん!!!と,思いきや,TeXには便利なパッケージが用意されているのです。

↓ここからが本題です↓

TeXで図を描くためのパッケージはいくつかありますが,ここでは最近(個人的に)熱いTikZを使うことにします。というのも,TikZはW32TeXやTeX Liveといった主要なTeXディストリビューションと一緒に標準でインストールされているので,TikZを使っても十分な可搬性が確保できるからです。同様のパッケージにはPSTricksがありますが,これはdvipdfmxでコンパイルできないので,さよなら(⌒ー⌒)ノ~~~。

PGFとTikZの関係は,PGF(Portable Graphics Format)が描画のための基本となるコマンドを用意し,TikZ(TikZ ist kein Zeichenprogramm)がそのラッパーとして,複雑な図を簡単に表現するための構文を用意しています。TikZはMetafontやPSTricksに少なからず影響を受けていますが,よく言われるのは,TikZは「どう描くか」ではなく「何を描くか」に焦点が当てられているため,TeXの組版機能との親和性が非常に高い,ということです。

とりあえずTikZが使えるか確認しよう

おそらくあなたのTeX環境にはすでにTikZがインストールされているはずです。取りあえずTikZのサンプルを示すので,意味は考えずにコンパイルしてみてください。ただし,dvipdfmxを使うことを想定しています。

以下のようになれば正しくTikZがインストールされているはずだ。

Rendered by QuickLaTeX.com

コンパイルエラーになる場合は,残念ながらTikZがインストールされていないようです。その場合は手動でTikZをインストールするか,あるいは最新のW32TeXTeX Liveをインストールしなおせば良いでしょう。

それでは次回から,TikZを使った作図の方法を説明していきます。

1 2 3 4