準備
リテラシ用のディレクトリ内に,新たなディレクトリ “tex” を
作成
HP からファイル “tex.tar.gz” をダウンロードして,作成した
ディレクトリに保存
解凍・展開
sample.tex :練習用ファイル tips.tex, layout_jarticle.eps, layout_jsarticle.eps:補足資料symbol.pdf :数学記号集
lenna.eps :画像のサンプル
sinusoid.dat :gnuplot 用データ
今日の内容
TeXを用いた文書作成
TeXとは 処理(コンパイル・プレビュー・印刷)の仕方 文法の簡単な説明 表や図の挿入TeXとは
D.E. Knuth が開発した組版ソフト
きれいな数式等を表示
ワープロ TeX 仕上がりイメージを見て作成 一定の文法にそって作成 編集結果が直ちに反映 処理(コンパイル)が必要 ワープロとの違いは?
• 正式には と “E” を下げて書く. それができないときは,「TeX」と書く • 呼び方は「テフ」,「テック」TeXの仲間たち
(狭義の)TeX
空白の取り方の設定,文字の種類の変更などの基本的な機能 で構成 目次の作成などのより高度な機能は,基本的な機能に追加登 録することで作成 LaTeX
様式・判型ごとのレイアウトの標準化 章・節・図表・数式などの番号の自動生成 pTeX,pLaTeX
日本語に対応
正式には と書く.それが できないときは,「LaTeX」と書く. 呼び方は「ラテフ」,「ラテック」TeXの仲間たち
(狭義の)TeX
空白の取り方の設定,文字の種類の変更などの基本的な機能 で構成 目次の作成などのより高度な機能は,基本的な機能に追加登 録することで作成 LaTeX
様式・判型ごとのレイアウトの標準化 章・節・図表・数式などの番号の自動生成 pTeX,pLaTeX
日本語に対応
古いバージョン : LaTeX 2.09 新しいバージョン : LaTeX2e ※ 見分け方は後ほど今日の内容
TeXを用いた文書作成
TeXとは 処理(コンパイル・プレビュー・印刷)の仕方 文法の簡単な説明 表や図の挿入TeXでの処理の流れ
TeX 文書ファイル(ソースファイル)の作成
エディタを使って TeX の文法に沿ったテキストを作成 コンパイル
仕上がりの確認;プレビュー
印刷可能なファイル(PSファイル,PDFファイル)
TeX文書ファイルの作成
最低限のルール
拡張子は “.tex”
TeX文書は “¥documentclass[option ]{class }” で開始 本体は “¥begin{document}” と “¥end{document}” で囲む “%” 以下行末までコメント ※ 漢字コードにも注意(TeX とは直接関係ないけど) Windows Shift-JIS UNIX EUC ※ LaTeX 2.09 では “¥documentstyle[option]{class}” で開始 Windows “¥”(円マーク) UNIX “ ” (バックスラッシュ)
TeX文書ファイルの作成
% TeXサンプルファイル -- sample.tex % この行のように,%から行末まではコメントとして無視される. ¥documentclass[]{jsarticle} % この部分をプリアンブルと呼び, % 余白などの指定やパッケージの読み込みを行う. ¥begin{document} {¥TeX}の文書ファイルでは,ここに本文が入ります.本文は... ¥end{document}コンパイル
sample.tex は単なるテキストファイル
専用ソフト(TeX)で変換(コンパイル)
sample.aux 補助ファイルで相互参照に利用 sample.dvi 印刷に関する情報 sample.log メッセージを格納するログファイル % platex sample.tex This is pTeX, … % lssample.aux sample.dvi sample.log sample.tex
相互参照とは,章・節・ 図表・数式などの番号 を本分中で参照するこ と
コンパイル
文法の間違いがあると?
% platex sample.tex This is pTeX, …
…
! Undefined control sequence. l. 8 ¥Tex の文書… ? “x” を入力して終了し,エディタで修正 「l. 8」はソースファイルの行数.実際のエラーとエラーメッ 「TeX Wiki」の「エラーメッ セージ」が参考になる
仕上がりの確認(プレビュー)と印刷
思い通りの文書ができた?
% pxdvi sample.dvi &
% pdvips sample.dvi % ls
sample.aux sample.dvi sample.log sample.ps sample.tex % gv sample.ps & 最終確認
% lpr sample.ps 印刷(今は,印刷しないように!)
印刷をするには?
仕上がりの確認(プレビュー)と印刷
% dvipdfmx sample.dvi % ls
sample.aux sample.dvi sample.log sample.pdf sample.tex % acroread sample.pdf & 最終確認
印刷をするには?
今日の内容
TeXを用いた文書作成
TeXとは 処理(コンパイル・プレビュー・印刷)の仕方 文法の簡単な説明 表や図の挿入% TeXサンプルファイル -- sample.tex ¥documentclass[12pt, twocolumn]{jsarticle} % この部分をプリアンブルと呼び, % 余白などの指定やパッケージの読み込みを行う. ¥begin{document} {¥TeX}の文書ファイルでは,ここに本文が入ります... % この行はコメント ¥end{document}
ドキュメントクラスとオプション
【オプション】 用紙サイズ,フォントサイズ などの指定 【ドキュメントクラス】 様式(レポート・本など) の指定ドキュメントクラスとオプション
ドキュメントクラス
jarticle 雑誌に掲載される論文・レポート jreport 長めの報告書 jbook 本・卒論など (“ j ” を除くと見出し等が英語) 11pt, 12pt 標準で用いるフォント(10pt)を11pt, 12ptに変更 twocolumn 2段組 leqno 数式番号を左に変更 fleqn 数式を左寄せに変更 オプション
新しいドキュメントクラス jsarticle, jsbook が使えるなら,そちらがお勧め!プリアンブル
特別なパッケージの読み込み
ページのレイアウトの変更・設定
¥documentclass[]{jsarticle} ¥usepackage[dvips]{graphicx} %図(EPS)の貼付け ¥usepackage{verbatim} %ファイルの内容表示 ¥usepackage{amsmath, amssymb} %複雑な数式表示 ¥setlength{¥textwidth}{35zw} %テキストの表示の幅 %1zw は和文フォント幅 ¥begin{document} ……… ¥documentclass から ¥begin{document} までを 「プリアンブル」と呼ぶ文章構造
文章は部(part),章(chapter),節(section)などで階層
構造として構成
番号,見出しのレイアウト(フォントサイズや書体)は既に
クラスファイル(jsarticle.cls, jsbook.cls など)に設定
部 ¥part 章 ¥chapter節 ¥section 小節 ¥subsection 少々節 ¥subsubsection 段落 ¥paragraph 小段落 ¥subparagraph
文章構造
文章は部(part),章(chapter),節(section)などで階層
構造として構成
番号,見出しのレイアウト(フォントサイズや書体)は既に
クラスファイル(jsarticle.cls, jsbook.cls など)に設定
部 ¥part 章 ¥chapter節 ¥section 小節 ¥subsection 少々節 ¥subsubsection 段落 ¥paragraph 小段落 ¥subparagraph
“book” または “jsbook” クラスで のみ使用可
文章構造
% TeXサンプルファイル -- sample.tex ¥documentclass[]{jsarticle} ¥begin{document} ¥section{文章を書く} {¥TeX}の文書ファイルではここに本文が入る. ¥subsection{文章構造} {¥TeX}では,文章の論理的な構造と視覚的なレイアウトを分けて考えます. ¥end{document}文章構造
「番号付き箇条書き」や「べた書き」で, 番号を付けてはいけない!
文章構造
% TeXサンプルファイル -- sample.tex ¥documentclass[]{jsarticle} ¥begin{document} ¥section{文章を書く} {¥TeX}の文書ファイルではここに本文が入る. ¥subsection{文章構造} {¥TeX}では,文章の論理的な構造と視覚的なレイアウトを分けて考えます. ¥end{document} • 「節」の始まりを示す命令(マーク)で,節の タイトルは「文章を書く」です,という意味 • フォントの種類や大きさ,余白の取り方は, クラスファイルに記述されるので,文章全体で 統一される • 節番号は,自動的に付けてくれる • 「小節」の始まりを示す命令(マーク)で,そのタ イトルは「文章構造」です,という意味 • フォントの種類や大きさ,余白の取り方,番号 の自動生成などは上と同じ文章構造
% TeXサンプルファイル -- sample.tex ¥documentclass[]{jsbook} ¥begin{document} ¥chpter{文章を書く} {¥TeX}の文書ファイルではここに本文が入る. ¥section{文章構造} {¥TeX}では,文章の論理的な構造と視覚的なレイアウトを分けて考えます. ¥end{document}基本的な書式
(改行)
ソースファイル中の改行は無視
改行するには?
¥TeX で改行するにはどうすればよいでしょう. このように空行を入れると改行してくれます.さらに嬉し いことに,改行後自動的に字下げをしてくれます. 通常の改行に強制改行は 強制改行は “¥¥”
字下げは行わない ソースの可読性の低下基本的な書式
(フォント)
フォントの書体を変更するには?
語句の強調には¥textgt{ゴシック体}などを使う. 大きさを{¥small 小さく}したり,{¥large 大きく}し たりできる.{¥LARGE さらに大きく}もできる. 基本的には ¥% や ¥{ のように,表示したい文字 フォントの大きさを変更するには?
特殊な文字を表示するには?
基本的な書式
(空白の扱いと命令)
空白の扱い
半角空白は,何個並べても1個分の空白
行頭・行末の半角空白は,何個あっても無視
地の文と命令
半角空白は,地の文と命令の区切りでもある
この文章は¥TeX で書きました. 命令の後ろに空白を入れて,文章と命令の区別が必要! この文章は{¥TeX}で書きました.基本的な書式
(箇条書き)
記号付き(itemize)
項目付き(description)
¥begin{itemize} ¥item 第1番目の項目 ¥item 第2番目の項目 ¥item 第3番目の項目 ¥end{itemize} ¥begin{description} ¥item[第1項目] 第1番目の項目 ¥item[第2項目] 第2番目の項目 ¥item[第3項目] 第3番目の項目 ¥end{description} ※ ¥begin{…} で始まり,¥end{…} で終わる領域を,「環境」と呼ぶ 番号付きの箇条書きは, “itemize” を “enumerate” に変更基本的な書式
(引用)
本文の一部を引用するときには?
¥begin{quote} quote 環境では,左右に空白が挿入され,引用であることを 明確に表示させることができる. 改行は,空行を挿入することで行われる.ただし,quote 環 境では行間が少し大きくなるが,字下げは行われない. 字下げを行うには quotation 環境を使用すればよい. ¥end{quote}基本的な書式
(入力通りに表示)
C言語のソースコードを添付するには?
“# ¥ { }” が TeX の命令と解釈される 無効化が必要 “verbatim” 環境の使用 ¥begin{verbatim} #include <stdio.h> int main() { printf(“Hello world¥n”); return 0; } Tab は空白1文字と同じなので,イ ンデントがずれる可能性あり(要注 意)基本的な書式
(入力通りに表示)
C言語のソースコードを添付するには?
読み易くするには? quote 環境の併用 ¥begin{quote} ¥setlength{¥baselineskip}{12pt} ¥begin{verbatim} #include <stdio.h> int main() { printf(“Hello world¥n”); return 0; } “baselineskip” で行の間隔を調整基本的な書式
(入力通りに表示)
文中に埋め込みたい
¥verb の後に “+” または “|” などで,埋め込みたい記号を挟む 埋め込みたい所で ¥verb+%_{}+ と書く. 表示したい記号列に含まれない記号で囲む 【コンパイル可能】 ¥verb@%_{}@ や ¥verb-%_{}- 【コンパイル不可】 ¥verb%%_{}% や ¥verb_%_{}_ 大きなファイルを埋め込みたい
プリアンブルに ¥usepackage{verbatim}基本的な書式
(右寄せ・左寄せ・中央揃え)
案内状など,タイトルの位置を中央に揃えたい
日付を右寄せしたい
¥begin{flushright} %右寄せ 平成17年10月6日 ¥end{flushright} ¥begin{flushleft} %左寄せ 情報リテラシ受講者各位 ¥end{flushleft} ¥begin{center} %中央揃え今日の内容
TeXを用いた文書作成
TeXとは 処理(コンパイル・プレビュー・印刷)の仕方 文法の簡単な説明 表や図の挿入表の作成
tabular 環境を使用
¥begin{tabular}{|l||l|c|c|} ¥hline
実験テーマ & 実験日 & 実験場所 & 担当者 ¥¥ ¥hline
¥hline
ガイダンス & 10/5 & 4号館19番講義室 & 全教員 ¥¥ 画像処理 & 10/19 & 本館706号室 & 佐藤 ¥¥ ¥hline
¥begin{tabular}{|l||l|c|c|} ¥hline
実験テーマ & 実験日 & 実験場所 & 担当者 ¥¥ ¥hline
¥hline
ガイダンス & 10/5 & 4号館19番講義室 & 全教員 ¥¥ 画像処理 & 10/19 & 本館706号室 & 佐藤 ¥¥ ¥hline ¥end{tabular} 行の変更は “¥¥” で (環境によってはバックスラッシュ2つ)
tabular 環境を使用
表の作成
表の項目は “&” で区切る r 右寄せ c 中央 l 左寄せ 縦罫線は “|” で, 横罫線は “¥hline” で設定 各項目の位置図の挿入
作図ツール(gnuplot や Tgif)で作成した図を,
EPS形式で保存
EPS形式の図をはめ込むには?
プリアンブルに ¥usepackage[dvips]{graphicx} を挿入し,図をはめ込みたい所で ¥includegraphics[width=8cm, clip]{./lena.eps} と記述 [ ]; オプションで,図の大きさや向きを指定 { }; はめ込みたいファイル(epsファイル)を指定 絶対パスもしくは相対パスで指定図や表にキャプションを付ける
表や図には,番号とキャプション(簡単な説明文)を付け
ることが必要
表の場合 表の上部に 図の場合 図の下部に 力技で番号やキャプションを付けると?
図や表を新たに挿入すると,番号の付け直しが必要 改ページで,図や表とキャプションが分離する可能性あり TeX では,便利な環境が用意
表の場合 tabule 環境 図の場合 figure 環境 表のキャプション図や表にキャプションを付ける
¥begin{table}[htbp] ¥centering % 中央寄せ ¥caption{平成17年度 実験計画} % キャプションを指定 ¥begin{tabular}{|l||l|c|c|} ¥hline実験テーマ & 実験日 & 実験場所 & 担当者 ¥¥
¥hline ¥hline
ガイダンス & 10/5 & 4号館19番講義室 & 全教員 ¥¥ 画像処理 & 10/19 & 本館706号室 & 佐藤 ¥¥ ¥hline
¥end{tabular}
¥end{table}
図や表にキャプションを付ける
¥begin{figure}[htbp] ¥centering ¥includegraphics[width=8cm, clip]{lenna.eps} ¥caption{サンプル画像} % キャプションを指定 ¥end{figure} figure 環境
図や表にキャプションを付ける
¥begin{figure}[htbp] ¥centering ¥includegraphics[width=8cm, clip]{lenna.eps} ¥caption{サンプル画像} % キャプションを指定 ¥end{figure} [htbp] は,図や表の出力可能位置を指定 • h その位置(here)に出力 • t ページ上端(top)に出力 • b ページ下端(bottom)に出力 • p 単独ページ(page)に出力 figure 環境
まとめ
TeXを用いた文書作成
TeXの成り立ちとその仲間 処理(コンパイル・プレビュー・印刷)の方法 基本的な文法 表や図の挿入 プログラミング言語と同じで,実際に使うことが大切
【演習問題】 第11回:コンパイラ
以下の文書を完成させよ
コンピュータ(CPU)は,命令やレジスタなどをビット列で記述した (1)機 械語 を理解し,実行する.しかし,人間は, (1)機械語 を理解すること が困難である.そこで,以前は,命令やレジスタなどに名前を付けて読み やすくした (2) アセンブリ言語でコーディングしていた.この (2)アセン ブリ言語 を (1)機械語 に変換するプログラムが (3)アセンブラ である. GCC で (2)アセンブリ言語 を得るには % gcc (4)-S hoge.c とすればよく,この例の場合では (5)hoge.s というファイル名で生成さ れる. (2)アセンブリ言語は単純な命令の組合せであるため,これを用いて複 雑かつ大規模なプログラムをコーディングすることは難しい.そこで, Pascal や C 言語など,人間がより理解し易い (6)高級 言語が開発さ【演習問題】 第11回:コンパイラ
以下の文書を完成させよ(続き)
なお,(2)アセンブリ言語 および (6)高級言語 は,(8)テキスト 形式で 記述されるので,エディタで容易に編集できる.一方,(1)機械語 は (9) バイナリ 形式で記述される. 実際には,変換された (1)機械語 はまだ実行できる状態でなく,入出力 関数など汎用的な関数を集めた (10)ライブラリ を結合することで,実 行可能ファイルを得る.この結合過程を (11)リンク と呼ぶ.GCC では, 一部の (10)ライブラリ を (11)リンク するには,明示的に指示を与える 必要がある.例えば,数学関数を利用するには, % gcc hoge.c (12)-lm とする必要がある.以上の過程を次のスライドに図示する.【演習問題】 第11回:コンパイラ
以下の文書を完成させよ(続き)
#include <stdio.h> #include <math.h> int main() { root = sqrt(2); … } (16) コンパイル (17) アセンブル 01000101 … … 01…sqrt…printf… 0001001… (18) リンク 01000101… /usr/lib/libc.a /usr/lib/libm.a (19)共有ライブラリ (13)ソースファイル (14)オブジェクトファイル (15)実行可能ファイル【演習問題】 第11回:コンパイラ
(1) 機械語 (2) アセンブリ言語 (3) アセンブラ (4) -S (5) hoge.s (6) 高級 (7) コンパイラ (8) テキスト (9) バイナリ (10) ライブラリ (11) リンク (12) -lm (13) ソースファイル (14) オブジェクトファイル (15) 実行可能ファイル (16) コンパイル (17) アセンブル (18) リンク (19) 共有ライブラリ【演習問題】 第11回:コンパイラ
プログラム “average.c” のデバッグ
警告オプションなしでも,コンパイルできることを確認
警告オプションを付けてコンパイルし,メッセージに従
ってプログラムを修正
※ メッセージの意味と,いかに修正すべきかを説明する
こと
解答
% gcc -Wall average.c average.c: 関数 `main' 内:
average.c:19: 警告: フォーマットは int ですが、引数は double です (引数 2)
19行目の scanf の書式指定が %lf であるべきだが %d である average.c: 関数 `get_average' 内:
average.c:34: 警告: control reaches end of non-void function
関数 get_average が値を返す return 文が抜けている …
printf("average = %lf¥n", ave); …
double get_average(double data[], int n) {
…
【演習問題】 第11回:コンパイラ
Makefile の作成
以下の依存関係にあるプログラムをコンパイルするため
の Makefile を作成せよ
【発展課題】
上で作成した Makefile を可能な限り簡略化せよ
※ 簡略化の方針を,詳しく説明すること
error.o: error.c error.h
io_image.o: io_image.c io_image.h image_type.h error.h utile.h utile.o: utile.c image_type.h error.h utile.h
Makefile の作成
imgapply: main.o error.o io_image.o utile.o
gcc -o imgapply main.o error.o io_image.o utile.o
io_image.o: io_image.c io_image.h image_type.h error.h utile.h gcc -c io_image.c
utile.o: utile.c image_type.h error.h utile.h gcc -c utile.c
error.o: error.c error.h gcc -c error.c
main.o: main.c image_type.h io_image.h utile.h gcc -c main.c
Makefile の作成(簡略版)
OBJS = main.o error.o io_image.o utile.o imgapply: $(OBJS)
gcc -o imgapply $(OBJS)
io_image.o: io_image.c io_image.h image_type.h error.h utile.h utile.o: utile.c image_type.h error.h utile.h
error.o: error.c error.h