TeX/LaTeX入門

TeXとはドナルド・クヌースが開発した電子組版ソフトウェアである。Microsoft Windows、OS X、UNIXなど様々なプラットフォームで利用可能であり、商業印刷並みの品質で印刷を行うことができる。LaTeXはレスリー・ランポートがTeXの上にマクロパッケージを組み込んで構築した文書処理システム(テキストベースの組版処理システム)である。ごく基本的な機能を有しているTeXと組み合わせて用いることで、より手軽に組版を行うことができる。
TeX LiveなどのTeXディストリビューション、またはこれを元にした公式パッケージ(FreeBSDであればports、Fedora であればyum、Debian や Ubuntu であれば .deb など)を導入することで容易に利用可能となる。
UbuntuにTeXをインストールするにはコマンドラインを開いて以下のコマンドを入力する。
MathLibreはKnoppix を原型に開発されたLinux ディストリビューションであり、TeXなど様々な数学ソフトウェアが初期搭載されている。
TeX LiveにWindows用のインストーラ(install-tl-windows.exeまたはinstall-tl.zip)が作成されており、これらを用いることで比較的容易に環境を構築することができる。またWindows向けに簡単なインストーラが公開されている。
MacTeXはTeXのほか、TeXShopやBibDeskなど、関連ツールがインストールされる。MacTeXは、Homebrewによって導入することもできる。
Cloud LaTeX は株式会社アカリクが開発した日本語対応済みオンラインLaTeXコンパイルサービスである。利用にはアカウント登録が必要になる。論文誌等のテンプレート各種も用意されている。
ShareLaTeXは英国ShareLaTeX社が開発したオンラインで使用できるLATEXエディタで、リアルタイムの共同制作が可能である。日本語で利用するにはプリアンブルを次のように書く:
この章では最初にlatexコマンドを用いた英語のみの文書作成、続いてuplatexコマンドを用いた日本語を含む文書作成の順に解説します。入力するコマンドがcommandである場合、以下の様に示します。
$はシェルの出力(プロンプト)であり、ユーザが入力する必要はありません。コマンドを実行(commandを入力しEnterキー等を入力)すると、上の例では“output, output”が二行出力されていることを示します。コマンド入力に関してはUNIX/Linux入門やMS-DOS/PC DOS入門を参照して下さい。
日本語を扱った文書を作成する前に、まずは動作確認を含めて英語の文書を作成しましょう。テキストエディタを用いてtest1.texというファイルを作成します。ファイルの内容は以下のようにします。
大文字と小文字は区別されます。大文字は小文字にしないで入力してください。
これを保存した上で、以下のコマンドでLaTeXを実行します。引数には作成したLaTeXファイルの拡張子(.texサフィックス)を除いた名前を指定します。
問題なくコンパイルされると最後の二行が上のようになり(環境によっては出力されるサイズが異なるかもしれません、以下同様です)、text1.dviというDVIファイルが作成されます。作成されたDVIファイルは、dvipdfmxでPDFに変換することが出来ます。このドキュメントには、TeX・LaTeXともにロゴに変換された上で、1行目に"Hello, TeX"、2行目に"Hello, LaTeX"と表示されます。
test1.texファイルと照らし合わせて解説をします。
%以降は全てコメントとみなされ、出力されません。今回はファイル名を明確にするために書いてみました。
全てのLaTeXドキュメントは\documentclass{...}コマンドより始まります。この波括弧内にクラスファイルと呼ばれる、文書のレイアウトなどを定義しているファイルを指定します。今回の場合、クラスファイルはarticleです。これは短いドキュメントの書式で、論文の記事に類似しています。
\begin{...}は\end{...}と対応して使い、環境と呼ばれる区切りをあらわします。今回の場合、環境はdocumentです。これは文書の本文を示す重要な環境で、この中にあるものが出力されます。\begin{document}より前の行をプリアンブルと呼びます。
最初の段落で、\に続く\TeXはコマンドと呼ばれ、様々な表現を可能にします。このコマンドはTeXのロゴ(TeX)を表示します。\\は強制改行をするコマンドです。
前の段落で強制改行されているので、行頭は字下げされずに出力されます。\LaTeXはLaTeXのロゴ(LaTeX)を出力するコマンドです。行末に強制改行のコマンドがあります。
本文の終わりを示します。これ以降は出力されません。
続いて日本語を扱った文書を作成します。日本語を扱うためには pLaTeX /upLaTeXが必要となり、ソースファイルを保存するときは文字コードに気をつけなければなりません。まずはソースファイルを保存するときに必要とされる文字コードを調べて見ましょう。以下のコマンドを実行してみてください。
出力の最初の行に(utf8.uptex)と表示されると思います。これは利用した組版ソフト(今回の場合はuplatex)に設定されたソースファイルに使用する文字コードと内部文字コードを示しています。上記の例ではソースファイルに使用する文字コードはUTF-8、内部文字コードはuptexを示しています。
次に以下の内容を、組版ソフトに設定された文字コードと同じになるように、utf8.uptexであればUTF-8で、test2.texとして保存してください。ソースファイルの文字コードが組版ソフトの設定と異なると、出力結果が文字化けを起こすことがあります。
今回は日本語を扱っているのでクラスファイルにはujarticleを指定してください。
先ほどと同様にコンパイルしてみましょう。今回は日本語の含まれるソースをコンパイルするので、コマンドにはuplatexを使用します。
うまくコンパイル出来れば、最後の二行が上のように出力されます。こちらも同様にdvipdfmxでPDFに変換することが出来ます。
今回は日本語を含んでいるソースファイルをコンパイルしました。日本語を含む文書作成の際、クラスファイルにはujarticleやujreportなどを指定します。
TeXでは一行以上空けない改行は全て無視されます。ですから、DVIファイルの“こんにちは、世界。”と“こんにちは、TeX。”は同じ行に出力されています。テキストエディタで編集している際、一行が長くなると場合によっては横スクロールが必要となり、見やすさが損なわれるので適度に改行することがあります。
では段落を作りたいときはどうすれば良いのでしょうか。一つは英語だけの文書を作成した際に利用した、\\コマンドです。しかし先ほど説明したとおり、強制改行の命令なので行頭の字下げは行われません。そこで今回のように、一行空けた改行を行います。こうすることで新たな段落を作ることができるのです。
この章ではレポートなどの文書を作成する際に必要となる、表紙や章立ての作成を行います。論文の作成を例に話を進めますが、レポートでも同様に作業を行なうことができます。
TeX文書の最初に使用する\documentclass{}コマンドは、大括弧([と])を用いてオプションを渡すことが出来ます。オプションを指定することで、細かい指定をすることが出来ます。
以下の内容をclassoption.texなどとし、保存してください。
続いて、以下のコマンドでコンパイルします。
\documentclassコマンドの中括弧の前に、大括弧でオプションを指定することが出来ます。省略された場合はデフォルトのオプションが実行されることになります。
以下にujarticle.clsで指定できる殆どのオプションを掲載します。カンマで区切っているものは、そのいずれかしか選択できないものです(a4paperとa4jの項目も同時指定不可)。
プリアンブルとは、パッケージや独自のマクロを定義する際に用いる場所です。
パッケージとは、別のTeX文書をプリアンブルへ読み込むことで、初期状態では用意されていないような便利な機能(正確にはマクロと呼ばれます)を追加することが出来ます。
マクロとは、今までに紹介した\TeXコマンドなど、一度呼び出すと一連の処理を行うものです。
まずは以下の内容をpreamble.texなどとし、保存してください。
今まで通りにコンパイルしますが、urlパッケージが無い場合は以下のようなエラーが表示されます。エラーが表示されたら、xを入力してEnterキーを押して終了します。
\usepackage{}コマンドは、中括弧に指定されたファイル名に、拡張子が.styのファイルを読み込むコマンドです。\newcommandコマンドは新たにマクロを定義するコマンドです。
ここではプリアンブルへ\usepackage{}コマンドの書き方を覚えるだけで十分です。\newcommandコマンドに関してはここで理解する必要はありませんので、詳しくは#応用で説明します。
論文では最初のページに、表題や著作者などを記すことが多いと思います。LaTeXでは比較的簡単に作成することが出来ます。
下の内容をmaketitle.texなどとし、保存してください。
続いて、以下のコマンドでコンパイルします。
では、この例に出てくる主要なコマンドの解説をします。コマンド名が太字のものは\maketitleを使用する際に必須のコマンドで、省略することはできません。
\titleと\author、そして\dateコマンドは引数を取るコマンドです。引数は例の通り、{と}の中括弧で囲みます。例では本文の開始と同じページに表紙を印刷しましたが、1ページ使って表紙を印刷したい場合はクラスファイルオプションにtitlepageを指定します。つまり、\documentclass[titlepage]{ujarticle}と書けばそれだけでいいのです。
以下の内容を、abstract.texと保存しましょう。
概要はabstract環境を用います。環境は、\begin{}コマンドと\end{}コマンドで囲うものですね。abstract環境では“概要”という文字を太字で印刷し、概要の文章の左右に空白を空けて印刷します。jsarticleクラスでは\smallサイズで印刷します。
“概要”という文字を“要約”などに変更したい場合は、#応用で詳しく説明します。
以下の内容を、toc.texと保存しましょう。
\tableofcontentsコマンドを使用するときは、3回程度はコンパイルします。
\tableofcontentsコマンドでは、コンパイル時に生成される.tocファイルを基に目次を生成します。この.tocファイルは後述の\sectionコマンドなどの情報を書き出してあるファイルで、初めてのコンパイル作業では.tocファイルがないため、目次は生成されません。
また2回目のコンパイルで目次が挿入されると目次以降の本文がずれてしまい、2回だけでは目次と本文のページ番号が合わない場合がありますので、コンパイルは少なくとも3回程度行なってください。
論文では複数の“章”や“節”という固まりを作ることになると思います。ここでは、章立ての仕方について解説します。
以下の内容を、section.texなどで保存しましょう。
今までと同様にコンパイルしてみましょう。
上の例では\sectionコマンドと\subsectionコマンドのみを使いましたが、同様のコマンドは以下の表の通りです。
※\chapter{}コマンドはarticle, ujarticleクラスでは使用できません。
章立てコマンドは自動的に章番号をつけ、上位レベルのコマンドを記述すると番号は再び1から始まります。これらのコマンドは、\sectionに続けて\subsubsectionを記述することができますが、文書の論理構造的に正しくないので、\sectionの次は\subsection以上のものを記述するようにしましょう。
章番号を付けずに、目次へ出力しない章を作りたいときはどうすればよいのでしょうか。これは簡単で、それぞれのコマンド名のあとにアスタリスク(半角の*)を付けるだけです。
番号を出力するとともに“章”という文字を出力したりする場合は、#応用を参照してください。
(stab)
この章では文字列の見た目を変更するコマンドを紹介します。
フォントサイズは、サイズを変更したい文字列を中括弧で囲い、最初に変更するコマンドを記述します。中括弧で囲んでいる中に、別の中括弧を含めた場合は最も内側が優先されます。
上記以外のサイズ変更コマンドは以下の表の通りです(ujarticleクラス)。各コマンドにおける実際のフォントサイズは、\documentclassコマンドのオプション等で指定された基準のフォントサイズ(\normalsize)によって異なります。
LaTeXで書体を扱う際、以下の種類に分けることが出来ます。
更に記述の方法は、以下の2種類あります。
宣言型の記述では、中括弧を用いて範囲を指定しない限り最後まで変更されます。
イタリック体と斜体の違いですが、イタリック体は通常体を傾けた形でデザインされたものを使用するのに対し、斜体は通常体を無理矢理傾けて使用します。
宣言型では\normalfontコマンド、コマンド型では\textnormal{}コマンドは通常の書体設定(大抵は宣言型記述で、\rmfamily\mdseries\upshape)に戻します。また宣言型記述方法で、タイプライタ体を\ttコマンドで記述できるシステムがありますが、互換性維持のためのコマンドなので上で示したコマンドを使いましょう。
ファミリーとシリーズ、シェイプは以下のように、それぞれを組み合わせることが可能です。同じ種類のコマンドを記述すると最後のものが優先されます。
この章では文書作成の上で有用な環境である、箇条書きを幾つか紹介します。
箇条書きには幾つか種類があります。
箇条書きの構造は、\begin{}コマンドで見た目を決定する環境を開始し、\itemコマンドで要素を記述します。
このソースファイルをコンパイルすると、中黒で順序のない箇条書きを作ることが出来ます。またソースファイルでは、LaTeXの構造を分かりやすくするために\itemコマンドの前に半角スペースを2個入れていますが、出力には影響ありません。
このソースファイルをコンパイルすると、算用数字で順序のある箇条書きを作ることが出来ます。
このソースファイルをコンパイルすると、\itemコマンドの直後に[と]で囲んだ文字列が太字で印刷され、定義リストを作ることが出来ます。
他の文献などから引用する場合に用いるのがquote環境とquotation環境です。
引用文中の段落の字下げを行わない引用環境です。短い引用に用いられます。
引用文中の段落の字下げを行う引用環境です。比較的長い文章を引用する際に用いられます。
begin〜end間のテキストをそのまま出力する環境です。プログラムのソースファイルなどをそのまま載せたいとき、LaTeXの制御文字を連続して使用する場合などに用います。ただし、行頭のタブは無視され、行の途中のタブは半角スペースに置き換えられるので注意してください。
verbatim環境とほとんど同じですが、半角スペースがあるところにアキの印が出力されます。
verbatim環境は使用すると、整形済みテキストの前に必ず改行されます。これは、文中にちょっとしたものを書きたいときには不便です。\verbを使うことで、文中に整形済みテキストを挿入することができます。使い方は、\verbの後に任意の記号を置き、その後に整形済みテキストを置き、\verbの後に置いた記号をもう一度置きます。\verbの後に置く記号は、整形済みテキストに含まれていないものなら、何でもかまいません。
TeXは数式の組版に強いと言われます。なぜなら開発者のクヌースが自身の著書であるw:en:The Art of Computer Programmingを書くときに、当時コンピュータで作った組版状態が綺麗ではなく、自ら満足するソフトを作ったからです。この作ったものこそ、TeXなのです。
数式を扱うには大きく分けて二つあります。
後者はページの中心に数式が印刷されます。また、どちらも専用のフォントで表示されます。
文中に数式を挿入する場合は次のいずれかのコマンドで囲みます。
例:
文中に入れるのではなく、数式として独立させたい場合は、eqnarray環境を用います。
eqnarray環境では1行ごとに番号が付加されます。必要ない場合はeqnarray*環境を用います。
足し算(+)と引き算(-)は何も考えずに表示できます。
掛け算( × {\displaystyle \times } )と割り算( ÷ {\displaystyle \div } )は、それぞれ\timesコマンド、\divコマンドを用います。
\fracコマンドを用います。最初の引数で分子を指定し、次の引数で分母を指定します。
※注:この例では見やすくするため半角スペースを用いて = の位置を揃えていますが、実際の処理では & を用いた位置で揃えられます。
\sqrtコマンドを用います。
3乗根や5乗根を表現したいときは、コマンド名の直後に角括弧([と])で数字を囲みます。
^を用います。
^の後が一文字だけであれば{}で囲む必要はありませんが、複数文字で表現したいときに忘れることがあるので、出来る限り{}で囲むようにしましょう。
数列の添え字は_を用います。これも{}を付けない場合、続く1文字だけが添字だと解釈されます。
=
和は\sumコマンド、極限は\limコマンド、積分は\intコマンドを用います。
それぞれ記号の上下に範囲を印刷しますが、べき乗と数列で扱った^と_を用いて表現します。
数学にはsinやcosなど、名前のついた関数がありますが、これらをそのままsin xのように書いてしまうと、s×i×n×xのように解釈されてしまうため文字が斜体となりきれいに表示されません。有名な関数は\sinのように、コマンドになっています。
また、modについては、二項演算子として使う\bmodと、カッコつきの\pmodがあります。
ただし一部の関数はコマンドになっておらず、そう言った場合は\mathrmを用いて斜体を解除する必要があります。Sinc 関数を例にすると\mathrm{sinc}(n \pi)とすると、 s i n c ( n π ) {\displaystyle \mathrm {sinc} (n\pi )} のように表示されます。ちなみに、\mathrmは、数式環境用の\textrmです。
これを応用して、数式環境で単位を表示させたいときにも$f_{s}=4\mathrm{kHz}$(textstyleの書き方)のように書くことができます。
数式にはいろんな記号が登場します。これらは、専用の命令で呼び出せます。日本語のフォントにあるからと言って、それを直接数式モードで使わないようにしましょう。環境によってはエラーになりますし、スペースの配分がうまくいかなくなる原因にもなります。
Beamer(ビーマー)は LATEX に基づくプレゼンテーションソフトウェアであり、組み込みの各種スタイルや各種色使いが用意されている。documentclassは\documentclass[dvipdfmx,10pt]{beamer}のようになる。CTAN上で配布されているbeamerposter.styと組み合わせることでポスターの作成にも使える。印刷に適した「配布資料」作成機能も持つ。例えば、Beamerで作成したpresentation.pdfの配布資料(縦2枚、横2枚)を作りたい場合は、
とする。コンパイルオプションはpdflatexにする。
例えば大きな文書を作成しているときや、共通する部分を持つ文書を作成するとき、一つのLaTeX文書を複数に分割することで編集作業や再利用が容易になります。
include{}コマンドを利用することで、指定したファイルをその位置に読み込みます。従って、読み込まれるファイルでは\documentclassコマンドなどを記述する必要はありません。
コンパイルするときは大元の文書ファイルを指定します。他のファイルは自動的に読み込まれます。
この本は入門なので、簡単に変更できるような方法を紹介します。そのためにjsarticleドキュメントクラスを導入しましょう。
jsarticleドキュメントクラスは奥村晴彦が作成した新ドキュメントクラスで、フォントサイズがujarticleに比べて多く用意されていたり、\sectionコマンドのラベルを容易に変更できるようになっています。
jsarticleドキュメントクラスの導入はjsarticleのサポートサイトに載っているので、そちらを参照してください。
例えば\sectionの出力を“第1章 はじめに”のようにしたい場合は、#プリアンブルへ以下の記述をします。
ujarticleでも以下で紹介する殆どを変更できますが、jsarticleを用いれば\sectionコマンドの出力も変更できます。
\newcommandコマンドはマクロを定義するコマンドで、以下のような形式を取ります。
マクロは定義した名前を呼ぶことで、一連の手続きを手軽に扱うことができます。これにより、煩雑なコマンドも独自のマクロで容易に扱えるようになります。
#プリアンブルに例があります。