要約
この講義では、TikZ を使って文書の中で図を描く方法を学ぶ。LaTeX で描くことで得られるもの(本文の書体と数式、劣化のない拡大縮小、ソースでの修正、バージョン管理)とその代償、そして R や Python からグラフを書き出したほうがよい場合を説明する。babel の言語モジュールが記号をアクティブな短縮記法に変える言語(たとえばスペイン語)の文書では、TikZ に専用の babel ライブラリが必要であり、それがないと最初の矢印で連鎖的なエラーが起きることを示す。tikzpicture 環境と \tikz 命令、直交座標・極座標・相対座標、パス(線分、長方形、円、円弧、曲線)を紹介し、線の各種オプションと arrows.meta ライブラリの矢じりを見ていく。名前付きノード、アンカー、positioning ライブラリによる相対配置を学び、独自のスタイルで記法を固定し、\foreach で繰り返しを扱う。フローチャート、力の図、概念の木、構文木、関数のグラフを作り、plot が角度を度で測ることに注意を促す。データのグラフのための pgfplots を紹介し、図をフロートに入れ、三つの縮小方法を比較する。最後に、よくあるエラー、コンパイル時間、避けるべきことを扱う。
学習目標
- ある図を TikZ で描くか、pgfplots で描くか、データ分析のプログラムから書き出すかを、理由を挙げて判断できる。
- TikZ を使う文書のプリアンブルを準備し、babel ライブラリがいつ、なぜ必要かを説明できる。
- 絶対座標・極座標・相対座標で描き、
+と++を含む座標の列が描くパスを予測できる。 - 名前付きノードを positioning ライブラリで配置し、一度だけ定義した独自スタイルを用いて図式を組み立てられる。
- 図をキャプションとラベル付きのフロートに入れ、文字がどうなるかを予測しながら縮小し、ログからよくあるエラーを診断できる。
なぜ LaTeX で図を描くのか
これまでの講義では、文書の外で作った画像を挿入してきた。これに対して TikZ の図は、ソースの中に命令として書かれ、エンジンが本文と同じように組版する。ここから四つの利点が生まれる。第一は組版上の統一である。図のラベルは本文と同じ書体・同じ大きさで組まれ、ラベル中の数式は、それを論じる段落の数式とまったく同じになる。第二は劣化のない拡大縮小である。結果はベクター画像なので、拡大してもピクセルが現れない。第三は、図がソースで修正できることである。ラベルを変える、点を動かすといった修正は一行を変えるだけで済み、描画ソフトに戻ることも元のファイルを探すこともない。第四は、図が本文と一緒にバージョン管理されることである。図はテキストそのものなので、同じファイル、同じバックアップ、同じ履歴の中に残る。
とはいえ、これらの利点には代償がある。TikZ は独自の文法をもつ言語で、マニュアルは千ページを超える。描画ソフトならマウスで一分で済む図が、ここでは最初のうち三十分かかることもある。したがって使い分けが必要である。少数の形とラベルからなる模式図、ダイアグラム、幾何学的な図は TikZ の本領である。一方、データのグラフは、TikZ の上に構築され本講義の最後で紹介する pgfplots で描くほうがよい。データを R や Python で分析しているなら、分析に使ったそのプログラムで描くのがよい。グラフを PDF で書き出し、画像の講義で見たように挿入すれば、グラフはそれを生み出したデータと分析に結びついたままになる。どちらの言語にも、グラフを LaTeX 用のコードとして書き出す機能(R の tikzDevice パッケージ、Python の matplotlib の PGF 出力)があり、ラベルに文書の書体を使わせることができる。
コンテンツを読み込んでいます…