Comments
Description
Transcript
LaTeX資料
LATEX による組版 資料1 2012–2014 年度版 (2014 年 9 月改訂) 1 本資料は,京都大学理学部で開講している演習科目のために作成されたものです.本資料の無断複製・無断使 用等を固く禁じます. 目次 第 1 章 はじめに 1.1 LAT 1 1 1.2 LAT 1 EX とは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . EX の特徴 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 2 章 LATEX を使ってみる EX スクリプト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LATEX 文書作成の流れ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 LATEX スクリプトの編集・作成 (Step1) . . . . . . . . . . . . . . . . . . . . . . . 3 6 7 LATEX スクリプトのコンパイル (Step2) . . . . . . . . . . . . . . . . . . . . . . . コンパイル結果のプレビュー (Step3) . . . . . . . . . . . . . . . . . . . . . . . . 7 7 2.3 2.2.4 PDF ファイルの生成 (Step4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . コンパイルがうまくいかない場合は . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 エラーメッセージについての注意 . . . . . . . . . . . . . . . . . . . . . . . . . . 7 8 9 2.4 LATEX 文書作成支援機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1 2.2 基本的な 3 2.2.2 2.2.3 LAT 第 3 章 文書構造を作る 3.1 10 表題と章節 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 表題の表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 11 3.2 3.1.2 章節の表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3 相互参照 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . その他の文書構造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 13 13 3.3 3.2.1 箇条書き . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 特殊記号とコメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 15 特殊記号の表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.1.1 3.3.1 第 4 章 数式の組版 18 数式モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . いろいろな数式記号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 19 19 4.2.2 4.2.3 上付き記号・下付き記号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20 4.2.4 4.2.5 数式の列挙 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 4.2 数式の記述 4.2.1 行列表現 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . その他の数式コマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 5 章 図表の組版 21 22 5.1 表の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 26 5.2 5.1.1 図表の中央配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.2 変則的な表と罫線 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . フロート図表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 27 28 i 第 6 章 より進んだ使い方 6.1 文字装飾の指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 パッケージによる機能の拡張 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 30 . . . . . . . . . . . . . . . . . . . . . 32 32 6.3 6.4 6.2.2 その他の有用なパッケージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . マクロの活用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . スクリプトファイルの分割 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 34 36 6.5 参考文献の提示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.2.1 graphicx パッケージによる図の取り込み 第 7 章 よくある間違い・注意点 38 付 録 A Libre Office による図形データの作成 40 付 録 B AUCTeX — LATEX 文書の入力支援機能 B.1 AUCTeX の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 42 B.2 AUCTeX の使い方 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2.1 スクリプトとプレビューの相互参照 . . . . . . . . . . . . . . . . . . . . . . . . . 42 45 ii 第1章 1.1 はじめに LATEX とは グーテンベルクの活版印刷技術の発明以降、書籍等の印刷物を安価にかつ素早く出版することが可能 になり、これが科学技術等の知を世に広く普及させることに大きく貢献してきました。出版物が世に出 るまでには多くの工程がありますが、最も重要なのが組版 (くみはん (typesetting): 文章や図表などの 内容を適切に各ページに配置したり装飾を加えていく作業のこと) の工程です。 LATEX(ラテックあるいはラテフと発音する) は組版の工程をコンピュータ上で行うためのソフトウェ アです。かつて組版は人手に頼っていたため、出版に耐えるような組版を個人で行うのはとても困難で した。このような状況に不満を抱いていた Knuth は、コンピュータを用いて自動的に組版を行うソフト ウェア TEX [1] (テックあるいはテフと発音する) を開発しました。後に Lamport が TEX をより使いや すくするための拡張を行い LATEX [2] を開発しました。LATEX により商業出版に見劣りしない組版を個 人で行うことが可能となりました。(実際この資料も LATEX で作成しています。) LATEX は代表的な組版 ソフトウェアのひとつであり、特に理工系の分野で、論文等の科学・技術的内容の組版によく使われて います。 1.2 LATEX の特徴 現在では、LATEX 以外にも組版ソフトウェアはたくさんあります。例えば、Microsoft Word のような ワープロソフトも組版ソフトウェアの一種です。これらのワープロソフトと、LATEX は何が違うのでしょ うか?また、ワープロソフトではなく LATEX を使う理由は何なのでしょうか? 両者のもっとも大きな違いは、LATEX では文書の内容と組版が分離されているという点にあります。 通常、ワープロソフトでは文書がどのように印刷されるか (書いた内容が何ページ目のどこにどう配置さ れるか) を文書の編集と同時に画面上で確認できます。一方、LATEX では内容に若干の組版のヒント (例 えば、第 n 章はどこからどこまでかなど) を加えるだけです。書いた内容が実際にどのページのどこに 配置されるかは、次の章で解説する「コンパイル」という作業を行わないと確認することができません。 これだけ聞くと、とても不便なソフトウェアのように聞こえるかもしれませんがそうではありません。 理系の文書では、書いてある内容こそが重要なので、文書を書いている最中は見た目の問題(例えば、 どこで改行、改ページされるかとか図表をどこに配置するか等)には煩わされたくありません。LATEX ではこうした見た目の問題はすべて LATEX にお任せすることができるので、「内容を書く」ことに集中 することができます。したがって、論理的な理系の文章を書くのには向いていると言えるでしょう。 LATEX の利点を以下に列挙します。 • 印刷時の見た目に煩わされずに、内容に集中できる。見た目の問題 (組版) は LATEX が面倒を見て くれる。 • 数式の組版が得意。かなり複雑な数式等も美しく組版できる。 • 内容と見た目が分離されているので、内容の使い回しが容易。例えば、LATEX で書いた論文をも とにプレゼンテーション資料を作ることも可能。 • 内容と見た目が分離されているので、論理的に整理された文書が書きやすい。 1 一方、短所としては以下のようものが挙げられます。 • 実際印刷されるときに、内容がどのように配置されるか確認するのにコンパイル作業が必要。 • コンパイル中エラーが出た場合(組版のヒントの指定の仕方が間違っていた場合など)に間違っ ている部分を探すのに馴れが必要。 • グラフなどの絵を描くのは不得意なので、他のアプリケーションで作成したものを取り込む必要 がある。 • 見た目が極端に派手なデザインの組版 (理系の文書にとっての必要性は薄いが) には向かない。 このように、向き不向きがあるので何でもかんでも LATEX で組版をするのは勧められませんが、論理 性を重視する理系の文書を作成する必要があるときの強い味方になってくれることでしょう。 本資料について 本資料では、LATEX の基本的な使い方について解説します。LATEX には様々な機能や使い方があるの でそれらすべてについては紹介できませんが、より進んだ使い方については参考文献などを参照してく ださい。 2 第2章 LATEX を使ってみる まずはとりあえず何か LATEX で文書を作って、コンパイル、内容の確認、印刷をおこなってみましょう。 注意 以降、LATEX スクリプトの中には\ (backslash) 記号がたくさん出てきますが、コンピュータに よってはキーボードに backslash キーがなくて Y キーになっていたり、backslash を入力しても Y が画面 に表示される場合があります。これは、世界標準では backslash であるべき記号を、日本では Y(円通貨 記号) に置き換えて使っているためです。見た目は違ってもコンピュータには全く同じ記号として解釈 されるので問題はありません。資料中に出てくる backslash は全て Y に置き換えて読んでください。 2.1 基本的な LATEX スクリプト 次に示すのはこの資料の冒頭部分の内容 (抜粋) を LATEX で文書化したものです。 \documentclass{jarticle} \begin{document} グーテンベルクの活版印刷技術の発明以降、 書籍等の印刷物を安価にかつ素早く出版することが可能になり、 これが科学技術等の知を 世に広く普及させることに大きく貢献してきました。 出版物が世に出るまでには多くの工程がありますが、最も重要なのが 組版 (くみはん (typesetting): 文章や図表などの 内容を適切に各ページに配置したり 装飾を加えていく作業のこと) の工程です。 LaTeX は組版の工程をコンピュータ上で行うための ソフトウェアです。 かつて組版は人手に頼っていたため、出版に耐えるような組版を 個人で行うのはとても困難でした。 LaTeX により 商業出版に見劣りしない組版を 個人で行うことが可能となりました。 LaTeX は代表的な組版ソフトウェアのひとつであり、 特に理系の分野で、論文等の科学・技術的内容の組版に よく使われています。 この資料では、LaTeX の基本的な使い方について解説します。 \end{document} このようなファイルを LATEX スクリプトといいます。LATEX スクリプトはテキストファイルなので、 Emacs 等のテキストファイルエディタで編集できます。 一般に、LATEX スクリプトは図 2.1 示すような構造を持ちます。 3 \documentclass{文書スタイル名} プリアンブル部 \begin{document} 段落 段落 .. . 段落 \end{document} 図 2.1: LATEX スクリプトの基本構造 • 最初の行\documentclass{...}は LATEX が組版を行うときに、ページ配置や装飾などをどのよう に行うかを指定する文書スタイルを指定するもので必ず必要です。 • 次に続くのがプリアンブル部で、あとで解説するスタイルファイルによる機能の拡張やユーザ定 義マクロに関する記述を書く部分です。 • 残りの\begin{document}から\end{document}に囲まれた部分が本文で、この部分に書いた内容 が実際に印刷される部分となります。 本文は段落を並べたものになります。段落の間はひとつ以上の空行を挿入して区切ります。 先ほどの LATEX スクリプトの例で確認してみましょう。 • 最初の行は\documentclass{jarticle}となっています。これは、文書スタイルとして jarticle(日 本語論文に適したスタイル) を選択することを意味しています。 他にも jreport(日本語リポートに適したスタイル)、jbook(日本語書籍に適したスタイル) やこれ らの英語版 article, report, book など多数の文書スタイルが用意されています。 通常は、jarticle を選択すればよいでしょう。 • プリアンブル部には今の例の場合、機能拡張やマクロ定義を行なっていないので何も書いてあり ません。 • 本文には3つの段落があり、これらの間は空行で区切られています。 ここで各段落の1行の長さが揃っていないことに気をつけてください。1行の長さをページの幅 に合わせて揃える組版の仕事はあとで LATEX がやってくれるので LATEX スクリプトを書く人は全 く気にしなくて構いません。書いた内容を後で読み返した時にわかりやすいように好きな場所で 行を折り返すのがよいでしょう。 4 グーテンベルクの活版印刷技術の発明以降、書籍等の印刷物を安価にかつ 素早く出版することが可能になり、これが科学技術等の知を世に広く普及さ せることに大きく貢献してきました。出版物が世に出るまでには多くの工程 がありますが、最も重要なのが組版 (くみはん (typesetting): 文章や図表な どの内容を適切に各ページに配置したり装飾を加えていく作業のこと) の工 程です。 LaTeX は組版の工程をコンピュータ上で行うためのソフトウェアです。か つて組版は人手に頼っていたため、出版に耐えるような組版を個人で行うの はとても困難でした。LaTeX により商業出版に見劣りしない組版を個人で行 うことが可能となりました。LaTeX は代表的な組版ソフトウェアのひとつで あり、特に理系の分野で、論文等の科学・技術的内容の組版によく使われて います。 この資料では、LaTeX の基本的な使い方について解説します。 1 図 2.2: コンパイル結果 5 abc.tex platex ? NO エラー発生? YES ? abc.dvi pxdvi ? プレビュー OK? NO YES pdvips dvipdfmx j abc.pdf プリンタに直接印刷 図 2.3: LATEX による組版作業の流れ図 この LATEX スクリプトをコンパイル処理すると、図 2.2 のような組版が行われます。ページ番号がつ き、各段落の先頭が字下げされ、行の長さが揃えられていることを確認してください。 2.2 LATEX 文書作成の流れ LATEX での文書を作成するには次のような手順を踏みます。(流れ図 2.3 も参照) Linux の使用を前提 とします。(本資料では演習室のコンピュータ環境での作業手続きについてのみ解説します。他の環境で はおそらくコマンドの名称等が異なるでしょう。) (Step1) Emacs などのテキストエディタで LATEX スクリプトを編集・作成します。 (Step2) 編集した LATEX スクリプトをコンパイルします。もしエラーが発生したら (Step1) に戻り、エ ラーを修正します。 (Step3) コンパイル結果が思ったように組版されているか画面上で確認 (プレビュー) します。もし想 定した結果と違うようだったら、(Step1) に戻りうまく組版できるように修正します。 (Step4) 組版結果をプリンタに出力します。 (Step4’) あるいは、直接プリンタに出力する代わりに PDF ファイルとして保存することもできます。 それぞれ具体的にどのような操作をすればよいか順に解説していきましょう。(実際に、例としてあげ た LATEX スクリプトについて、コンパイル・印刷が行えるか一度やってみるとよいでしょう。例に出て くる本文の内容は少し長いので適宜省略しても構いません。) 6 2.2.1 LATEX スクリプトの編集・作成 (Step1) LATEX スクリプトはテキストファイルなので、Emacs 等のテキストファイルエディタで編集できます。 通常、LATEX スクリプトには ファイル名.tex のように tex を拡張子としたファイル名をつけます。ただし、ファイル名は英数字などの半角文字だ け1 としましょう。編集が終わったらちゃんとファイルをセーブするのを忘れないようにしましょう。 以降話を簡単にするため、LATEX スクリプトのファイル名を abc.tex とします。 2.2.2 LATEX スクリプトのコンパイル (Step2) LATEX スクリプトをコンパイルするには、まず GNOME 端末を開き、スクリプトのファイル名 abc.tex が保存されているディレクトリに cd コマンドで移動します。 移動先で platex コマンドを使ってコンパイルします。(コマンドプロンプト% より後ろの部分だけ入 力します。) LATEX スクリプトのコンパイル % platex abc.tex いくらかメッセージが出力されると思いますが、LAT EX スクリプトが正しければ最後におおよそ次の ようなメッセージがでて、DVI ファイルと呼ばれるファイルが生成されます。 ... Output written on abc.dvi (nn pages, bbbb bytes). Transcript written on abc.log. LaTeX finished at MM DD hh:mm:ss このメッセージは、コンパイル結果として abc.dvi が生成され、総ページ数は nn、ファイルのサイ ズが bbbb byte であることを示しています。最後の MM DD hh:mm:ss にはコンパイル終了時の日時が 表示されます。また、DVI ファイルに加えて abc.log や abc.aux などのファイルも同時に生成されま すが、これらを削除したり編集したりする必要はありません。 2.2.3 コンパイル結果のプレビュー (Step3) コンパイル結果を確認するには、コンパイルに使ったのと同じ GNOME 端末から pxdvi コマンドを 使ってプレビューします。 コンパイル結果のプレビュー % pxdvi abc.dvi 表示結果で正しければプレビューを終了します。 2.2.4 PDF ファイルの生成 (Step4) 組版結果を印刷するには、一旦 PDF ファイルを生成しこれを印刷します。 PDF ファイルを生成するには dvipdfmx コマンドを使います。 1 日本語も使えるかもしれませんが、トラブルのもとなので使わないほうが安全でしょう。 7 PDF ファイル生成 % dvipdfmx abc.dvi PDF ファイル abc.pdf が生成されます。これを Acrobat Reader などの PDF ビューワで表示・確認 し、印刷します。 PDF ファイルはメールに添付するなどして送ることもできます。 (参考) プリンタに直接印刷 pdvips コマンドを使うと PDF ファイルを生成せずに直接プリンタで印刷することもできます。 直接印刷 % pdvips -f abc.dvi | lpr ※通常は一旦 PDF ファイルを生成してから印刷するのをおすすめします。 2.3 コンパイルがうまくいかない場合は LATEX スクリプトが間違っていると、(Step3) のコンパイルがうまくいかず DVI ファイルが生成され ない場合があります。(この節では説明の便宜のためにスクリプト等に行番号を付しています。) 例えば次の間違ったスクリプト 1 2 3 4 5 \documentclass{jarticle} \begin{documnt} どこが 間違っているかわかるかな? \end{document} をコンパイルすると、次のようなエラーメッセージを出して止まってしまいます。 1 2 3 4 5 6 7 8 9 ! LaTeX Error: Environment documnt undefined. See the LaTeX manual or LaTeX Companion for explanation. Type H <return> for immediate help. ... l.3 \begin{documnt} ^^c9^^a4 海 ? エラーがあると 1 行目のように! LaTeX Error と表示され、その後ろにエラーの理由が簡単に示さ れます。(この場合は “Environment documnt undefined.” ですから、環境 documnt が未定義であるこ とが理由ということが分かります。) 肝心のエラーの起こった場所ですが、7–8 行目を見ると分かります。l.3 はスクリプトの 3 行目でエ ラーが発生したことを、さらに 7 行目では\begin{documnt} 8 行目では「どこが」が表示されていま す。ちょうどこの段違いになった辺りでエラーが発生したことを示しています。 もうお分かりのように、エラーの原因は単純なタイプミスです。スクリプト3行目の\begin{documnt} を\begin{document}と修正すれば直すことができます。 9 行目の?に続いて X を入力してリターンキーを叩いて一旦コンパイルを中止した後、スクリプトを 修正してから再度コンパイルを行います。 8 2.3.1 エラーメッセージについての注意 有用なのは最初のエラーメッセージだけ LATEX でコンパイルを行うと、たくさんのエラーを一度に報 告してくることがあります。その場合は、全てのエラーを直そうと思わずに最初のひとつだけを 直して再度コンパイルしてみてください。 LATEX はひとつエラーを発見してもコンパイルを続行して、さらに後ろのエラーも発見しようとし ますが、多くの場合最初のエラーが後ろの方の正しい部分にまで影響して大量のエラーメッセー ジを表示してしまいます。これらは最初のエラーを修復すれば自然に直ります。 LATEX が指摘する場所がエラーの原因とは限らない LATEX が指摘するエラー箇所が本当にエラーの原 因となった場所である保証はありません。LATEX が指摘する箇所はエラーの原因となった場所で はなく、LATEX がエラーがあると初めて気づいた場所に過ぎません。 この種のエラーの原因は馴れないとなかなか発見しづらいですが、少なくとも LATEX が指摘する 場所よりは前にあるはずです。典型的には、後で解説する環境の始まり\begin{...}に対応する \end{...}がないとか、コマンド等で開き括弧 { に対応する閉じ括弧 } がないことなどが原因の ことが多いです。 2.4 LATEX 文書作成支援機能 LATEX スクリプト中の backslash で始まるコマンド名を正確に入力するのは意外と大変です。また、コ ンパイル・プレビューを繰り返しながらエラー箇所を特定し、修正していくのも骨が折れます。 Emacs では LATEX 文書作成をサポートする仕組みを提供しているのでそれを使ってもよいでしょう。 詳しくは付録 B を参照してください。 9 第3章 文書構造を作る 理系の文書においては、書き手の主張を読者にわかりやすく伝えることが最も重要なテーマです。 このために最もよく使われる手段が「構造」を明示して文章全体を構成することです。以下では、LATEX で文書構造を表現し組版に反映させる方法について解説します。 3.1 表題と章節 文書構造を明示する最も基本的な方法が、文章全体をいくつかの部分に分割しそれぞれにタイトルを つける手法です。分割された文章のことを章 (chapter) や節 (section) といいます。また、最初にタイト ルを掲げて文書全体の主題を明示する場合もあります。これを (文書の) 表題といいます。 LATEX で表題や章節を指定するには例えば次のようにスクリプトを書きます。 \documentclass{jarticle} \begin{document} \title{プログラミング解説} \author{湯川 左京} \date{201X 年 10 月 1 日} \maketitle \section{プログラミングの手順} \subsection{ソースプログラムを書く} \label{subsec:writeprogram} 最初にソースプログラムを書きましょう. \subsection{プログラムの実行} \label{subsec:exec} ソースプログラムをコンパイルして実行します. \section{プログラムの解説} ここで\ref{subsec:writeprogram} 節で書いた ソースプログラムについて解説します. \subsection{文} プログラムの命令の単位を文といいます. \subsubsection{コメント} コメントの部分は何を書いてもプログラムには影響しません. \subsection{インデント} 区切りとなるところで改行や空行を入れたりして記述すると プログラムは見やすいものになります. これをインデンテーションと呼びます. \subsection{数学関数を使う} 数学関数を例にしてライブラリの読み出し方について説明します. \end{document} 10 コンパイルすると図 3.1 のように組版されます。 LATEX のコマンド LATEX スクリプトにおいて\(backslash) で始まる文字列は命令あるいはコマンドと呼ばれます。LATEX は多くのコマンドを提供しており、これらを駆使することによって多種多様な組版を実現すること ができます。これまで出てきた\documentclass, \begin, \end などもすべてコマンドの一種です。 LATEX のコマンドは一般に次のような形で使われます。 \コマンド名{引数 1}· · ·{引数 n} コマンドはそれぞれ決まった数の引数 (入力) を必要とします。上の例では、\title, \author, \date はそれぞれ 1 個、\maketitle は0個の引数を取ります。 コマンドの中にはオプション引数という省略可能な引数を受け取ることができるものもあります。 省略可能な引数は { } の代わりに [ ] で囲んで表します。例えばスクリプト最初の documentclass 命令にオプション引数を渡して \documentclass[twocolumn]{jarticle} のようにすると、2段組 (ページを縦に半分に割った組版) を行います。 3.1.1 表題の表示 このスクリプトでは、\begin{document}に続く 4 行で表題を指定しています。 • \title{表題名} — 文書の表題名を指定します • \author{著者名} — 文書の著者名を指定します • \date{日付} — 文書の日付を指定します 今日 (コンパイル時) の日付としたい場合は\date{\today} のようにします。 • \maketitle — この場所に表題・著者名・日付を挿入します。 3.1.2 章節の表示 表題の後の文章は、複数の節 (section) から成り立っています。各節は更に小節 (subsection)、小々節 (subsubsection) に分割可能です。 各節の始まりは節のタイトル名とともに以下のように指定します。 • \section{タイトル名} — 節 • \subsection{タイトル名} — 小節 • \subsubsection{タイトル名} — 小々節 なお、jreport や jbook などの文書スタイルではこれらに加えて、章 (chapter) の始まりを\chapter{ タイトル名} の形で指定します。(章を分割したものが節となります。) ここで、各節のタイトル名だけが指定されており、節の番号は指定していないことに注意してくださ い。節の番号等は、LATEX がコンパイル時に自動的に割り振ってくれます。また、節と節の間に新しい 節を挿入しても LATEX がコンパイル時に番号を振りなおしてくれます。 これは第 1 章で述べた LATEX の利点のひとつです。LATEX スクリプトを書くときは、現在編集中の章 や節の番号が何番であるかを気にする必要はありません。 11 プログラミング解説 湯川 左京 201X 年 10 月 1 日 プログラミングの手順 1 1.1 ソースプログラムを書く 最初にソースプログラムを書きましょう. 1.2 プログラムの実行 ソースプログラムをコンパイルして実行します. プログラムの解説 2 ここで 1.1 節で書いたソースプログラムについて解説します. 2.1 文 プログラムの命令の単位を文といいます. 2.1.1 コメント コメントの部分は何を書いてもプログラムには影響しません. 2.2 インデント 区切りとなるところで改行や空行を入れたりして記述するとプログラムは 見やすいものになります. これをインデンテーションと呼びます. 2.3 数学関数を使う 数学関数を例にしてライブラリの読み出し方について説明します. 1 図 3.1: タイトルと節の表示 12 3.1.3 相互参照 自動的に節の番号を振りなおしてくれるのは便利ですが、そうすると節の番号を参照したい場合 (例 えば、 「詳しくは第 3 節を参照せよ」のような) どうしたらよいのか疑問に思うかもしれません。節を新 たに挿入したりすることによって節番号がずれてしまうかもしれないからです。 LATEX では節番号がずれても節番号を正しく参照できるように相互参照の仕組みが備わっています。 相互参照を行うには次のようにします。 • 参照したい番号を生成するコマンド (例えば\section{タイトル名}) の直後にコマンド \label{ラベル名} を挿入する。ラベル名には英数字や一部の記号 (:, -など) を使った任意の文字列を指定します。 (ただし、参照先が一意に決まるように異なるラベル名を選びます。) • 番号を参照したい場所でコマンド \ref{ラベル名} を使うことによって番号を参照できます。参照先が参照元の前でも後ろでも構いません。 上に上げたスクリプトの例でも、小節「ソースプログラムを書く」の直後で\label{subsec:writeprogram} によってラベルが設定され、節「プログラムの解説」の中で参照されています。 ここで\ref{ラベル名}が参照するのは番号のみであることに気をつけてください。したがってある節 を参照するためには、スクリプト中では ここで\ref{subsec:writeprogram} 節で書いた のように書かなければいけません。 相互参照の仕組みは、LATEX が番号を自動生成するおよそ全てのコマンドに対して使うことができま す。(後に出てくる enumerate, caption など) LATEX によって自動生成される番号はスクリプトの編集 によって変わってしまう可能性がありますから、LATEX が自動生成する番号は直接スクリプトに書くの ではなく相互参照を使いましょう。 なお、相互参照を用いたスクリプトは続けて 2 回以上コンパイル (platex の実行) を行う必要がありま す。これは、まず 1 回目のコンパイルで番号の決定を行い、2 回目でその情報を基に参照元 (\ref{ラベ ル名}) の番号を決める仕組みになっているからです。 その他の文書構造 3.2 章節番号のような大きな文書構造でなく、LATEX でもっと小さな文書構造を表す方法について解説し ます。 ※ これ以降の解説では、スクリプト全体ではなく、解説している部分のみを取り上げます。これからあ げる全ての例は、図 2.1 で示したような完結した LATEX スクリプトの中の\begin{document}から \end{document}に囲まれていると仮定しています。(スクリプトの例はそれ単体ではコンパイル できません。) 13 3.2.1 箇条書き 複数個の項目に渡る内容を整理して記述するために箇条書きは有効な方法です。LATEX はいくつかの 箇条書きの方法を提供しています。 箇条書きを指定するには環境を用います。 LATEX の環境 LATEX スクリプトにおいては、\begin{環境名}と\end{環境名}の組で環境を表します。すでに出 てきた\begin{document}, \end{document} も環境の一種です。 環境は文書の一部を\begin{環境名}と\end{環境名}で囲むことによって、文書の構造を明示する ために使われます。また、多くの環境は入れ子 (ある環境\begin{環境名} ... \end{環境名} の中に 別の環境\begin{環境名} ...\end{環境名}を含めること) を許しています。 単純な箇条書き 単純な箇条書きには itemize 環境を使います。次の例とコンパイル結果を見てください。 \begin{itemize} \item 魚類 \item 両生類 \item 爬虫類 \item 鳥類 \item 哺乳類 \begin{itemize} \item 有袋類 \item 霊長類\\ 人間はここに属する \end{itemize} \end{itemize} コンパイル結果 • 魚類 • 両生類 • 爬虫類 • 鳥類 • 哺乳類 – 有袋類 – 霊長類 人間はここに属する 箇条書きが入れ子になっていることに注意しましょう。入れ子になった箇条書きは字下げされるとと もに、異なる箇条書きの印が使われます。 強制改行 上のスクリプト中の\\は、強制的に改行を行うための LATEX コマンドです。強制改行コマンド (\\) と段落の区切り (空行) とは組版上は異なるものです。(後者では段落の字下げは行われない。) 強制改行は手っ取り早く文章の体裁を整えるのに便利ですが、どうしてもうまく組版できない部分 の調整に留め、多用しすぎないようにしましょう。段落の区切りには強制改行ではなく、空行を使 うように習慣付けましょう。 14 番号付きの箇条書き 箇条書きに番号を振りたい時は enumerate 環境を使います。次の例とコンパイル結果を見てください。 コンパイル結果 \begin{enumerate} \item X と Y を正の整数とする。 1. X と Y を正の整数とする。 \item \label{comparison} 2. X と Y を比較する。 X と Y を比較する。 \begin{enumerate} (a) X と Y が等しければ 3 へ。 \item X と Y が等しければ (b) X より Y が小さければ X と Y を入れ \ref{finished}へ。 替えて 2 に戻る。 \item X より Y が小さければ X と Y を入れ替えて (c) Y より X が小さければ Y 割る X の余 \ref{comparison}に戻る。 りおよび X をそれぞれ新たに X, Y と \item Y より X が小さければ し、2 に戻る。 Y 割る X の余りおよび X を 3. X が元の X と Y の最大公約数を与える。 それぞれ新たに X, Y とし、 \ref{comparison}に戻る。 \end{enumerate} \item \label{finished} X が元の X と Y の最大公約数を 与える。 \end{enumerate} itemize 環境と同様に、入れ子にすると字下げされるとともに、異なる番号付けが行われます。 見出し付きの箇条書き 箇条書きの各先頭に見出しを付けたい時は description 環境を使います。次の例とコンパイル結果 を見てください。 コンパイル結果 \begin{description} \item[鱧] 京の風物詩。うまい。 \item[鰻] マリアナ海溝で産卵する。 美味。 \item[どじょう] 泥臭いが野趣にあふれる。 \end{description} 3.3 鱧 京の風物詩。うまい。 鰻 マリアナ海溝で産卵する。美味。 どじょう 泥臭いが野趣にあふれる。 特殊記号とコメント 次に示すキーボードから入力可能な半角文字は、LATEX スクリプト中で特殊な意味を持つのでそのま ま入力してもエラーになったり、予期しない組版結果となります。 # $ % & _ { } ~ ^ \ @ 例えば、記号 % は LATEX スクリプトのコメントを表す特殊記号です。% が一旦ある行に現れるとそ こから行末まではコメントとして扱われ、スクリプトに何も書いていないのと同じものとして処理され ます。 15 コンパイル結果 %% 文学賞に関する個人的メモ 受賞を拒否して%気の小さい 選考委員%が倒れたりなんかしたら大変だから に迷惑をかけてはいけないので %もらっといてやる。 もらっておこう。 受賞を拒否して選考委員に迷惑をかけて はいけないのでもらっておこう。 (この例にあるように、組版には現れない個人的な覚書などに使ったり、今現在は原稿から外しているけ れどもあとで復活するかもしれない内容を残しておくのに便利です。) その他の特殊記号は次のような用途に使われます。 \{} $ _ ^ LATEX のコマンドや環境を表すのに使います。 数式モード (4 章) で使います。 & # ~ tabular 環境 (5.1 節) や array 環境 (4 節) で列の区切りを表します。 マクロの引数 (6.3 節) を表すために使います。 絶対に改行の起こらない空白を挿入します。 例えば、スクリプト中で See 329~page. と書くと、LATEX は 329 と page の間 に改行が入らないように組版を行います。 文書スタイル等の定義時のみに使うことのできる記号。通常ユーザは使う必要 @ はない。 3.3.1 特殊記号の表示 例えば、% が特殊記号であることを忘れてスクリプトを書くと以下のような結果になったりします。 コンパイル結果 人口の 40%以上が老人という 人口の 40 超高齢化社会が到来する。 超高齢化社会が到来する。 特殊記号のうち # $ % & _ { } は頭に\をつけることによって (例えば、\#や\$のように) 対応する記号を出力できます。 コンパイル結果 人口の 40\%以上が老人という 超高齢化社会が到来する。 人口の 40%以上が老人という超高齢化社 会が到来する。 しかし、上の方法で出力できない特殊文字や特殊記号がたくさん含まれている文字列は上の方法では 面倒です。任意の短い (1 行程度の) 特殊文字を含む文字列をとにかく表示したい時は verb コマンドを 使います。verb コマンドでは次のように、表示したい文字列をその文字列中に現れない任意の同じ記号 (例えば + と+) で囲んで使います。1 コンパイル結果 \verb+%~a012345%kyoto_univ.jp+ %~a012345%kyoto_univ.jp %~a012345$kyoto+ \verb-%~a012345$kyoto+ 1 ただし、verb コマンドは他のコマンドの引数の中では使えないという制限があります。 16 長い文章をそのまま LATEX で取り込みたい時は verbatim 環境を用います。\begin{verbatim} と \end{verbatim} で囲まれた部分は改行なども含めて全く見たままに出力されます。たとえば、次のよ うにプログラムをそのまま表示したい時などに便利でしょう。 コンパイル結果 プログラムは次の通り。 プログラムは次の通り。 \begin{verbatim} #include <stdio.h> #include <stdio.h> int main(void) { printf("Welcome to C world! \n"); printf("%d \n", 12); return 0; } \end{verbatim} int main(void) { printf("Welcome to C world! \n"); printf("%d \n", 12); return 0; } 17 第4章 数式の組版 LATEX を使うと複雑な数式を美しく組版することができます。 4.1 数式モード 数式は LATEX スクリプト中で数式モードに切り替えることで組版できます。主に 2 種類の数式モード があり、用途によって使い分けます。 インライン・モード 文章中に数式を埋め込むには、$ と $で数式を囲みます。(代わりに \( と \)、あるいは\begin{math} と\end{math}で囲んでも同じ効果が得られます。) コンパイル結果 総和の公式は ∑n $\sum_{i=1}^{n} i = 総和の公式は i=1 i = \frac{n(n+1)}{2}$です。 n(n+1) 2 です。 ディスプレイ・モード 文章と独立に印刷範囲の横幅一杯を使って中央に数式を表示したい時は\[ と \] で数式を囲みます。 (代わりに\begin{displaymath}と\end{displaymath}で囲んでも同じ効果が得られます。) コンパイル結果 総和の公式は 総和の公式は \[ \sum_{i=1}^{n} i = n ∑ n(n + 1) \frac{n(n+1)}{2} i= 2 \] i=1 です。 です。 行中に埋め込まれるかどうかの他にも次のような違いがあります。 • インライン・モードの場合は縦の幅がおおよそ 1 行の高さに収まるようにコンパクトな数式で組 版されますが、ディスプレイ・モードの場合は行の高さとは関係なく組版されます。具体的には、 – 総和記号 – 総和記号 ∑ ∑ の大きさが違う。 の範囲指定 (i = 1 から n) の配置場所が違う。 – 分数の分母および分子の大きさが違う。 18 インライン・モードで大きな記号を使って表示したい場合は、\displaystyle コマンドを使って一時 的にディスプレイ・モードに切り替えることができます。 コンパイル結果 総和の公式は n ∑ $\displaystyle\sum_{i=1}^{n} i = n(n + 1) 総和の公式は i= です。 \frac{n(n+1)}{2}$です。 2 i=1 4.2 数式の記述 LATEX では様々な数式表現を組版することができます。 4.2.1 いろいろな数式記号 LATEX の数式モード中では、通常と同じようにアラビア数字と小数点で 10 進数表現を表し、各アル ファベット文字 (英大文字と小文字) は変数などの記号を表します。加えて、記号 = < > + − / , : ; ( ) [ ] は、キーボードから入力できる記号 = < > + - / , : ; ( ) [ ] で表現できます。その他のキー ボードから直接入力できない記号 (例えば、× ÷ ≤ ≥ 等) は対応する数式コマンドを使います。 コンパイル結果 \[ (2+3) \times 2 \div 4 = 2.5 \geq 2 \] (2 + 3) × 2 ÷ 4 = 2.5 ≥ 2 \[ (x+1)(y-1) = xy - x + y - 1 (x + 1)(y − 1) = xy − x + y − 1 \] sin(α + β) = sin α cos β + cos α sin β \[ \sin (\alpha+\beta) = \sin\alpha \cos\beta + \cos\alpha\sin\beta \] LATEX はたくさんの数式コマンドを提供しています。どのような数式記号が使えるかは表 4.1–4.9 を 参照してください。1 LATEX でアルファベット文字を並べたものは、それぞれの文字の積と解釈されることに気を付けてく ださい。例えば三角関数 sin のつもりで単に sin と数式モード中で書くと、これは s と i と n の積とみ なされてしまいます。次の例で違いを観察してください。 コンパイル結果 \[ sin y = - sin (y+\pi) \] siny = −sin(y + π) \[ \sin y = - \sin (y+\pi) sin y = − sin(y + π) \] y の正弦のつもりで sin y と書くと、s と i と n および y の積であるかのように組版されてしまいます。 このようなことを避けるため、三角関数などの数学関数は専用の数式コマンドが用意されているので、 そちらの方を使いましょう。数学関数のコマンドは表 4.5 で一覧できます。 1 これらの表は [5] を改変したものです。 19 4.2.2 上付き記号・下付き記号 LATEX で巾乗などの上付き記号を表すには、 数式^{上に付く数式} のように書き、添字などの下付き記号を表すには 数式_{下に付く数式} のように書きます。上付き記号・下付き記号は入れ子にすることもできます。 コンパイル結果 \[ 2^{0} =1, 2^{1} =2, 2^{2} =4 \] 20 = 1, 21 = 2, 22 = 4 \[ 2 22 2^{2^{2}}=16, 2^{2^{2^{2}}}=65536 22 = 16, 22 = 65536 \] an+2 = an+1 + an (n ≥ 0) \[ a_{n+2} = a_{n+1} + a_{n} (n\geq 0) \] ∫ ∑ この章の最初の例で出てきた総和記号 や積分記号 については、上付き記号・下付き記号はその 記号特有の組版が行われます。 コンパイル結果 \[ \lim_{N\to \infty} ∫ 1 N −1 \frac{1}{N} \sum_{i=0}^{N-1} 1 ∑ lim f (i/N ) = f (x)dx f(i/N) = \int_{0}^{1}f(x)dx N →∞ N 0 i=0 \] このような特別な組版が行われる記号は表 4.8 で一覧できます。 4.2.3 行列表現 数学では、行列などのように数式を縦横に並べて組版したい時があります。そのようなときには array 環境を使います。 下の例 (2 行 3 列の整数) を見てください。 \[ \begin{array}{ccc} 1 & 2 & 3 \\ 4 & 5 & 6 \end{array} \] コンパイル結果 1 2 3 4 5 6 この行列中の各要素の指定は次のように行います。 • 各行について、その行の要素 (この場合 3 つ) を& で区切って並べます。 • 行と行の間は上から順に \\ で区切ります。 • & で区切る要素の数 (列の数) は、環境の開始時点の書式指定{ccc}で指定しています。アルファ ベット 1 つが左から順に 1 つの列に対応しており、各行は 3 つの要素からなることを示しています。 20 • アルファベットの種類によって異なる列の揃え方を指定することができます。この例の場合、c は 対応する列の全ての要素を中央揃えで並べるよう指定します。 l 左揃え、r 右揃え、c 中央揃えの 3 通りの列の揃え方の指定が可能です。 列の揃え方の指定がどのような効果を持つかを以下の例で確認してください。 コンパイル結果 \[ \begin{array}{lcr} 1 & 1 & 1 1 1 1 \\ 100 100 100 100 & 100 & 100 10000 10000 10000 \\ 10000 & 10000 & 10000 \end{array} \] 実際に array 環境で行列を表示するときは、左右を大きな括弧で囲みます。このようなことをするた めには、次のように左右でバランスする記号を使います。 コンパイル結果 \[ \left( \begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array} \right) \] ( 1 0 0 1 ) ここで、\left( は左括弧を、\right) は右括弧を array 環境の高さに合わせた大きさで組版します。 通常の括弧 ( ) の他にも左右でバランスする記号がいくつか用意されています。表 4.9 を参照してくだ さい。 左右でバランスする記号を使うときは左右の対応が取れていないといけません。もし、左右どちらか 一方だけが必要なときには「何も出力しない」ことを示す . (ピリオド記号) を使います。これは、例え ば次のような場合分けを表記するときに便利です。 コンパイル結果 \[ f(n) = { \left\{ 1 f (n) = \begin{array}{ll} n × f (n − 1) 1 & (n=0) \\ n\times f(n-1) & (n>0) \end{array} \right. \] 4.2.4 (n = 0) (n > 0) 数式の列挙 等式をいくつか並べて列挙するときに、見やすいように式を等号の位置で揃えたいときがあります。 1 つの方法は array 環境を使うことですが、数式の列挙に特化した eqnarray 環境を使うと便利です。 次の例を見てください。 21 コンパイル結果 任意の$x,y,z\in G$について次の性質が 満たされるとき$G$をモノイドという。 \begin{eqnarray} \label{grp1} (x \cdot y) \cdot z & = & x \cdot (y \cdot z) \\ \label{grp2} e \cdot x & = & x \cdot e = x \end{eqnarray} モノイド$G$が性質 (\ref{grp1}), (\ref{grp2}) に加えて、任意の $x\in G$について逆元$x^{-1}$を 持つとき、$G$を群という。 任意の x, y, z ∈ G について次の性質が満たさ れるとき G をモノイドという。 (x · y) · z e·x = x · (y · z) = x·e=x (4.1) (4.2) モノイド G が性質 (4.1), (4.2) に加えて、任意 の x ∈ G について逆元 x−1 を持つとき、G を 群という。 eqnarray 環境は数式モードの外で(通常の段落の要素として)使います。array 環境と同様に各行 を\\ で区切り、各行は 左辺 & 等号や不等号 & 右辺 のように区切ります。 各式に自動的に番号がふられるので、相互参照を行うこともできます。番号が不要なときは、eqnarray 環境の代わりに eqnarray*環境を使います。 4.2.5 その他の数式コマンド 分数 数式モード中 \frac{分子}{分母} で分数を表します。 コンパイル結果 \[ \frac{1}{1-\frac{1}{x+1}} = 1 1 1+\frac{1}{x} =1+ 1 x 1 − x+1 \] 根号 数式モード中 \root{式} で平方根を表します。また、\root[n]{式} で任意の累乗根を表せます。 コンパイル結果 \[ 2\sqrt{2} = √ √ 4 \sqrt[4]{64} 2 2 = 64 \] 省略記号 数式モード中、点々で省略を表すには · · · (\cdots) や . . . (\ldots) を使います。どちらを使うべき か判然としない場合は、\dots を使うと LATEX が前後の文脈からよりふさわしいと思われる方を自動的 に選択します。 22 コンパイル結果 \[ 0,1,2,\cdots \] \[ 0,1,2,\ldots \] \[ 0,1,2,\dots \] 0, 1, 2, · · · 0, 1, 2, . . . 0, 1, 2, . . . 改行とスペースについて LATEX は、長い数式の改行についてはあまり面倒を見てくれません。(数式のどこで折り返すべきかと いう一般的なルールがないため) インラインで埋め込んだ数式が行の改行位置をまたいでいたり、そも そも数式が長すぎる場合は、数式を 2 つに分割したり、array 環境を使うなどしてスクリプトを調整す る必要があります。 また、LATEX の数式の組版は改行を除いては総じて優秀なので、記号の間のスペースを調整する必要 はあまりありません。しかし、どうしても気に入らない時などのためにスペース調整用のコマンドが用 意されています。 \, \: \; \quad \qquad 左から順に右の方ほど大きな (横の) スペースを挿入します。 また、\!で小さな負のスペースを挿入 (間隔を詰める) ことができます。 コンパイル結果 \[ \int x\! dx = ∫ ∫ ∫ ∫ ∫ \int x dx = xdx = xdx = x dx = x dx = x dx \int x\, dx = \int x\: dx = ∫ ∫ \int x\; dx x dx = x dx \] \[ \int x\quad dx = \int x\qquad dx \] 23 α \alpha β \beta γ \gamma δ \delta ϵ \epsilon ζ \zeta η ν υ \eta \nu \upsilon θ ξ ϕ \theta \xi \phi ι π χ \iota \pi \chi κ ρ ψ \kappa \rho \psi λ σ ω \lambda \sigma \omega µ τ \mu \tau ε \varepsilon ϑ \vartheta ϖ \varpi ϱ \varrho ς \varsigma φ \varphi Γ Σ \Gamma \Sigma ∆ Υ \Delta \Upsilon Θ Φ \Theta \Phi Λ Ψ \Lambda \Psi Ξ Ω \Xi \Omega Π \Pi 表 4.1: ギリシャ文字 (数式モード) ℓ ∅ \ell ℜ \emptyset ∇ ℵ √ \aleph ♮ ♣ h̄ \surd ⊤ \natural ♯ \clubsuit ♢ \Re \nabla ℑ ̸ \Im \angle ∂ △ \partial \triangle ∞ ∀ \infty ′ \forall ∃ \hbar ı \imath ȷ \jmath ℘ \wp ∥ \| ¬ \neg ♡ \heartsuit ♠ \spadesuit \top ⊥ \bot \sharp \ \backslash \diamondsuit ♭ \prime \exists \flat 表 4.2: 数式モードで使える記号 ± \pm ∓ \mp × \times ∗ \ast ⋆ ∩ \star \cap ◦ ∪ \circ \cup · ⊕ \cdot \oplus ··· ⊖ \cdots \ominus ⊎ \uplus ⊓ \sqcap ⊔ \sqcup \ ⊘ \oslash ⃝ \bigcirc † \dagger ‡ • .. ⊗ \ddots \otimes ÷ .. . ⊙ \vdots \odot \setminus ≀ \wr ⋄ \diamond \ddagger ⨿ \amalg \bullet . \div 表 4.3: 二項演算記号 (数式モード) ≤ \leq ≥ \geq ≪ \ll ⊂ ∼ . = \subset ⊃ \sim ≃ \doteq ∝ \supset \simeq \propto ⊆ ≡ ∈ / ≺ | ⊑ \prec ⪯ \preceq \mid ≍ \asymp \sqsubseteq ≻ ▷◁ ⊒ ≫ \gg ∨ \vee ∧ \wedge \subseteq ⊇ \equiv ≈ \notin ∥ \supseteq \approx \parallel ∈ ∼ = ⌣ \in \cong \smile ∋ ̸ = ⌢ \owns, \ni \neq \frown \succ ⪰ \bowtie ⊢ \sqsupseteq \succeq \vdash |= ⊣ \models \dashv ⊥ \perp 表 4.4: 関係記号 (数式モード) \arccos \arcsin \cos \cosh \csc \deg \exp \gcd \ker \lg \limsup \ln \min \Pr \sinh \sup \arctan \arg \cot \coth \det \dim \hom \iinf \lim \liminf \log \max \sec \sin \tan \tanh 表 4.5: 関数等の記号 (数式モード) 24 ← ↑ ↗ \leftarrow \uparrow \nearrow → ↓ ↙ \rightarrow, \to \downarrow \swarrow ↔ ↕ ↘ \leftrightarrow \updownarrow \searrow ↖ ⇀ ⇀ ↽ \nwarrow \rightharpoonup ↼ ↽ \leftharpoonup \leftharpoondown ⇁ \rightharpoondown \rightleftharpoons 7→ \mapsto ⇐ ⇑ \Leftarrow \Uparrow ⇒ ⇓ \Rightarrow \Downarrow ⇔ ⇕ \Leftrightarrow \Updownarrow ←− ⇐= 7−→ \longleftarrow \Longleftarrow \longmapsto −→ =⇒ ←- \longrightarrow \Longrightarrow \hookleftarrow ←→ ⇐⇒ ,→ \longleftrightarrow \Longleftrightarrow \hookrightarrow 表 4.6: 矢印記号 (数式モード) ò ö \grave{o} \ddot{o} o \overline{o} ó õ c M \acute{o} \tilde{o} \widehat{M} ō ⃗o f M ô \bar{o} \vec{o} \hat{o} \widetilde{M} 表 4.7: アクセント記号 (数式モード) ∑ ∑ ∏ ∏ ⨿ ⨿ ∫ ∫ H I ∩ ∩ ∪ ∪ \sum \prod \coprod \int \oint ⊔ ⊔ ∨ ∨ ∧ ∧ ⊙ ⊙ ⊗ ⊗ \bigcap \bigcup \bigsqcup \bigvee \bigodot \bigotimes ⊕ ⊕ \bigoplus ⊎ ⊎ \biguplus \bigwedge 表 4.8: 大きさ可変の記号 (数式モード) ( { ⌈ ( \{ \lceil ) } ⌉ ) \} \rceil [ ⌊ ⟨ [ \lfloor \langle ] ⌋ ⟩ ] \rfloor \rangle / ↑ / \uparrow \ ↓ \backslash \downarrow | ⇑ | \Uparrow ∥ ⇓ \| \Downarrow ↕ \updownarrow ⇕ \Updownarrow . (何も表示しない) 表 4.9: 左右でバランスする記号・括弧 (数式モード) 25 第5章 図表の組版 LATEX で図表を組版する方法を解説します。 表の作成 5.1 tabular 環境を使うと文字列を縦横に揃えて並べることができます。これに罫線を加えると表が作成 できます。下の例を見てください。 コンパイル結果 \begin{tabular}{|l||c|r|} \hline 元素名 & 記号 & 原子量 \\ \hline\hline 水素 & H & 1.0079 \\ \hline 酸素 & O & 15.9994 \\ \hline マンガン & Mn & 54.9380 \\ \hline \end{tabular} 元素名 記号 原子量 水素 H 1.0079 酸素 O 15.9994 Mn 54.9380 マンガン 使い方は数式モードでの array 環境 (4.2.3 節) と良く似ています。 • 各行について、その行の要素を& で区切って並べます。 • 行と行の間は上から順に \\ で区切ります。 • & で区切る要素の数 (列の数) は、環境の開始時点の書式指定{|l||c|r|}で指定しています。l, c, r のアルファベットが左からそれぞれ 1 つの列に対応します。 • l 左揃え、r 右揃え、c 中央揃えの 3 通りの列の揃え方の指定が可能です。 tabular 環境で罫線を引くには次のようにします。1 • 列と列の間に縦の罫線を引きたいときは、書式指定で{|l||c|r|}のように、列の指定で罫線を引 きたい位置に| (縦棒) を入れます。 また、||のように縦棒を重ねると二重罫線を引きます。 • 行と行の間に横の罫線を引きたい場合は、コマンド\hline を使います。ただし、\hline コマン ドは 行の指定の先頭に置きます。罫線はその行の上に引かれます。 また、\hline\hline のようにコマンドを重ねると二重罫線を引きます。 1 array 環境でも同様の方法で罫線を引くことが可能です。 26 5.1.1 図表の中央配置 図表の幅がページの幅に比べて小さい時、図表だけが偏って配置されて見苦しいことがあります。 そのような場合は、center 環境を使って中央に配置することができます。左寄せする flushleft 環 境、右寄せする flushright 環境とともにその効果を下の例で確認してください。 コンパイル結果 中央寄せ 中央寄せ \begin{center} \begin{tabular}{|c|c|} a b \hline a & b \\ \hline 左寄せ \end{tabular} \end{center} a b 左寄せ 右寄せ \begin{flushleft} \begin{tabular}{|c|c|} \hline a & b \\ \hline \end{tabular} \end{flushleft} 右寄せ \begin{flushright} \begin{tabular}{|c|c|} \hline a & b \\ \hline \end{tabular} \end{flushright} 5.1.2 a b 変則的な表と罫線 揃え方が行によって変わったり、罫線が途中で途切れているような罫線も引くことができます。 • \multicolumn[n]{ 書式 }{ 内容 } ある行の、現在の列から n 個分の列をまとめて1個の列にします。 「内容」を表示する位置は「書 式」で指定できます。ただし、 「書式」は l, r, c のうち1つのみを縦の罫線 (|) と組み合わせたも のに限ります。 • \cline{n-m} 現在の行の上の第 n 列から m 列にかけて横罫線を引く。 次の例のように使います。 27 \begin{tabular}{|cccc|} \hline XX & XY & SPQR & XY \\ \cline{2-4} YY & \multicolumn{2}{|c|}{IV} & \multicolumn{1}{c}{} \\ \cline{1-2}\cline{4-4} \multicolumn{2}{c|}{} & \multicolumn{1}{r|}{P} & YY \\ \cline{1-3} XX & YX & \multicolumn{1}{l}{Q} \\ \hline \end{tabular} 5.2 コンパイル結果 XX YY XY XX YX SPQR IV XY P YY YY Q & YY フロート図表 出版物等では、図表は文章と文章の間にはさみ込むように組版する場合と、図表番号を付して文章と は独立に配置し番号で参照するという場合があります。後者のような図表をフロート図表といいます。 LATEX ではフロート図表を扱うために、table 環境と figure 環境のふたつが用意されています。以 下に table 環境の使用例を示します。 コンパイル結果 表\ref{tab:place}にフロート図表の 表 5.1 にフロート図表の配置オプションを 配置オプションを示します。 示します。 フロート図表は LATEX が最も適切と判断 フロート図表は\LaTeX{}が最も適切と する位置に配置されます。資料のどこかに 判断する位置に配置されます。 あるはずなので探してください。 資料のどこかにあるはずなので 探してください。 \begin{table}[t] \begin{center} \begin{tabular}{c|l} \hline オプション & 指定場所 \\ \hline \texttt{t} & いづれかのページの上部に配置 \\ \texttt{b} & いづれかのページの下部に配置 \\ \texttt{p} & いづれかのページ全体に配置 \\ \texttt{h} & スクリプトに書かれた位置に配置 \\ \hline \end{tabular} \end{center} \caption{フロート図表の配置場所の 指定オプション} \label{tab:place} \end{table} • \begin{table} と \end{table} で囲まれた部分が適切な場所に移動・配置されます。 28 オプション 指定場所 t b p いづれかのページの上部に配置 h スクリプトに書かれた位置に配置 いづれかのページの下部に配置 いづれかのページ全体に配置 表 5.1: フロート図表の配置場所の指定オプション ただし、スクリプト中でこの table 環境が出現する場所より前のページに移動されることはあり ません。 • table 環境は省略可能引数によりフロート図表を配置する位置を指定できます。 – この例の場合、\begin{table}[t] のように引数として t を指定しています。これにより、 移動先はどこかのページの上部となります。どのような指定が可能かは表 5.1 を参照してく ださい。ただし、この指定はあくまで努力目標なので必ずしも指定したとおりに配置される 保証はありません。 – 配置場所の指定は複数指定することもできます。例えば、\begin{table}[htp] のように指 定すると、(1) スクリプトの現在の場所、(2) ページの上部、(3) ページ全体の順に配置を試 みます。配置場所の指定を省略したときは LATEX がもっとも適切と考える配置を行います。 適切な場所に移動・配置されます。 • \caption{見出し}で表に番号を付けて見出しをつけることができます。表番号は章や節番号と同 様に相互参照を行うことができます。(3.1.3 節参照) figure 環境の機能は table 環境とほぼ同じですが次のような違いがあります。 • \caption{見出し}で見出しをつけた時の番号が表 NN ではなく図 NN (NN は番号) のようになり ます。 table 環境は主に tabular 環境などで作った表を扱うために、table 環境はそれ以外の図一般を扱う ことになっていますが、厳格な区別はありません。 29 第6章 より進んだ使い方 ここまでで LATEX はおおよそ使えるようになったと思います。最後に、より進んだ使い方のヒントに ついて解説します。 6.1 文字装飾の指定 LATEX はワープロのような華美な文字の装飾は苦手ですが、文字の大きさを変えたり、斜体・太字体 にするなどの基本的な文字の装飾が可能です。これらの文字の装飾は組み合わせて使うこともできます。 文字の大きさを変える 文字の大きさを変えるには、\small, \large などのコマンドを使います。ただし、これらのコマン ド以降に続く文字すべてに影響しないように、{ と } で囲んで文字の変更の影響を限定します。 スクリプト {\tiny 極小}文字 {\footnotesize 脚注}文字 組版結果 文字 極小 脚注文字 {\small 小さい}文字 {\normalsize 普通}文字 {\large やや大きい}文字 小さい文字 {\Large 大きい}文字 {\LARGE もっと大きい}文字 大きい文字 もっと大きい文字 {\huge 特大}文字 特大文字 {\Huge 超特大}文字 超特大文字 普通文字 やや大きい文字 文字のデザインを変える 文字のデザインを変えるには、\textbf{文字列} などのコマンドを使います。1 書体を変える スクリプト 組版結果 \textrm{Roman ローマン体} Roman ローマン体 \textmc{Mincho 明朝体} \textgt{Gothic ゴシック体} Mincho 明朝体 Gothic ゴシック体 \texttt{Typewriter タイプライタ体} \textsf{Sans-serif サンセリフ体} Typewriter タイプライタ体 Sans-serif サンセリフ体 1 古い指南書等には、例えば\textbf{ 文字列 } ではなく {\bf 文字列 } と書くように解説しているものもありますが、これ は古い書き方なので将来的に廃止される予定です。新しい指定方法を使うことを強く推奨します。 30 太さを変える スクリプト 組版結果 \textmd{Standard 標準の太さ} \textbf{Bold 太字体} Standard 標準の太さ Bold 太字体 書体の形を変える スクリプト 組版結果 \textup{Upright 立体} Upright 立体 \textit{Italic イタリック体} \textsl{Slanted 斜体} Italic イタリック体 Slanted 斜体 \textsc{Small caps スモールキャピタル} Small caps スモールキャピタル 組版結果を見るとわかるように、日本語の文字のデザインにはあまりバリエーションはありません。 (デザインの変更を指定しても実際には変わらないことが多い。) その他 次のような指定 (実際には上の指定を組合せたもの) も可能です。 スクリプト 組版結果 \textnormal{Standard 標準} Standard 標準 (文書スタイルで指定の標準デザインに戻す) \emph{Emphasize 強調} Emphasize 強調 (文書スタイルで指定の強調文字) 数式文字の形の変更 数式文字の装飾も\mathbf などで変更できます。 スクリプト 組版結果 $\mathit{x}=x$ x =x (イタリック体・標準) $\mathrm{x}=x$ $\mathbf{x}=x$ $\mathsf{x}=x$ x=x x=x x=x (ローマン体) (ボールド体) (サンセリフ体) $\mathtt{x}=x$ $\mathcal{K}=K$ x=x K=K (タイプライタ体) (筆記体・大文字のみ) 上の指定は上付き・下付きの数式にも適用されます。また、\mathrm などで囲んだアルファベット列 は各アルファベットの積 (4.2 節参照) ではなくひと続きの記号と解釈されるので、自分で定義した関数 記号を組版するときに使うとよいでしょう。 コンパイル結果 \[ \mathbf{v_o} = (\mathrm{sinh}\:\theta, \mathrm{cosh}\:\theta) \] 31 vo = (sinh θ, cosh θ) パッケージによる機能の拡張 6.2 LATEX は他のいわゆるワープロ ソフトウェアなどに比べて機能が貧弱に思えるかもしれませんが、パッ ケージ機能を使うことによって LATEX に様々な機能を追加することができます。 パッケージ機能を用いて機能を追加するには、スクリプトのプリアンブル部 (2.1 節参照) に \usepackage{パッケージ名} のように書いて使いたいパッケージ名を指定します。 graphicx パッケージによる図の取り込み 6.2.1 LATEX のパッケージ機能の例として、graphicx パッケージについて解説します。 graphicx パッケージは他のソフトウェアで作った図形、グラフ、画像イメージなどを取り込む機能を EX に追加します。LATEX はもともと文字情報の組版を目的に開発されたものなので図形やグラフな LAT どを表示する機能はほとんど持ちあわせていませんが、graphicx パッケージを使うことによって機能 の不足を補うことができます。 graphicx パッケージを使うためには、まずプリアンブル部 (2.1 節参照) に以下のような行を加えます。 \usepackage[dvipdfmx]{graphicx} 本文中では以下のように includegraphics コマンドを使うことによって図を取り込むことができます。 コンパイル結果 \includegraphics[width=3cm]{graph.eps} コンパイル結果 \includegraphics[height=1cm]{graph.eps} コンパイル結果 \includegraphics[scale=0.25]{graph.eps} includegraphics コマンドは以下のような形式で用います。 \includegraphics[大きさの指定]{ファイル名} ファイル名で指定された図を指定された大きさで取り込みます。(画像ファイルはスクリプトと同じ ディレクトリに配置しなくてはいけません。) 省略可能引数の部分では次のように大きさの指定を行います。 • width=長さ 指定した幅で縦横等倍に拡大・縮小する • height=長さ 指定した高さで縦横等倍に拡大・縮小する • scale=倍率 指定した倍率で縦横等倍に拡大・縮小する 省略可能引数を省略した場合は、倍率 1 で取り込まれます。 32 EPS 形式の画像データ取り込み LATEX で取り込みを行うのに最も適したファイル形式は EPS (Encapsulated PostScript, 拡張子 .eps)2 で す。図形や文字情報を組み合わせて EPS 形式の画像を自前で作成する方法については付録 A を参照し てください。 通常の画像データの取り込み EPS 形式以外の画像ファイル形式も取り込むことができますが、いくつか注意が必要です。ここでは 一般的によく使われる画像ファイル形式である JPEG(拡張子 .jpg) ファイルを取り込んでみましょう。 (JPEG ファイルの他にも例えば PDF ファイルなども同様に取り込み可能です。) スクリプトの記述は EPS の場合と同様です。 コンパイル結果 \includegraphics[scale=0.2]{daimonji.jpg} このスクリプトをコンパイルするときは、次のように platex コマンドへのオプションとして -shell-escape を指定する必要があります。(スクリプトファイルの名前を abc.tex とした場合。) EPS ファイル以外の形式を取り込むときの LATEX スクリプトのコンパイル % platex -shell-escape abc.tex ※注意 セキュリティ上の理由3 のため、出所不明の信頼できない LATEX スクリプトを-shell-escape オ プションを付けてコンパイルしないでください。 コンパイルした後、pxdvi コマンドでプレビュー (2.2.3 節参照) することは可能ですが、画像イメー ジは表示されません。(画像が表示されるべき場所に空白が表示される。) 組版がうまく行ったかどうかを確認するには、dvipdfmx コマンドで PDF ファイルを生成 (2.2.4 節 参照) し、Acrobat Reader などの PDF ビューワで表示して確認してください。印刷も Acrobat Reader から行います。 6.2.2 その他の有用なパッケージ graphicx の他によく使われるパッケージをいくつか紹介します。(ここに紹介する以外にもたくさん の便利なパッケージが利用可能です。参考文献を参照するなどして探してみるとよいでしょう。) enumerate enumerate 環境の番号の振り方などを柔軟に設定できるようにするためのパッケージ supertab 複数ページにまたがる表 (tabular 環境で作る表は1ページ内に収まらなければならない) を 作るためのパッケージ multirow 表の中に複数の行にまたがったエントリを作るためのパッケージ (multicolumn コマンド — 複数の列にまたがったエントリを作る (5.1.2 節) — に対応) 2 EPS は画像をベクトル情報として記録しているので、拡大・縮小を行なっても画像の劣化が起こりにくい形式です。 -shell-escape をつけてコンパイルすると、任意のプログラムを実行することが可能になります。そのスクリプ トの作者が悪意を持っていた場合、有害なプログラムを実行することも可能です。 3 オプション 33 ascmac 文章をさまざまな枠で囲むためのパッケージ amsmath AMS(American Mathematical Society) が開発を後押ししている、数式組版のための拡張 パッケージ。より高度な数式の桁揃えや、多数の数学記号を使用することが可能になる。 color モノクロではなくカラーの文書を作成するためのパッケージ url インターネットで使われる URL などの表記を、例えば http://www.kyoto-u.ac.jp/20XX/10/01/ myblog/blog20xx1001.html のように適当な場所で自動的に改行させるためのパッケージ xypic 丸や四角などの単純な図形を矢印などで結んだダイアグラム図などを、図形エディタなどを使わ ずに LATEX コマンドの組合せだけで組版可能にするパッケージ マクロの活用 6.3 LATEX のスクリプトを書いていると、似たような LATEX コマンドの組合せが何度も出てくることがあ ります。このようなときはマクロの機能を使うと便利です。 マクロの例を見てみましょう。スクリプトに \newcommand{\norm}[1]{\parallel #1 \parallel} のように書き加えます。(書き加える場所は、プリアンブル部 (2.1 節参照) もしくは本文中のどちらかで 行います。一度定義すると、スクリプトのそれより後ろの部分で他のコマンドと同様に使うことができ ます。そのマクロをスクリプト全体で使いたい時はプリアンブル部で定義するのがよいでしょう。) newcommand はマクロを定義するためのコマンドで、この例では norm という名前の新しいコマンドを 定義します。省略可能引数の 1 は norm が1個の引数を取るコマンドであることを意味しています。ス クリプト中で\norm{引数文字列}のように使うと、newcommand で指定した文字列に自動的に置き換え られます。ただし、文字列中、#N (N は番号) は第 N 番目の引数の文字列に置き換えられます。 例えば、\norm{x} はコンパイル時に \parallel x \parallel に置き換えられます。次のスクリプ ト例で確認してください。 コンパイル結果 $\norm{x + y} \leq \norm{x} + \norm{y}$ ∥ x + y ∥≤∥ x ∥ + ∥ y ∥ マクロ定義の一般形は次の通りです。 \newcommand{\コマンド名}[N ]{置き換える文字列} ただし、N はコマンドの引数の数。(引数を持たない場合、\newcommand{\コマンド名}{文字列} のよ うに省略可) ここで、マクロが定義するコマンドは単純に引数として与えられた文字列を置換するだけであること に注意してください。例えば 2 の巾乗のマクロ pow を \newcommand{\pow}[1]{2^#1} のように定義するのはあまりよくありません。 なぜなら、2x1 を組版するつもりで$\pow{x_1}$ としてコンパイルすると 2x1 のようになってしまい ます。マクロは単純に置き換えを行うだけなので、\pow{x_1} は 2^x_1 のように展開されてしまうか らです。 このように引数の置換によって意図しない結果となることを防ぐためには、マクロ定義中に適切に中 括弧やスペースを挿入します。例えば、上の巾乗のマクロの場合は \newcommand{\pow}[1]{2^{#1}} と定義すれば、任意の引数について意図したとおりに組版されます。 34 マクロの利点 マクロには次のような利点があります。 • 長いコマンドの組合せの繰り返しを避ける 例えば、次のような数列を組版したいとします。 1, 1 1 1 1, 2 ,..., 1 + n ,... 1+ 2 1+ 3 n+1 マクロを使わずに書いた場合、 \[ 1, \frac{1}{1+\frac{1}{2}}, \frac{1}{1+\frac{2}{3}}, \dots, \frac{1}{1+\frac{n}{n+1}}, \dots \] のようにかなり長くなっていしまいますが、マクロを \newcommand{\frfr}[2]{\frac{1}{1+\frac{#1}{#2}}} のように定義しておけば、次のように簡潔にかつわかりやすく書くことができます。 \[ 1, \frfr{1}{2}, \frfr{2}{3}, \dots, \frfr{n}{n+1}, \dots \] • 統一的な組版を行う 長い文書を書いていると文書の一貫性を保つのが段々大変になってきます。マクロは一貫性を保 つための手段としても使うことができます。 例えば論文中の学名を常に斜体で組版したいとします。\textsl{学名} のように 6.1 節で紹介し たコマンドを直接使って書体を指定してもよいのですが、長い論文を書いているといつの間にか文 書の後ろの方と前の方で同じ用途に対して異なる書体を使ってしまう (例えば\textit{学名} の ように) ことがよくあります。このようなことを防ぐために、 \newcommand{\binomen}[1]{\textsl{#1}} のように予め専用のコマンドを定義しておき、学名については常に\binomen{学名}のように指定 するとよいでしょう。 コンパイル結果 ホッコクアカエビ ホッコクアカエビ (学名: Pandalus eous) (学名: \binomen{Pandalus eous}) は は北陸地方沿岸などで取れる小ぶりの 北陸地方沿岸などで取れる小ぶりの エビ。美味。イセエビ (学名: Panulirus エビ。美味。イセエビ japonicus) もうまいがより大型である。 (学名: \binomen{Panulirus japonicus}) もうまいがより大型である。 • 後で確定する 文書作成の現場では、いくつか未確定の事項があるにも関わらず、文書を書き始めなければなら ないことがあります。このような場合にもマクロを便利に使うことができます。 35 例えば、新しく発見した生物の学名がまだ確定していないが論文投稿の締切りに間に合わせるた めに本文は書き始めなければならないという状況を考えましょう。このような場合、新生物の学 名を適当なマクロとして定義しておき、スクリプト中で新生物の学名は必ずこのマクロで参照す ることにしておきます。(学名が確定するまでは暫定的な学名をとりあえず設定しておきます。) 例えば、学名を \newcommand{\catname}{まだない} のように暫定的に定義して論文を書いていきます。 この時点ではスクリプトをコンパイルすると次のように暫定的な名称で組版されます。 コンパイル結果 吾輩は猫である。学名は 吾輩は猫である。学名はまだない。 \binomen{\catname{}}。 いざ学名が決定したらマクロの定義を次のように変更します。 \newcommand{\catname}{Felis silvestris catus} スクリプトをコンパイルし直せば、文章中の暫定的な名称が一斉に確定した名称に置き換えられ ます。 コンパイル結果 吾輩は猫である。学名は 吾輩は猫である。学名は Felis silvestris catus 。 \binomen{\catname{}}。 このようにしておけば、名称が確定した時の書き直しの労力が減らせます。また、直し漏れが起 こる心配もありません。 6.4 スクリプトファイルの分割 スクリプトファイルは必ずしも1つのファイルである必要はありません。例えば次のスクリプトを見 てください。 \documentclass{jarticle} \begin{document} \input{10intro.tex} \input{20startup.tex} \input{30struct.tex} \input{40math.tex} \input{50table.tex} \end{document} 実は、このスクリプトはこの資料のスクリプトをごく簡単にしたものです。本文中に文章が何も書か れていないように見えますが、文章は別ファイルのスクリプトに分散して書かれています。 36 コマンド\input{ファイル名} はその場所にファイル名で指定されたファイルに書いてある LATEX スクリ プトをそのまま挿入するためのコマンドです。この例では、10intro.tex に第 1 章の内容、20startup.tex に第 2 章の内容、... が書かれており、全体がまとまって資料が完成されます。 このようにスクリプトファイルを分割すると、共同作業 (論文の共著など) のときにとても便利です。 それぞれどの部分を執筆するか担当を決めておき、それぞれの執筆担当部分に相当するファイルを編集 し、その結果を持ち寄ってひとつの文書を完成させることができます。(スクリプトファイルが 1 つだと 誰かが文書のどこかを編集している間は他の人は別の場所の編集を行うことができないので不便です。) 6.5 参考文献の提示 学術文書においては出典や文献リストの明示は必須です。LATEX では文献リストを組版する仕組みを 2通りほど提供しています。 本資料ではどちらの方法もその詳細については割愛します。具体的な方法については参考文献を参照 してください。 thebibliography 環境を使う方法 itemize 環境と似たような方法で参考文献を列挙する形式です。 レイアウトや書体などをわりと自由に指定することができる一方で、レイアウトの統一性を保ったり、 著者名の辞書順で並べ替えたい場合は不便です。文献の数が多い時にはあまりおすすめできません。 BibTEX を使う方法 文献データベースを BibTEX 形式というフォーマットで用意して、これから自動的に文献リストを生 成する方法です。文献の数が多い時に特に便利です。一度データベースを作ってしまえばデータを使い まわすことができます。 本文中で参照されている文献のみがデータベースから自動的に抽出されます。並べ替えなどが必要なと きは自動的に行われます。レイアウトや書体なども専用のスタイルファイルで設定することができます。 なお、この演習の演習室の環境でデータベースから文献リストを自動生成するためのコマンド名は pbibtex です。 37 第7章 よくある間違い・注意点 最後に、LATEX 初心者にありがちなよくある間違い・注意点についてまとめておきます。 コマンド・環境名は半角が基本 LATEX では文章の中身以外は基本的にすべて半角文字です。 半角文字で入力すべきところ (コマンド名や 3.3 節の特殊文字等) を不注意で全角文字で入力して しまうと、非常に見つかりにくいエラーとなるので気をつけてください。 ゼロ引数コマンドの後ろには {} をつける ゼロ引数コマンド (引数を取らないコマンド) の直後に文章の 内容を続けて書くとコンパイルエラーになることがあります。 例えば、\LaTeX は文字列 “LATEX” を組版するためのゼロ引数コマンドですが、これを \LaTeX はいいね! のようにコマンドと後に続く文字列をくっつけて書いてしまうとエラーになってしまいます。こ れは、コンパイル時に LATEX がこのコマンド名を “LaTeX” ではなく “LaTeX はいいね” と解釈し てしまったためです。このようなことを防ぐためには、コマンドの最後に{}を付け足します。 コンパイル結果 \LaTeX{}はいいね! LATEX はいいね! 最初のエラーメッセージをまず修正する コンパイル中にエラーが出たときは、エラーを全部直そうと せず、LATEX が最初に報告するエラーを修正してください。(2.3 節参照) LATEX が指摘する場所がエラーの原因とは限らない LATEX が指摘する箇所はかなずしもエラーの原因 となった場所とは限りません。指摘された場所より前にエラーの原因がある可能性もあります。 (2.3 節参照) 38 参考文献 (*が付してある文献は演習室に配備してあります。) [1] Donald E. Knuth. The TEXbook (Computers & Typesetting). Addison-Wesley Professional, 1984. [2] * Leslie Lamport (阿瀬はる美 訳). 文書処理システム LATEX2 ε. ピアソン・エデュケーション. LATEX の開発者本人による解説。これ一冊読めば LATEX をひと通りマスターできる。(但、日本語関係は除く。) コンパイル用のコマンド名等は本資料のものと読み替えること。 [3] *奥村 晴彦. LATEX2 ε美文書作成入門. 技術評論社. 日本語も含めた LATEX の使い方についてひと通りマスターできる。 コンパイル用のコマンド名等は本資料のものと読み替えること。 [4] * M. Goosens, F. Mitelbach, A. Semarin (アスキー書籍編集部 監訳). The LATEX コンパニオン. ア スキー. LATEX で使用可能な種々のパッケージとその使い方についての解説。 [5] 岩熊 哲夫, 古川 徹生. LATEX のマクロやスタイルファイルの利用, 1994. URL: http://mechanics. civil.tohoku.ac.jp/~bear/bear-collections/styleuse.lzh LATEX でマクロやスタイルファイル (パッケージの旧名) を利用するときのガイド。参考になるところも多いが、 少し古い資料なので現在の LATEX のシステムではうまくコンパイルできないものも多いので注意が必要。 [6] 倉島保美. 理系のための英語ライティング上達法 — 情報を正しく効果的に伝える技術 —. 講談社 ブルーバックス B-1311, 2000. 論文などの理系の英文を効果的に描くための技術について日本語で解説した良書です。物事を整理して理解し やすいように伝えるためには、どのように文章構造を構成したらよいかを的確に解説しています。(LATEX で文 書構造を明示する機能については本資料第 3 章参照。) 英語文書を想定していますが、英語に限らず日本語で 文書を書くときにも大いに役立つ内容です。 39 付 録A Libre Office による図形データの作成 LATEX で取り込みを行うのに最も適した EPS ファイル形式での図形データを、Libre Office を使って 作成する方法について解説します。 Libre Office (URL: http://ja.libreoffice.org/) は、Word(ワープロ) や Excel(表計算) などの代 替候補となるオフィス・スイートです。Libre Office は、商用のものと違って誰でも自由に利用可能な オープンソフトウェアです。1 Libre Office はワープロや表計算に加えて、図形を描画するための機能を Libre Office Draw で提供し ています。この Libre Office Draw を使って図形データを作成します。 • (Linux で) メニューバーから、アプリケーション → オフィス → Libre Office Draw と選択して Libre Office Draw を起動します。 • 図形を配置します。(絵画を描くのと違って、丸や四角などの基本的な図形や文字などを拡大・縮 小・回転して配置していきます。色や線の太さなど様々な装飾が可能です。どれもマウスで直観的 に操作します。) • データが完成したら一度セーブします。 1. Libre Office Draw のメニューバーから、ファイル → 名前を付けて保存 を選択します。ファ イル名の指定を促すウィンドウが開きます。 2. ファイルの種類で、ファイルの形式を「ODF 図形描画」に指定します。 (あとで図形データを変更する必要があるときは、EPS ファイルではなくこのファイル (拡張 子.odg) を変更します。) 3. ファイル名には日本語を使わず、半角英数字だけとしましょう。(日本語ファイル名では LATEX でうまく取り込めないことがあります。) • 次の手順でデータを EPS 形式に変換します。 1. Libre Office Draw のメニューバーから、編集 → 全て選択 とする※重要※。 2. さらに、メニューバーから、ファイル → エクスポート を選択。ファイル名の指定を促すウィ ンドウが開きます。(図 A.1 参照) 3. ファイルの種類で、ファイルの形式を「EPS - Encapsulated PostScript」に指定します。ま た、「選択範囲」をチェックする※重要※。ファイル名はそのままでよいでしょう。 4. 「保存」ボタンを押すと EPS オプション のウィンドウが開くので、カラーもしくはグレー スケールを選択。(他は特に変更の必要はない) 5. 「OK」ボタンを押すと指定したファイルに EPS 形式で書き出されます。 1 Libre Office は商用のオフィス・スイートとの完全な互換性を保証はしていません。多くの場面で代替となり得るものです が、印刷・表示結果が必ずしも合致するとは限らないので注意が必要です。 40 図 A.1: Libre Office Draw — EPS 形式に変換 41 付 録B AUCTeX — LATEX 文書の入力支援 機能 UNIX(Linux) でよく使われるテキストエディタ Emacs は、LATEX 文書作成をサポートする仕組みを いくつか提供しています。 ここではそのうちのひとつ AUCTeX を使う方法について解説します。1 AUCTeX の設定 B.1 まず AUCTeX が使えるように Emacs の設定を行います。 1. (Linux で) Emacs を起動します。 2. Emacs でファイル ~/.emacs.d/emacs23-vine-default.el を読み込み、図 B.1 のように編集し ます。 具体的には、2つの行 ;;;;; AUCTeX ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; から ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; までに囲まれた部分を追加します。 量が多いので、演習ホームページにこのファイルのコピーを用意しておきます。 3. 一旦 Emacs を終了します。次から Emacs を起動すると AUCTeX が使えます。 B.2 AUCTeX の使い方 Emacs で拡張子.tex のファイルを読み込むと自動的に AUCTeX モードになります。 なお、Emacs で.tex ファイルを新規作成すると、AUCTeX が次のような行を勝手にファイルに挿入 しますが、これは削除せずにファイルの末尾に残しておいてください。 %%% %%% %%% %%% Local Variables: mode: japanese-latex TeX-master: t End: 1 他には YaTeX(やちょう) が有名です。 42 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; -*- coding: utf-8-unix -*;; FSF Emacs 23 用 vine-default 設定ファイル ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Vine Linux のデフォルト設定を無効にしたい場合は、 ;; 以下を有効にしてください。 ;; (setq vine-default nil) ;; 環境変数 EMACS_IME と異なる IME を使いたい場合は、 ;; 以下を有効にして設定することができます。 ;; (setq emacs-ime "atokx3");; anthy-el atokx3 ibus-el mozc tamago scim scim-bridge skk wnn7egg ;; ;; ;; ;; ;; マクロサーチパスの追加 例えば、~/.emacs.d/local (add-to-list ’load-path (add-to-list ’load-path (add-to-list ’load-path 以下にユーザ用の *.el, *.elc を置けます。 "~/.emacs.d/local") "~/lib/emacs") "~/.emacs.d/auto-install") ;;;;; AUCTeX ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq vine-default-auctex t vine-default-preview-latex t) (setq TeX-default-mode ’japanese-latex-mode) (setq japanese-LaTeX-command-default "pLaTeX") (setq TeX-view-program-list ’(("pxdvi" "pxdvi -nofork -watchfile 1 -editor \"emacsclient +%%l %%f\" %d -sourceposition %n:%b") ("acroread" "acroread %o") )) (setq TeX-view-program-selection ’((output-dvi "pxdvi") (output-pdf "acroread"))) (add-hook ’LaTeX-mode-hook ’TeX-PDF-mode) (add-hook ’LaTeX-mode-hook ’LaTeX-math-mode) (add-hook ’LaTeX-mode-hook (function (lambda () (TeX-source-correlate-mode 1) (setq TeX-source-correlate-start-server t) (add-to-list ’TeX-command-list ’("pLaTeX" "platex -src-specials %t" TeX-run-TeX nil (latex-mode) :help "Run e-pLaTeX")) (add-to-list ’TeX-command-list ’("dviView" "pxdvi -nofork -watchfile 1 -editor \"emacsclient +%%l %%f\" %d -sourceposition %n:%b" TeX-run-discard-or-function t t :help "Run DVI Viewer")) ))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Local Variables: ;; mode: emacs-lisp ;; End: 図 B.1: Emacs の設定 43 基本的に全ての操作は Emacs のメニューバーに表示されるプルダウンメニュー「LaTeX」(LATEX ファ イルの編集)、「Command」(スクリプトのコンパイルとプレビュー) からマウスで選択可能ですが、対 応するキーボード操作を覚えるともっと快適に素早く編集を行うことができます。 以下に重要なキーボード操作を列挙しておきます。 LATEX ファイルの編集 C-c C-s C-c C-e \section, \subsection などを挿入します。 指定した環境名で\begin{環境名}, \end{環境名} の組を挿入します。 C-c ] カーソル位置から見て一番近い \begin{環境名} に対応する \end{環境名} を挿入 して環境を閉じます。 C-u C-c C-e 現在のカーソル位置を囲む最も内側の環境名を変更します。 C-c C-j C-c C-m itemize, enumerate, description 環境内で\item を挿入します。 指定した名前でコマンド \指定した名前{} を挿入します。 C-c C-f Key \textbf{...} (数式モードの場合\mathbf{...}) のような文字装飾のコマンドを 挿入します。どの装飾を行うかは Key で指定します。 例えば、C-c C-f C-i は\textit{}, C-c C-f C-b は\textbf{}など。どの Key がど の装飾に対応するかは C-c C-f ? で表示される。 C-{ { と } の組を挿入します。 C-} 現在のカーソル位置を囲む最も内側の } の右隣にカーソルを移動します。 • 環境やマクロの正確な名前が思い出せないときは、最初の何文字かだけ入力して TAB キーを叩く と、名前を補完あるいは候補のリストを表示してくれます。 • AUCTeX が知っている環境やマクロについては、引数を順に入力するよう世話を焼いてくれます。 よくわからないときはとりあえず Enter(Return) キーを叩いておけばよいでしょう。 • スクリプトをいちから作る場合は、まず C-c C-e で document 環境の挿入を選択します。そうする と、\documentclass{...}も自動的に挿入してくれます。 コンパイルとプレビュー C-c C-c コンパイルやプレビューなどの作業を選択します。 選択可能な主な作業: C-c C-k C-c C-l pLaTeX View スクリプトのコンパイル Print コンパイル結果の印刷 コンパイル結果のプレビュー 現在実行中の作業を強制的に中止します。 コンパイル等の作業時に出力されたメッセージを表示します。LATEX のコンパイル 時のメッセージを確認する等のために使います。 C-c ` コンパイル時のエラーを解析し、エラーの場所と予想されるエラーの原因を表示2 します。(` は backquote 記号) 2 2.3 節でも書いたように、L AT X が指摘するエラー箇所が必ずしもエラーの原因となった場所とは限りません。また、ここで E 表示されるエラーの原因も正しいものである保証はありません。 44 B.2.1 スクリプトとプレビューの相互参照 LATEX では、組版内容がどのように配置されるか確認するのにコンパイル作業が必要なため、スクリ プトの内容とプレビューの結果を対応させるのが面倒という欠点がありますが、AUCTeX はこれら2つ の対応をとる手助けをしてくれます。 • 環境名やマクロ名の入力と同じように、操作の名前がわからない場合は TAB キーを叩くと、選択 可能な操作名を補完あるいは候補のリストを表示してくれます。 • Emacs での操作 C-c C-v プレビューの画面にカーソル位置に相当する部分を表示させます。 • プレビューワでの操作 プレビューの画面上で Ctrl キーを押しながらマウスの左ボタンをクリックすると、Emacs のカー ソルが対応するスクリプトの位置に移動します。 どちらも対応する位置はおおよその位置になり、必ずしも正確ではありませんがスクリプトの編集作 業がかなり楽になるでしょう。 45