[LaTeX]フォントを使わずセンター試験丸数字

塾の先生をするとき,授業で使うプリントを作らないければならなかったりします。そんなとき,センター試験の問題を取り上げるなら,ただの丸数字じゃなくて,センター試験本試の選択肢に使われるような,縦長の丸数字をTeXでも使いたくなりますよね!
その解決方法としては,フォントを作るのが一般的なようで,こことかが参考になりますが,フォントファイルを使うとインストールが難しく,可搬性が著しく低下してしまうので,ここではスタイルファイル(.sty)だけで完結した,お手軽パッケージを作りました。

インストール

まず,https://raw.github.com/staureus/jacntmrk/master/jacntmrk.styをパソコンに保存します。例えばIEなら,上のリンクを右クリックして,「対象をファイルに保存」を選択します。

続いて,ダウンロードした「jacntmrk.sty」をLaTeXが認識できる場所に移動させます。例えば,一番簡単な「LaTeXが認識できる場所」は,「jacntmrk.sty」を使いたいTeXファイル(.tex)と同じディレクトリ(同じフォルダー)です。

プリアンブルに書くこと

jacntmrk.styは,丸数字を描画するのにTikZを使用しているため,使っているTeX環境によってドライバーを指定する人があります。ただ,直接TikZのドライバーを指定しなくても,graphicxのオプションで指定しておけば,勝手にTikZが判断してくれます。つまり,次のようにプリアンブルに書きます。
日本語でLaTeXを書いている人は最近たいていがdvipdfmxを使っているので,まずはdvipdfmxを使う場合から

また,dvipsを使う場合はこうなります。

使い方

の形で,縦長の丸の中にxが入ったものを表示します。
xとして有効なのは,今のところ,「0」「1」「2」「3」「4」「5」「6」「7」「8」「9」「a」「b」「c」「d」「e」「-」「\pm」「±」のみで,それ以外は中身のない丸になります。

サンプル

文字の大きさや,文字の色に従って,いろいろ都合よく変化してくれます。\labelenumiを\renewcommandをすれば,箇条書きの部分を

2013-04-28 00_49_48-centermark.pdf - TeXworks
(クリックで拡大します。)

TeXに直接作図しよう!3

前回までに具体的に分かっている点の座標を指定することができるようになったので,今回はいよいよ図形を描画していきます。LaTeXのコンパイルにはdvipdfmxを使うものと仮定しますと,実際にTikZを試してみるときは,以下のようなコードのtikzpicture環境内にTikZのコマンドを記述してください。各コマンド行の最後にはセミコロン「;」をつけるのを忘れないように気をつけてください。(しばしば意味不明なエラーメッセージの原因となります。)

はじめに

TikZでは図形を扱うときはいつも\pathコマンドが使えて次のように書けます。

《パスオプション》には,線を描画したいときはdraw,塗りを描画したいときはfillなどと記述します。線と塗りの両方が欲しいときは,二つをコンマ区切りでdraw, fillとします。逆に,≪パスオプション≫を指定しなければデフォルトでは何も描画されません。ただし,領域は確保されるので,見えないパスが作られていると考えればよいかもしれません。《パスの定義》とは,例えば直線(線分)なら(0,0)--(1,2)のようなものです(それが今回のメインテーマです)。

もちろん\pathコマンドでもいいんだけど

いちいち\path\path,……と書いていたらしまいにゲシュタルト崩壊してしまうので,親切にもこれらの構文にはシンタックスシュガーというか省略形が用意されています。今回使うのは次のものです。

これらのコマンドにもオプションを指定できますが,今回は線の太さも色も塗りもデフォルトで行きます。

《パスの定義》の書き方

《パスの定義》は一般的に次のように書きます。

ちょっと見にくいですが,《座標と座標の繋ぎ方》の具体例を見てからもう一度上の一般化を見れば分かるはずです。

《座標と座標の繋ぎ方》について

「繋ぎ方」とはつまり,二つの点を直線で結んだり,ベジェ曲線で結んだり,あるいはそれを対角の頂点とする長方形を描いたりすることです。

直線(正確にいえば線分)と折れ線

一番良く使うのはやはり直線(線分)でしょうね。二点間の線分は次のように表します。

例えば

とすると,下の図の太い線の形になります。

Rendered by QuickLaTeX.com

これに「塗り」をつけようとする人は少ないかもしれませんが,一応やっておくと

としますと,

Rendered by QuickLaTeX.com

が得られます。Adobe Illustratorと同じふるまいで,閉じていないパスに「塗り」をつけると,「パスの開始点と終了点を結んだ線分」と「パス」に囲まれた領域が塗りつぶされます。(オプションについてはまた別の場所で詳しく説明します。)

閉じたパス

先ほど「閉じていないパス」と言いました。では閉じたパスを作るには?これはどうでしょうか?

おお,いいんじゃないですか!

Rendered by QuickLaTeX.com

でも,(0,1)付近を拡大してみると……

Rendered by QuickLaTeX.com

ああ,これでは残念。クソーッ!ちゃんと閉じたパスにするにはいったいどうしたらいいんと言うんだ!?

