どうやって図を書くか
桂田 祐史
[email protected] 2013年7月18日, 19日 (訂正版)
1 はじめに
• 自分でソフト (例えば Mathematica) を使って描く
→今回はこれを推奨する。
• 自分で TEX の機能(picture 環境やその拡張)を使って描く
→自由度が低いような気がしている…
• 自分で手を使って描いたものを電子化する
• 誰かが描いたものを電子化する
→著作権の取扱いに注意する必要がある。
電子化の方法としては
• スキャナー(使えるのものが身近にある?)
• デジカメ
既に電子化されて画像になっているものから、適当な部分を切り取るには、プレビューの[ファイル] メニューの「スクリーンショットを撮る」を使うと良い。
2 TEX への取り込み方
率直に言って、TEXは最初の設計時に図のことをあまり考慮していなかった感じで、TEX で図を扱 うのはやや不便に思われる。従来はPostScript データにしてから取り込むのが普通であったが、最近 は直接画像データを取り込めるようになりつつある。
以下、二つの方法を紹介する。2.2 で説明した方が新しく、特に Mathematica で作ったグラフィッ クスを取り込むのに適していると思われる(Mathematica の最近のバージョンの生成する PostScript データは、サイズが巨大で、TEXでうまく処理できないことがある。Mathematicaで3次元空間内の曲 面を使う場合は、JPEGで出力して、それをPostScript に変換するなどの迂回手順が必要になる。円 錐曲線の議論をする場合、大抵は線画だけで済むので、Mathematicaでも迂回は不要かもしれない。)。
伝統的に、TEX に取り込む図はPostScript 形式で作ると良い、とされてきた。
プリアンブルに
\usepakage[dvips]{graphicx}
と書いておいて、
\includegraphics[width=10cm]{mygraph.eps}
mygraph.eps を取り込むTEX 文書の例
\documentclass[12pt]{jarticle}
\usepackage[dvips]{graphicx}
\begin{document}
\begin{figure}[htbp]
\centering
\includegraphics[width=10cm]{mygraph.eps}
\caption{三角形}% 図の説明
\end{figure}
\end{document}
JPEG画像はPostScript に変換して取り込むのが簡単である。変換するには、ターミナル1で、次の
ようなコマンドを実行する。
mygraph.jpg をmygraph.eps に変換する
jpeg2ps mygraph.jpg > mygraph.eps
ここで用いた jpeg2psは MacPortsがインストールされていれば、次のコマンドで簡単にインストー ルできる。
$ sudo port install jpeg2ps
2.2 画像ファイルの取り込み (主流になりそう?)
画像ファイルには、PNG, JPEG, PDF など色々ある。(デジカメのデータはJPEG (とその変種) が 普通だと思われる。PDFはPostScriptと親戚で画像ファイルというべきではないかもしれないが、と りあえずこちらに分類しておく。Mathematica で描いた図を画像ファイルにするときはPDF が良い ように感じている。)
プリアンブルに
\usepackage[dvipdfmx]{graphicx}
と書いておいて、画像ファイルを取り込みたいところで
\includegraphics[width=10cm]{mygraph.pdf}
とすれば良い。
蛇足的な注意 TEXでは、PostScriptメインの時期が長かったためか、\usepackage[dvips]{graphicx} を暗黙の仮定としている伝統がある。他の設定とバッティングしないように調整が必要なことがある。
以下は私がひっかかったもの。
1. \usepackage[dvips]{color} (テキストに色をつける) は、\usepackage[dvipdfmx]{color} に変更する(これはとても有名な話)。
2. (これは個人的な事情でマイナーすぎるかもしれないが参考まで) gouji.sty は内部で
\RequirePackage[dvips]{graphicx}
としているので、矛盾が生じる。dvips をdvipdfmxに書き換えれば良い?
3 Mathematica で作図する
曲線などは、Plot[]やParametricPlot[] などで描けば良い(良く知られている事項)。
点や線分、円などは、などのグラフィックス・プリミティブを用いて描くのが便利かもしれない。以 下、それを説明する。
点の座標はリスト{x, y}として定義する。F1(−√
3,0), F2(√
3,0), P(2 cosπ4,sinπ4), 0(0,0)とする。
f1 = {-Sqrt[3], 0}; f2 = {Sqrt[3], 0}; p = {2 Cos[Pi/4], Sin[Pi/4]};
o = {0, 0};
点、線分、円を、グラフィックス・プリミティブPoint[],Line[],Circle[]を用いてv定義する。「先 頭の文字は大文字を使わないように」と言われているので、名前の付け方が悩ましい。ここでは $を 使ってみた(悪趣味かも知れない)。
$F1 = Point[f1]; $F2 = Point[f2]; $P = Point[p];
$F1P = Line[{f1, p}]; $F2P = Line[{f2, p}];
r = 2; $C = Circle[o, r];
ここまで定義した点F1, F2, P,線分 F1P, F2P,円Cからグラフィックス g1 を作る。
g1 = Graphics[{$F1,
$F2,
$P,
$F1P, $F2P, $C}, Axes -> True]
(最後にAxes->True とすることで座標軸を描いている。これは好みの問題かもしれない。)
点の説明などの文字列をつけておくのが良いかもしれない。そうするためには、Text[]を使う。
g1 = Graphics[{$F1, Text["F1", f1 - {0, 0.1}],
$F2, Text["F2", f2 - {0, 0.1}],
$P, Text["P(x,y)", p + {0.1, 0.1}],
$F1P, $F2P, $C}, Axes -> True]
(何だか楕円を描くことの方が楽ですね…)
g2 = ParametricPlot[{2 Cos[t], Sin[t]}, {t, 0, 2 Pi}];
g1,g2 を合わせて一つの図を描く。
g = Show[g1, g2, PlotRange -> All]
PlotRange->All は、指定したグラフィックスをすべて描画できる範囲を確保する指示であるが、今の 場合は実は必要がない(g1の範囲は g2の範囲よりも大きいので)。
これをファイルに出力するには
Export["mygraph.eps", g]
あるいは
Export["mygraph.pdf", g]
のように Export[]を用いる。
ファイル名の末尾の「拡張子」を標準的なものにしておけば、自動的にフォーマットが選択される (“.jpg” なら JPEG, “.eps” なら EPS (Encapsulated PostScript), “.png” なら PNG, “.pdf” なら PDF (portable document format))。
実はText[] はかなり高機能である。Text[Style[テキスト, 大きさ], 座標, オフセット] とか、
色々工夫が出来る。
「テキスト」にも単なる文字列でなく、Mathematicaの式が書ける。下付き文字のあるF1 は、Fの 後に Control + で入力出来る(あるいはSubscript[F,1]とする。Mathematicaの[ヘルプ]メニュー の検索で、「二次元式の入力」を見てみよう))。P(x, y)を出力したい場合はP[x,y]とするとか。
g1 = Graphics[{$F1, Text[Style[Subscript[F, 1], Large], f1, {-1, 1}],
$F2, Text[Style[Subscript[F, 2], Large], f2, {0, 1}],
$P, Text[Style[P[x, y], Large], p, {-1, -1}],
$F1P, $F2P, $C}, Axes -> True]
F1 F2 PHx,yL
-2 -1 1 2
-2 -1 1 2
図1: eps (昔はこれ一択だったのですが)
図2: png (今はこれかpdfがおすすめ?)
• 点を大きくするには、事前にPointSize[数値]をつける。
• 色をつけるには、Red, Green, Blue, Black, White, Cyan, Magenta, Yellow, Brown, Orange, Pink,Purpleなどのように名前を指定するか、Hue[]などの関数を使う。Hue[] の使い方はオ ンライン・マニュアルを見ること。
• 線の太さはThin,Thickという簡単な指定以外に、Thickness[数値] で細かく指定できる。
Graphics[{Red, Thin, Line[{{0, 0}, {0, 1}}],
Blue, Thick, Dotted, Line[{{1, 0}, {1, 1}}], Green, Thickness[0.02], Line[{{2, 0}, {2, 1}}]}]
• 例えばPlot[]でPlotStyle->{ }で、色の指定、線の太さ、線種の指定が出来るけれど、それ と同様のことが指定できるわけだ。
4 やってみよう ( レポートの L
ATEX 文書の叩き台を作る )
Mathematica で
f1={-Sqrt[3],0}; f2={Sqrt[3],0}; p={2 Cos[Pi/4],Sin[Pi/4]};o={0,0};
$F1=Point[f1]; $F2=Point[f2]; $P=Point[p];
$F1P=Line[{f1,p}]; $F2P=Line[{f2,p}];
r=2; $C=Circle[o,r];
g1=Graphics[{$F1, $F2, $P, $F1P, $F2P, $C}, Axes->True]
g2=ParametricPlot[{2 Cos[t], Sin[t]}, {t, 0, 2 Pi}];
g=Show[g1, g2, PlotRange -> All]
のように図を描いた後に
Export["Documents/graph.pdf", g]
で画像ファイルを保存する。
TeXShop を使って、次のような TEX ファイルを作ってみよう。
myreport.tex
\documentclass[12pt]{jarticle}
\usepackage[a4paper]{geometry}
\usepackage[dvipdfmx]{graphicx}
\begin{document}
\title{総合数理ゼミナール レポート}
\author{自分の氏名}
\date{2013年7月30日 (変更するかも)}
\maketitle
\section{はじめに}
ゼミでは、中村 \cite{中村} の輪講を行った。
\begin{figure}[htbp]
\centering
\includegraphics[width=10cm]{graph.pdf}
\caption{$\mathrm{F_1P}=\mathrm{F_2P}$ を満たす点 $\mathrm{P}$ の軌跡は楕円}
\end{figure}
\begin{thebibliography}{9}
\bibitem{中村}
中村 滋, 円錐曲線 --- 歴史とその数理 ---, 共立出版 (2011).
\end{thebibliography}
\end{document}
この TEX 文書で作ったPDF は、http://www.math.meiji.ac.jp/~mk/zemi2013/myreport.pdf に置いてある。