LaTeXは文書整形システムのひとつで、 Donald Knuthが開発した TeXシステム をより使いやすくするために、Leslie Lamportが開発したものです. LaTeXの名称は彼の名前に由来しています.
TeX,あるいはLaTeXの特徴として以下 があげられます.
1.は,Knuthが TeXシステムを開発する動機となったのが,彼が 出版しようとした本の数式の組版が気に入らなかったためというエピソード があり,数式の組版の美しさに関しては定評があります.
2.は,通常の文章はもちろん,数式や記号,書体や書式の変更までが すべてテキストのみで行えるということです. そのために,文書の入力のために特別なソフトウェアを必要とせず, 作成した文書のポータビリティが高くなる という利点が生じています. また,簡単なプログラムによって,TeXの文書を自動生成することも できます.これは,ソフトウェアのマニュアル等,実行環境によって 内容が少しずつ異なる文書を数多く作成するときには便利です.
3.は,TeX,LaTeXシステムは無料(あるいは非常に安価)で入手することが できることと,文書の入力・整形・表示・印刷の各機能が独立していて 特定の計算機やOSに依存していないために,パーソナルコンピュータから 大型計算機までほとんどあらゆるシステムに移植されていることによります.
その他,TeXシステムは強力なマクロ(プログラミング)機能を持っていますので, マクロを定義することによりユーザ独自の機能を追加することができます. 実際,LaTeXもTeXのマクロとして記述されています.TeXマクロを作成する ためには多少の専門知識を要しますが,インターネット等から数多くのマクロ パッケージを入手することができます.
LaTeXでは,上記の特徴に加えて,文書を作成する際に,その文書の構造を 同時に指定できるようになっており,ユーザの負担が小さくなっています. 文書の構造とは,例えば,実験レポートであれば,最初にタイトル,作成者等 の情報があり,本文は,第1節,第2節,… 等からなるという構造です. 通常,節のタイトルであれば,大きめの活字を使用して中央に寄せる等して 目立つようにします.しかし,字を大きくする,中央に寄せる等の指示が 書いてあっても,それが節のタイトルであるということは判別できません. そこで,LaTeXでは,\section というコマンドを使うことによって,それが 節のタイトルであるということを明示的に示すことができるのです. 節のタイトルの実際の書式(字の大きさ等)は,\sectionコマンドの定義として 別途指示しますので,後から節のタイトルの書式のみを変更するということも 容易にできます.
上に述べたような特徴のために,特に数式を多く扱う理数系の研究者,技術者 の間では,LaTeXが広く使われており,論文や報告書等をLaTeXで書くことが 前提となっていたり,論文の原稿を LaTeXソースファイル のままで電子メール等を使ってやりとりすることが日常的に行われています.
ごく簡単なLaTeXソースの例を示します.
1:\documentclass{jarticle} % サンプルファイル 2:\begin{document} 3:\section{はじめに} 4:文書処理システム \TeX は Knuth によって開発され, 5:\LaTeX は,Lamport によって 作られた. 6: 7:\section{数式の組版} 8: 9:\LaTeX では数式を簡単に入力する事ができます. 10: 11:例えば, 12:\begin{equation} 13: \zeta(s) = \sum_{n=1}^\infty \frac{1}{n^s} 14: = \prod_{p} \frac{1}{1-\frac{1}{p^s}} 15:\end{equation} 16:のような数式です. 17:式番号も自動的につきます. 18: 19:\end{document}
行頭の 1: 等は説明のための行番号であり,実際は入力しませ ん.
1行目は,必ず必要で,このコマンドにより文書のスタイル(基本的なレイアウト) を定義します. ここでは,jarticle というスタイル(クラス名)を指定しています. この他,jreport,jbook等もあります. また,独自のスタイルを定義して使うこともできます。 なお,%から後はコメントとして扱われます.
ここでは使用していませんが、documentclass と {jarticle}の間に []で囲ってオプションを指定することもあります。例えば、 \documentclass[12pt]{jarticle} とすれば、基本の文字の大きさが 12pt に なります(デフォルトでは 10pt)。 その他、twocolumn というオプションを指定すれば、 \documentclass[twocolumn]{jarticle} 本文が 2段組になります。 オプションは、[12pt,twocolumn]のように複数指定することもできます。 なお、使用できるオプションは、使用しているスタイルによってそれぞれ異なります。
2行目はここから文書が始まることを指定しています.
3行目は節のタイトルを指定しています.節の番号はシステムにより 自動的に振られます.
4〜5行目:通常の文章はそのまま入力します.入力の際は どこで改行しても構いません.\TeX 等はマクロ定義された コマンドです.LaTeXでは\(バックスラッシュ,端末によっては¥と表示される) ではじまる文字はコマンドとして扱われます.
10行目:空行(なにも書いていない行)は,LaTeXでは「段落を変える」という 意味になります.
12〜15行目:\begin{equation} 〜 \end{equation} の間に数式を書きます. 数式の書き方の詳細については省略しますが,基本的に数式を読み下す時の 順番に従って記述するようになっており,数式の意味を理解している人に とって入力しやすく,また読みやすくなっています.
19行目:文書の終りを意味します.必ず必要です.
空白について:空白は\TeX等のコマンドの後には必ず必要です. しかし,空白を複数個入れても最終的な結果は同じです. 例えば,14行目は最初に空白が幾つかありますが,詰めて入力しても 同じことです.また,間違えて全角のスペースを入れないように しましょう.
このソースファイルを以下で説明する方法で処理すると, 下の図のような出力を得ることができます.
LaTeXシステムで文書を作成する手順は,一般的なワードプロセッサを使用する 場合とはかなり異なります.通常,ワードプロセッサでは入力の後すぐに 印刷をすることができますが,LaTeXでは入力したソースファイルに対して コンパイルと呼ばれる変換作業を行わないと印刷することができません. これは,どちらかといえば,プログラムを開発する時の 流れに似ていますので,プログラム開発の経験があれば理解しやすいでしょう. 以下に,Linux環境の場合のLaTeXによる文書作成の流れを示します. (Windows環境でも、ツール名が変更になるだけでほぼ同様です( 後述)。)
2.でコンパイルエラーになった場合,あるいは,3.でプレビューした際に 結果が望ましくない場合には,1.に戻ってソースファイルを適宜修正する ことになります.
X-windowシステムを備えた一般的なUNIX(Linux)環境を想定しています. 赤色の部分が入力を示しています.
後で,ソースファイルを修正する必要があるかもしれないので,エディタを 終了する必要はありません. 端末ウィンドウのWindowをアクティブに切り替えます.
cp /home/inaba/latex/sample.tex ~/latexとしてコピーすればよい。
platex sample.tex と入力します. ただし、.tex は省略することができます.
正常に終了した場合は,以下のようなメッセージが出て終了します.
Output written on sample.dvi (1 page, 1420 bytes). Transcript written on sample.log.
エラーの場合には,以下のように表示されて,入力待ちになりますので, x と入力して platexコマンドを終了します.
! Undefined control sequence. l.3 \begon {document} % コメント ?
最初は,タイプミス等で多くのエラーがでることが多いようです. また、日本語を入力している場合、英数字モードで入力した文字 (俗に半角文字と呼ばれる)とかな漢字モードで入力した文字(俗に 全角文字と呼ばれる)とは、同じ文字であってもコンピュータの 内部では異なるコードで表されています.例えば、}と}等は 間違えやすいようです.
エラーが出た場合は,最初に戻って,エディタで修正をします. エラーの場所の見付け方には多少経験が必要ですが, エラーメッセージは最初に出力されたものから順に見ていくことが大切です.
コンパイルが終了すれば,dviファイルができているはずです. ls コマンドで確認します.
ls -l sample*-rw-r--r-- 1 inaba djesis 159 2009-06-29 13:40 sample.aux -rw-r--r-- 1 inaba djesis 1420 2009-06-29 13:40 sample.dvi -rw-r--r-- 1 inaba djesis 2986 2009-06-29 13:40 sample.log -rw-r--r-- 1 inaba djesis 533 2009-06-29 13:39 sample.tex
等と表示されるはずです.
実際に印刷をする前に,印刷結果を確認(プレビュー)することができます. xgdvi sample.dvi & と入力します( .dviは省略可能です).
xgdviは 終了 ボタンを押せば終了できますが,結果が気に入らない場合は そのままにして最初に戻り,ソースファイルをエディタで修正し,コンパイル をすれば,修正結果がそのまま xgdviの表示に反映されます.
dviファイルは印刷に必要な情報を全て含んでいますが,そのままでは 印刷できません.dviファイルをプリンタが受け付ける形式(PostScript) に変換する必要があります.これは,pdvips コマンドにより行います. pdvips -f sample.dvi | lpr と入力します (.dviは省略できます). このコマンドは sample.dviファイルを PostScript形式に変換し,それを パイプによりlprコマンドに送りプリンタに印刷します.
PostScript形式のファイルとして保存しておきたい場合には, pdvips -o sample.ps sample.dvi と入力すれば, sample.ps というPostScriptファイルが作成されます. これは, lpr sample.ps と入力することに より印刷する事ができます.lprコマンドはファイルをプリンタに送るための コマンドです.
なお、PostScriptファイルをevinceやghostviewというコマンドを使って、 previewすることもできます。 その場合は、evince sample.psなどとします。
論文やレポートを提出する際に、PDF形式での提出を求められることも多い。 dviファイルをpdfファイルに変換する際は、まず、dviファイルを上述した手順に 従ってpsファイルに変換し、次に、ps2pdf コマンドを用いて pdfに変換する。 使用方法は、 ps2pdf sample.ps のようにすればよい。この場合、sample.pdfが同じディレクトリに作成される。
PDFファイルは、Acrobat Readerや、xpdfを用いてプレビューできる。
Windows環境でも、LaTeXを使うことができます。 おおまかな流れは、Linuxの場合と同じです。
LaTeXでは,数式の組版能力が非常に優れています. ここでは数式の入力について基本的な事柄を述べます.
数式を入力するためには,「数式環境」にする必要があります. 数式環境には2つあって,ひとつは,通常の文章中に数式を 書く場合(in-text数式)と,もうひとつは,数式だけを独立して書く場合 (display数式)とがあります.in-text数式では,数式の前後を $と$で挟みます.display数式では,数式を \[ と \] で囲むと 数式番号なしの数式になり,\begin{equation} と \end{equation}で 囲むと数式番号がつきます.
キーボードから入力可能な記号については,基本的にそのまま入力すれば よい.
LaTeXでは,キーボードから入力できないような多数の数学記号を表示させる ことができます.
関係演算子等の記号の直前に \not を入れれば,記号の上に斜線が引かれるので 否定を表す記号を簡単に作ることができます.
総和を表す記号(Σ)等は,独立した数式中で使われる場合と,文中で使われる 場合では大きさを変えて表示するのが普通であるので,LaTeXでもこれらの記号 については数式モードによって異なる大きさのフォントが使用される.
また,これらの記号では,記号の上下に範囲等を表す小さな文字が置かれることが よくある.これらは,上付文字,下付文字と同じように書くことができる. (上述のサンプルソースを参照のこと)
LaTeXの数式環境の中では,通常の文字はすべてイタリック体で表示される. しかし,log や sin 等の関数名に関しては 通常のローマン体で表示する のが通常である.そこでこういった関数については,以下の表のように 特別に関数が用意されている.
\arccos | \arcsin | \arctan | \arg | \cos |
\cosh | \cot | \coth | \csc | \deg |
\det | \dim | \exp | \gcd | \hom |
\inf | \ker | \lg | \lim | \liminf |
\limsup | \ln | \log | \max | \min |
\Pr | \sec | \sin | \sinh | \sup |
\tan | \tanh |
上記の他,剰余(余り)を求める関数を出力するものとして, \pmodコマンドと\bmodコマンドがある. この例では,2項係数(組み合わせ)を出力するコマンド \choose も使用している.
行列を入力するときは,array環境を使用する. array環境は,\begin{array}{オプション} ... \end{array} という形式で, オプションの箇所には,l, c, rのいずれかが行列の列の数だけ並ぶ. lは左寄せ,cはセンタリング,rは右寄せの意味で,それぞれ対応する列の フォーマットを指定する.行列の各要素は & で区切って書き,各行の終りは \\ である(最後の行には不要). なお,以下の例では,\[と\]は省略されている.
また,行列や複雑な分数式に括弧をつける場合等に,通常の括弧を使用すると, 括弧が小さすぎて,恰好が悪い場合がある.そのような場合は \left と \rightコマンドを使用して以下の例のようにする. \left や \rightの直後に 他の括弧記号(区切り記号の項を参照)を書けば, 括弧の形を変えることができる.
行列以外に,以下のような応用例もある.
\leftコマンドと\rightコマンドは必ずペアで使用しなければならないが,
この例のように,\right. とすれば,右側の括弧を省略することができる.
なお,この例では,\left\{ となっているが,LaTeXでは 括弧記号の {や}は,
LaTeX自身の区切り文字として使われているので,{ 自体を出力したい
場合は,\{ としなければならない.
また,\mbox{}コマンドは,数式中に通常の文を挿入したい場合に用いる.
複数行にわたる数式を書きたい場合には,equation環境ではなく,以下の例のように eqnarray 環境を用いる. eqnarray環境の各行は, ... & ... & ... \\ のようになっており, & の部分で上下の式が揃えられる. eqnarray 環境は,各行ごとに式番号をつけるが, すべての数式に式番号を付けたくない場合は,eqnarray* 環境を用いる. 例のように一部の行にだけ式番号を付けたくない場合は,\nonumber コマンド を使えばよい.
1行におさまらないような長い数式を折り返して表示させるためにも eqnarray環境を使用することができるが,そのような場合には, 以下の例のように,\lefteqn コマンドを使用すると便利かもしれない.
文字の上に付ける→や^などをアクセントと呼ぶ.数式環境では,以下の ようなアクセントを使用することができる.
式の上に線を引きたい場合には以下のようにする.
式の上下に以下のようにブレスを付けることもできる.
その他,2つの記号を上下に並べて新しい記号を作りたい場合には, \stackrel コマンドを使うことができる. なお,以下の例で,\cal コマンドは,英大文字の筆記体文字を 生成するコマンドである.
数式中の空白は,TeXのシステムによって自動的に決められる. 何等かの理由でスペースを挿入したい場合には専用のコマンドを使用する.
使用方法の例は以下を参照のこと.
箇条書きの環境としては、itemize, enumerate, description がある。 itemizeは、項目の先頭に 「・」等の記号をつけて表示する形式、 enumerateは、項目順に 1,2,3,...等の通し番号をつけて表示する形式、 descriptionは、項目の先頭に 文字のタイトルをつける形式である。
使い方は、例えば、enumerate環境の場合は、以下のように する。番号の1,2,3は、LaTeXによって自動的に付けられる。
\begin{enumerate} \item ひとつめの項目 \item ふたつめの項目 \item みっつめの項目 \end{enumerate}
description環境の場合は、以下のように書く。
\begin{description} \item[red] あかいろ \item[blue] あおいろ \item[yellow] きいろ \end{description}
\begin{center} お知らせ\\ (重要) \end{center} \begin{flushright} 2009年6月 \end{flushright} \begin{flushleft} 拝啓、時下ますますご清栄のことと… \end{flushleft}なお、上記の例で、 \\ は、その位置で強制的に改行する意味です。
通常、LaTeXでは、入力テキストの改行位置等とは関係なく、LaTeXシステムに
よって改行位置等が自動的に調整される。しかし、例えば、プログラムソース
等を文中に書きたい場合には かえって不便である。そのような場合には、
verbatim環境を使用する。
使用例は以下のようである。
\begin{verbatim} main() { printf("Hello!\n"); } \end{verbatim}
\begin{verbatim}と\end{verbatim}に囲まれた部分は、改行も含めてそのまま
の形で出力される。
なお、通常の文章中で、強制的に改行したい場合には、その位置に \\を書く
と改行される。
\begin{thebibliography}{9} \bibitem{label1} Leslie Lamport, LaTeX: A Document Preparation System (2nd Edition), Addison-Wesley Pub., 1994. \bibitem{label2} 奥村晴彦,[改訂第4版] LaTeX2ε美文書作成入門, 技術評論社,2006. \end{thebibliography}
labelの部分は、本文中で、参考文献を引用する際に使います。 \cite{label1}のように書けば、その位置に文献番号が挿入されます。
参考文献の書き方は、いろいろな流儀があるのですが、基本的には、 著者名、書名、出版社、発行年 の順番です。 学術論文などを引用するときは、発行年の前に、巻名やページ番号も書きます。
中央の、\normalsize が文書クラス指定で決まる標準のサイズですが、 それより上になるほど大きく、下になるほど小さくなります。 ただし、使用できるフォントの関係等で、異なる指定をしても実際の 文字サイズは同じということもあります。
上記のコマンドは、特定の環境の内部で使用すると、その環境の範囲のみ 有効になります。例えば、\begin{center}\large おおきな文字\end{center} とすれば、文字が大きくなるのは、center 環境の内部だけです。
LaTeXでは,図や表を扱うこともできます.
上で作成した sample.tex ファイルの 18行目(\end{document}の直前)に 以下の各行を追加します.
\section{表の作成} LaTeXでは表も扱うことができます. 表の例を表\ref{tab:ex1}に示します. \begin{table}[b] \caption{A地域の人口の変化} \label{tab:ex1} \begin{center} \begin{tabular}{|l|r|} \hline 年 & 人口(万人) \\ \hline 1965 & 103 \\ 1970 & 55 \\ 1975 & 34 \\ 1980 & 24 \\ 1985 & 10 \\ \hline \end{tabular} \end{center} \end{table}
詳細な説明は省略しますが,\begin{table} 〜 \end{table} の間に表の データを書きます.
表そのものは,\begin{tabular} 〜 \end{tabular} によって記述されています.
そして,その表はさらに \begin{center} 〜 \end{center} の間にありますので, 表は ページの中央に(センタリングされて)表示されます.
\caption コマンドは 表のキャプション(表題)を定義するコマンドですが, ここでは出力には表示される 「表1:」という文字は書かれていません。 これはLaTeXシステムが自動的に生成します.また,文中で,表番号を参照する ために,\label コマンドと \ref コマンドが使われています. これらは、表番号だけでなく、図番号や式番号を参照する場合にも同様に 使うことができます.
\label コマンドと \refコマンドを使用して 表番号や図番号の参照を する時は,コンパイルを2回行う必要があります.すなわち、 platex sample.texを2回実行します.
うまくコンパイルが終了したら,xgdviによりプレビューしてみましょう.
次に他のソフトウェア(drawing tool等)で作成した図をLaTeX文書に 貼り付ける方法を説明します. 例として,グラフ作成ツールである gnuplot を使用して作成した グラフを LaTeX文書に貼り付けてみます.
この他にも(例えば、tgifというdrawing toolや、gimpという 画像編集ソフト等)、作成した図を EPSという形式で保存できれば、どんな図でも貼り付けることが できます。
まず最初にグラフにするためのデータを以下のように作成します.
エディタで、以下のデータを入力し,population.dat というファイル名で 保存する.
# Population data since 1965 1965 103 1970 55 1975 34 1980 24 1985 10
データファイルが正しく入力されているか,端末エミュレータ上で, cat population.dat と入力してファイルの 内容を表示させてみましょう.
次に gnuplotを起動し,グラフを作成します.手順は以下のようになります.
正しくファイルが作成されているか、 ls -l population.* と入力し確認します.population.eps というファイルができているでしょうか.
次に,エディタで LaTeXソースを変更し,作成したグラフの図を挿入します. 手順は以下のようになります.
\section{図の挿入} LaTeXでは他のソフトウェアで作成したEncapsulated PostScript(EPS)ファイルを 貼り付けることができます. 貼り付けた図の例を図\ref{fig:ex1}に示します. \begin{figure} \begin{center} \includegraphics{population.eps} \end{center} \caption{A地域の人口変化}\label{fig:ex1} \end{figure}
以下に示す問題の文書と同じものをLaTeXで作成してみなさい 作成した文書を印刷し提出しなさい. A4用紙1枚で納まるはずであるが、複数枚にわたる場合は、 左上をホチキスで止めておくこと.
ただし、レポートの冒頭に、以下を印刷しておいてください。
そのためには LaTeXソースの最初の部分、\begin{document}の直前に以下のように 記述します。
\title{課題6. \LaTeX 演習レポート} \author{稲葉宏幸(学生番号)}
さらに、\begin{document}の直後に 以下のようなコマンドを書いておけばよいでしょう。
\maketitle
LaTeXシステムは大変便利なシステムですが,ある程度のコマンドを 覚えなければならないのもまた事実です.多くの参考書が出ていますので 参考にしてください.
また,インターネット上にも数多くの有益な情報があります. ここでは, 奥村晴彦さんによるページを紹介しておきます.