ごめんなさい茶番でした。閉じたパスにするには

と書きます。--cycleの間にはスペースが入っても構いませんが,--cycleはセットです。cycleだけでは使えません。上のコードを修正すると,

となり,これを描画すると

Rendered by QuickLaTeX.com

(0,1)で無事パスが閉じましたね。

それでは極座標と閉じたパスを使って星マークを書いてみましょう。

Rendered by QuickLaTeX.com

長方形とグリッド

長方形のパスを作るには,

と書きます。ただし,《座標1》と座標《座標2》は長方形の対角の頂点の座標です。「右上と左下」の組でも,「右下と左上」の組でも構いません。例えば

とすれば,

Rendered by QuickLaTeX.com

の太線の形に描画されます。

長方形と同様にしてグリッドが描けます。

グリッドとは,方眼紙みたいな格子状の線で,作図の補助線として使うことが多いです。次のようなサンプルです。

とすれば,

Rendered by QuickLaTeX.com

となります。
gridはしばしばオプションにhelp linesを指定します。

そうすると線の色と細さが補助線用になります。

Rendered by QuickLaTeX.com

さらに,オプションでstep=***と指定すると,グリッドの間隔が変更できます。

Rendered by QuickLaTeX.com

簡単な曲線

曲線を描くための一番簡単な方法はtoとそのオプションのin, outを使う方法です。

の形で書き,≪角度α≫は≪座標1≫から出る線の≪座標1≫における傾きをx軸の正の向きから反時計回りに計った角度(単位:°)で表し,≪角度β≫は≪座標2≫に入る線の≪座標2≫における傾きをx軸の正の向きから反時計回りに計った角度で表したものです。例えば,

と書くと,

Rendered by QuickLaTeX.com

の太い線の部分の形が得られます。

また,オプションにrelativeを指定することができます。

この場合は≪角度α≫≪角度β≫を,x軸の正の向きからではなく,≪座標1≫から≪座標2≫に向かうベクトルを基準として,そのベクトルから反時計回りに計った角度で表すことができます。
先ほどの例にオプションrelativeをつけたらどうなるか見てみましょう。

とすると,

Rendered by QuickLaTeX.com

上の図の太い線の部分の形が得られます。

直線(--)とtoパス(to[out=*,in=*])を組み合わせるだけで,結構自由に作図できるようになります。例えば,

とすれば,

Rendered by QuickLaTeX.com

上の図の線が得られます。

ベジェ曲線

toパスを使った曲線は簡単に書けますが,あまり自由な曲線が描けません。そこでベジェ曲線を使います。ベジェ曲線はAdobe IllustratorやオープンソースのInkscapeのようなベクター画像ソフトで広く採用されていて,慣れるまではなかなかうまく書けませんが,慣れたら目をつむっていても思った通りの曲線が描けるようになります多分。ベジェ曲線についての説明は,TTEditやOTEditの販売をする武蔵システムのサイトがわかりよいです。

ベジェ曲線は次の形式で表します。

これによって表される曲線は,≪座標1≫と≪座標2≫を結ぶ線で,≪座標1≫付近で≪座標1≫と≪制御点1≫を結ぶ直線に接し,≪座標2≫付近で≪座標2≫と≪制御点2≫を結ぶ直線に接する。また,数学的意味を無視して直観的な話をすれば,≪制御点1≫が≪座標1≫から遠ければ遠いほど,曲線の≪座標1≫側は≪座標1≫と≪制御点1≫を結ぶ直線に引き寄せられ,≪制御点2≫が≪座標2≫から遠ければ遠いほど,曲線の≪座標2≫側は≪座標2≫と≪制御点2≫を結ぶ直線に引き寄せられる感じになる。以下の図では黒丸が≪座標n≫に当たり,白丸が≪制御点n≫を示す。サンプルを示すのでいろいろ値を変えて実験しながら慣れていってください。

Rendered by QuickLaTeX.com

ベジェ曲線と相対座標

ベジェ曲線で線を描くときは,前回説明した相対座標で制御点を表すと便利かもしれません。

この時,≪座標1≫から見た≪相対座標1≫が≪制御点1≫になり,≪座標2≫から見た≪相対座標2≫が≪制御点2≫になります。特に極座標の相対座標を用いるのが分かりやすく,次のような感じになります。

Rendered by QuickLaTeX.com

相対座標で制御点を指定すると,≪座標1≫≪座標2≫を移動させても曲線の形が変わらないので,同じ図形を複数回ずらして使う場合などに便利です。(scope環境でくくってxshift,yshiftしてもいいですが)

ベジェ曲線の練習ではしばしばハートマークを書かせる本が多いので,ここでもハートマークを書いてみましょう。

Rendered by QuickLaTeX.com

円弧・楕円弧

円弧の表し方は

または

です。上のほうが読みやすいかもしれませんが,慣れたら下のほうが便利だと思います。これによって表される円弧は,半径がrの円の,角度αからβに対応する部分(ただし,α,βは単位°)で,開始角αに対応する点が≪座標P≫に一致します。そして,≪現在の座標≫は≪終了角β≫に対応する点に移ります。例えば

