電子計算機及び実習 第 5 回 (10/27)
5 TEX 文書の体裁
5.1 今日のテーマ
*文字コード
*プリアンブル
* TEXの簡単な命令,環境
**今日の提出課題
今日の授業でできたファイル「学籍番号+Oct27.tex」を添付して,s-suzuki宛に署名をつけて送信せよ.ただ し,Subject は「学籍番号+Oct27」とせよ.また,メールの本文に添付したファイルの名前を明記すること.こ れらの指定が守られていない場合,減点対象となる.
5.2 前回の復習
次のことを思い出しなさい.
1. 我々は,TEXに関する作業はtexディレクトリの中で行うと約束している.texディレクトリに移動する には,次のようにする.
% cd ~/tex
2. TEXの「原稿」にあたるTEXファイルは,拡張子を.texとする.これによって,yatexの機能が使える.
3. yatexの機能によって,Emacs上でTEXファイルのコンパイルとDVIファイルのプレビューができる.
コンパイルはC-c t j,プレビューはC-c t pであった.ただし,yatexが使えない環境にも対応するた め,きちんとしたコマンド(platex,xdvi)も知っておいた方がよい.この方法については課題4.3(1),(2) を参照せよ.
5.3 文字コード
文字化けという言葉を聞いたことがあるだろう.その原因の一つに,文字コードの取り違えがある.
5.3.1 文字コードとは
計算機は,全てのデータを数値化して記憶する.文字も,計算機内部では数として扱われる.文字と数との対 応の規則を文字コードという.英語では,アルファベットは26文字しかなく,小文字,大文字,空白や&など の記号を加えても大した数にはならない.そこで,十分余裕をもって 28(= 256)通りの数で,一つの文字を表す ことになった.元来は計算機では英語しか用いることが出来なかったので,それで十分であった.しかし,日本語 を計算機で用いたい,という欲求がでてきて,無理が起こった.何しろ漢字が万単位で存在するのだから33.こ れが日本語で文字化けが起こりやすい原因である.
5.3.2 文字コードの種類
残念ながら,文字コードは数種類が乱立している状態で,文字化けの原因となっている.主な文字コードは,
JIS, シフトJIS, EUC, Unicodeである.このうち,シフトJISは Windows で,EUCは Unixで用いられ ている.これを意識しておくことで,文字化けにも対処しやすくなるだろう.より詳しいことを知りたいものは,
日本語と文字コードについて,ウェブページを検索して調べてみてほしい.
33現在でも一部の人名漢字などは計算機で用いることができない.
5.3.3 文字コードと TEX
話をTEXに戻そう.TEXで書いた文書を遠方の人とやり取りするには,ファイルをメールで送るのが手軽でお 金もかからない.または,ウェブページからファイルをダウンロードすることもあるだろう.前回述べたように,
TEXの文書はTEX, DVI, PS, PDFなどの形式がある.どれも一長一短であるが,容量が最も小さいのはTEX ファイルである(ls -lで確かめてみよ).ただし,TEX ファイルは
1. TEXのシステムによってはコンパイルできるとは限らない.
2. 文字コードが希望のものとは限らない.
という欠点がある.1についてはやや難しいが,2 はすぐに対処することができる.以下で対処法を学ぶが,そ の前に,どのような問題が起こるのか,体験してみよう.
課題 5.1 授業のページから ShiftJIS.texをダウンロードし,mvで texディレクトリに移せ.次に,lessで そのファイルの中身を読み,platexでコンパイルし,xdvi でプレビューしてみよ.
lessで中身を見たときには,特に違和感は感じなかったであろう.実は,文字コードを自動的に判別して表示 してくれたのである.しかし,pLATEXにはそのような機能は備わっていないため,文字化けが起こる.このよう な現象が起きた場合,まずは文字コードを疑ってみるのがよいだろう.文字コードを変換するには,nkfという コマンドを用いる.オプション -eで EUCコードに,-sでシフトJISコードに変換する.
課題 5.2 (文字コードの変換・文字化けの対処方法) texディレクトリに移動し,次のコマンドでEUCコードに 変換したファイルEUC.texを作成せよ.
¶ ³
% nkf -e ShiftJIS.tex > EUC.tex
µ ´
次に,そのファイルをコンパイル,プレビューしなさい.
5.4 プリアンブル
課題 5.3 EUC.tex ファイルの複製を作り,「学籍番号+Oct27.tex」と名前を付けなさい(これが提出するファイ ルになる).例えば,学籍番号が6107999なら,次のようにすればよい.
¶ ³
% cp EUC.tex 6107999+Oct27.tex
µ ´
この中身を表示しなさい.しばらくは,これについて解説する.前回述べたように,\begin{document} と
\end{document}の間が本文である.\end{document}の後は無視されるが,普通はここには何も書かない方が よい.これに対し,\begin{document}の前は,TEX文書の体裁などを述べる部分で,非常に重要である.この 部分を プリアンブルという.また,TEXの基本として,命令は\で始まる.
5.4.1 文書クラスとクラスオプション
1行目に\documentclass{jarticle}とある.\documentclassは TEXファイルの1行目に必須であり,こ こで文書クラス,すなわちどのような文書を作成するかを指定する.代表的な文書クラスを次に列挙する.
article, report, book, jartcle, jreport, jbook, tarticle, treport, tbook
文書の規模としては,article<report<bookと思えばよい.jが付いているものは,日本語の文書であるこ とを表し,tが付いているものは,縦書の文書であることを表す.文書クラスによってどのような違いが出るの かを見てみよう.
課題 5.4 本文の始めに,次の一文を付け加えよ.
\section{文字コード}
コンパイルとプレビューを行って,どのようになるか確かめよ.文書クラスをjreportにするとどうなるか.さ らに,本文の始めに次の一文を付け加えてみよ.
\chapter{実習第5回}
余裕があれば,他の文書クラスも試してみよ.
\documentclassには,様々なオプションが用意されている.例えば,少し付け加えて
\documentclass[12pt]{jreport}
としてみよ.文字が少し大きくなったであろう.デフォルト(指定のない初めの状態)では10ptであり,オプショ ンで10pt, 11pt, 12pt の3つが選べる.
文書クラスとクラスオプションは,ここでは紹介しきれない程たくさんあるので,詳しくは文献を当たってほ
しい(このことは以下でも同様).
5.4.2 マージンの設定
3行目を見なさい.この行は%という記号で始っている.TEXは%からその行の終わりまでを無視する.よって,
コメントや覚え書きに利用することができる.この後4行は,マージン(余白)を設定している.デフォルトでは マージンが多めに取ってあるので,この設定は是非行いたい.
課題 5.5 数値をいろいろ変えてみて,どのようになるか観察せよ.
それぞれの意味は,易しい英語なので説明を要しないだろう.\oddsidemarginだけは分かりにくいが,奇数 ページにおける左のマージン,という意味である.偶数ページなら \evensidemarginである.
TEXでは,多くの長さの単位が用意されている.mm,cmが身近な単位だろうが,in(インチ)なども使える.ま た,少し毛並が違う単位として,全角の字幅を表す zwがある.これはmm,cmなどの絶対的な単位ではなく,ク ラスオプションで何ポイントを指定しているかによって表す長さが異なる.
5.4.3 ページスタイル
その次の\pagestyle{empty}によって,ページ番号を出力しないようにしている.デフォルトではページ下
部中央にページ番号が出力される.
課題 5.6 この命令をコメントアウトして,ページ番号を出力させてみよ.
このレジュメのようにするにはどうするか,など詳しく知りたければ,自分で文献を調べてみよう.
5.4.4 自己定義命令
\newcommandで新しく命令を作ることができる.長い命令に短いあだ名を付けている,と考えれば良い.ここ
では,実数全体の記号Rを出す命令に\Rと名前を付けている.
課題 5.7 本文に$\R$ と書いて,Rを出力してみよ($$で挟んだ部分は数式であることを表す).また,複素数 全体の記号C を出す命令\Cをプリアンブルで定義し,出力してみよ.
5.4.5 パッケージの読み込み
パッケージと呼ばれるマクロ集を読み込めば,LATEXに標準で用意されていない命令が使えるようになる.パッ ケージを読み込むには
\usepackage{ hpackagenamei }
とすればよい.このファイルではとりあえず良く使われるパッケージamsmathとtheoremを読み込んでいる.
課題 5.8 パッケージbbmを読み込んで,命令 \Rを次の様に訂正しなさい.
\newcommand{\R}{{\mathbbm R}}
これで,どのような記号が出力されるか確かめよ.
5.5 TEX の命令
5.5.1 large型コマンド
本文に {\bf シフト JIS} という部分がある.プレビューの結果と見比べれば分かるだろうが,{\bf } の中 身は太文字になる.似た命令に{\large }があり,少し文字が大きくなる.yatex ではこのような命令をlarge 型コマンドと呼び,C-c lで入力できる.これらは組み合わせることができ,例えば{\bf \large }とすれば 大きな太文字を出力できる.以下にいくつか例を挙げよう.
{\tiny あいうえお} → あいうえお
{\scriptsize あいうえお} → あいうえお
{\footnotesize あいうえお} → あいうえお
{\small あいうえお} → あいうえお
{\large あいうえお} →
あいうえお
{\Large あいうえお} →
あいうえお
{\LARGE あいうえお} →
あいうえお
{\huge あいうえお} →
あいうえお
{\Huge あいうえお} →
あいうえお
{\footnotesize }などとタイプするのは大変である.C-c l f −−→− −→ Enter とタイプすればよい34.
5.5.2 section 型コマンド
本文に\texttt{\% ...}という部分がある.\texttt{ }の中身はタイプライタ体で出力される.これは,先 程の\section{ } と書式が同じなので,yatexではsection型コマンドと呼び,C-c sで入力することができ る.以下にいくつか例を挙げよう.
イタリック体 \textit{abcde} → abcde サンセリフ体 \textsf{abcde} → abcde タイプライタ体 \texttt{abcde} → abcde ボールド体 \textbf{abcde} → abcde スモールキャップ体 \textsc{abcde} → abcde
ただし,例えば\textbf{ }は {\bf }と出力結果が同じである.このように,良く使われる命令はlarge型で
もsection型でも用意されているので,どちらを使うかは好みの問題である.
34特に,補完の −−→− −→ キーはよく利用すること.授業に付いて来れない者のほとんどは −−→− −→ キーを利用していない. −−→− −→ キーに よって入力効率は何倍にも上がると肝に命じなさい.
5.5.3 環境(begin 型)
本文で,\begin{flushright} \end{flushright}で挟まれた部分は右寄せになっており,この部分を右寄せ 環境という.一般に,\begin{...} \end{...}の部分を環境という.yatex ではbegin 型と呼ばれ,C-c bで 入力できる.もう一つ本文にある\begin{quote} \end{quote} は引用環境であり,自動的に適度な間隔を取っ てくれる.環境の入力をまともにすると時間がかかるので,是非yatexの機能を用いなさい.以下にいくつかの 環境と,yatexによる入力方法を挙げる.
本文 C-c b d → \begin{document} \end{document}
左寄せ C-c b l → \begin{flushleft} \end{flushleft}
中央寄せ C-c b c → \begin{center} \end{center}
右寄せ C-c b r → \begin{flushright} \end{flushright}
引用 C-c b q → \begin{quote} \end{quote}
5.5.4 空白,改行,特殊記号
TEXファイルの空白は,プレビュー時に半角程度の空白となって出力される.ただし,TEXファイルでいく ら空白を続けて入力しても,TEXはそれを一つの空白として認識する.よって,やや大きめの空白を入れたい場 合は,それを明示的に記入しなければならない.以下に例を挙げる.
たけやぶ\,やけた → たけやぶ やけた たけやぶ\ やけた → たけやぶ やけた たけやぶ\quad やけた → たけやぶ やけた たけやぶ\qquad やけた → たけやぶ やけた
たけやぶ\hspace{5cm} やけた → たけやぶ やけた
TEXはTEXファイル内の改行を無視するので,プレビュー時に改行させる方法も知っていなければならない.
最も簡単な方法は,改行だけの行を挟むことである.もしくは,\\や\parなどの命令もある.行間を調整した い場合は,改行の直前に \vspace{ }という命令を用いれば良い.括弧内は負の値も使える.
TEXの命令で用いられる記号,例えば%や &などを出力するには,次のようにする.
\% \& \$ \# \{ \} → % & $ # { }
5.5.5 定理環境
プリアンブルに,\newtheorem{thm}{Theorem}[section]という行がある.これは,Theoremと出力するthm という「定理環境」を定義しているのである.定理環境については,次回もう少し詳しく説明する.
課題 5.9 本文に次のように入力して,出力がどのようになるか確かめなさい.
¶ ³
\begin{thm}
今日も良い天気.
\end{thm}
µ ´
また,プリアンブルの部分を\newtheorem{thm}{定理}と書き換えると,どのようになるか確かめなさい.
(ヒント) thmという環境は自分で定義した環境であるから,yatex に標準で用意されていない.そこで,C-c b
スペースキー,とタイプする.すると,環境名を聞かれる.デフォルトは直前に入力した環境になっているから,
それで良ければそのまま Enter キーを押す.変更したければ,その環境を入力する.ここで,yatexに認識され ている環境名なら補完機能が効く.認識されていない環境(今のthmはそうであろう)を入力して Enter キーを 押すと,その環境を登録するかどうか聞かれる.ここではuを押してユーザ辞書に登録すると良いだろう35.
35他の選択肢についても説明しておこう.ローカル辞書に登録すると,そのディレクトリ内のTEXファイルでのみ有効となる.メモリに 登録すると,今現在のEmacsのセッションでのみ有効となる.
5.6 本日の課題
課題 5.10 (提出課題) 今日の授業でできたファイル「学籍番号+Oct27.tex」を添付して,s-suzuki 宛に署名を つけて送信せよ.ただし,Subjectは「学籍番号+Oct27」とせよ.また,メールの本文に添付したファイルの名 前を明記すること.これらの指定が守られていない場合,減点対象となる.
メールを出す前に,もう一度以下のことをチェックせよ.
1. Subjectとファイル名は指定の通りになっているか.
2. 本文で添付ファイルについて述べているか.
3. 署名は付けているか.通常署名はメールの一番最後に付ける.
5.7 次回のテーマ
TEXの続き,定理環境,数式.