とすれば,

Rendered by QuickLaTeX.com

の太線の部分の図形が得られます。なお,α < βなら,円弧は反時計回りに描かれ,β < αなら,円弧が時計回りに描かれるということは明らかでしょう。

また,楕円弧,つまり楕円の一部分も同様に表すことができます。その場合は

または

とします。ただし,楕円の上の角α,βに対応する点は,≪x軸半径rx≫または≪y軸半径ry≫を拡大・縮小して正円にし,そこで角α,βに対応する点を取り,それ再び元の楕円に戻すと得られる点,になります。言葉で説明するのは難しいので次の例を見て理解してください。ただし,xscale, yscaleオプションは,それぞれx軸方向,y軸方向に図形を拡大・縮小します。

Rendered by QuickLaTeX.com

放物線

放物線はオプションの指定などがいろいろ複雑なので,順番に見ていきましょう。まずはオプションも何もつけない一番簡単な形。

≪座標1≫を頂点とし,≪座標2≫を通る,上または下に凸な放物線の,≪座標1≫から≪座標2≫の間の部分です。上または下に凸な放物線はy=a(x-p)^2+qの形で表せるので,頂点ともう一点を与えれば,一意に定まります。

Rendered by QuickLaTeX.com

まずbend at startと,bend at endオプションがあります。

オプションにbend at startを指定するとデフォルトと同じで≪座標1≫が放物線の頂点に,bend at endを指定すると≪座標2≫が放物線の頂点になります。

Rendered by QuickLaTeX.com

今までは放物線を軸で切って半分になったものでしたが,次に完全な放物線を描きましょう。

これが表すのは≪座標2≫を頂点とし,≪座標1≫と≪座標3≫を通る放物線です。ただし,これは,

の二つを合わせたものなので,≪座標1≫と≪座標3≫をうまくとれば,

Rendered by QuickLaTeX.com

のように一続きの放物線になりますが,変な取り方をすれば

Rendered by QuickLaTeX.com

変なことになります。逆にうまくとれば,≪座標1≫と≪座標3≫のy座標は必ずしも同じである必要はありません。

Rendered by QuickLaTeX.com

頂点の座標を計算せずに放物線の高さを指定することもできます。

≪座標1≫と≪座標2≫を通り,高さが≪高さh≫の放物線です。≪座標1≫と≪座標2≫のx座標の平均に頂点がきます。ですので,基本的には,≪座標1≫と≪座標2≫のy座標が同じになるようにしてください。

Rendered by QuickLaTeX.com

≪高さh≫と言いましたが,≪高さh≫はベクトル量(?)です。プラスの値を入れると放物線が上に凸に,マイナスの値を入れると下に凸になります。

Rendered by QuickLaTeX.com

なお,≪座標1≫と≪座標2≫のy座標が異なる場合,≪座標1≫と≪座標2≫のy座標の平均から≪高さh≫分上に行ったとところに頂点が来ます。

Rendered by QuickLaTeX.com

サインカーブ

サインカーブは放物線と見た目も使い方も似ています。

y=sinΘ型のグラフとy=cosΘ型のグラフの,0≦Θπ/2の範囲をそれぞれ,≪座標1≫と≪座標2≫,≪座標3≫と≪座標4≫を通るように描きます。ただし≪座標2≫のy座標が≪座標1≫y座標より小さい場合は,y=-sinΘの形に,≪座標4≫のy座標が≪座標3≫y座標より小さい場合は,y=-cosΘの形になります。

Rendered by QuickLaTeX.com

連続したサインカーブを作りたいときは,sincosを交互に使えばよいでしょう。(plotを使う方法もあります)

Rendered by QuickLaTeX.com

2点をx軸,y軸に平行な線で結ぶ

え?なにを言っているかわからない?俺も使い道があまり見いだせないんだが,書いておかないと知らないみたいに思われるといけないから,まず書き方。

上は,≪座標1≫の点から出たx軸に平行な線と,≪座標2≫の点から出たy軸に平行な線の作る,途中で90°折れ曲がる線。下は,≪座標3≫の点から出たy軸に平行な線と,≪座標4≫の点から出たx軸に平行な線の作る,途中で90°折れ曲がる線。例を見たらわかると思います。

Rendered by QuickLaTeX.com

なお,「|」は「パーティカルバー」とか「パイプ」とか「縦線」とか呼ばれる記号で,[Shift]キーを押しながらバックスペースキーの隣の[¥]キー(ただし一般的な日本語106/109キーボードの場合)を押すと入力できます。

円と楕円

円と楕円は≪座標と座標のつなぎ方≫ではないですがここにまとめておきます。
円と楕円は次のように記述します。

丸括弧を使うと座標と紛らわしいので,オプションとして半径を指定したほうがいいかもしれません。

Rendered by QuickLaTeX.com

circleellipserectangleと違って≪現在の座標≫を変更しません。ですので,例えば円に続いて線を引くと次のようになります。

Rendered by QuickLaTeX.com

次回は,内分点や二つのパスの交点をはじめとした応用的な点の指定方法の説明をする予定です。

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)から変位させたものが計算されるためです。

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

1 2