179
http://www.pearsonhighered.com/educator/academic/product/0,3110,0201547996,00.html http://www.pearsoned.co.jp/ 私立文系初級 L A T E X ユーザーが訳してみた初級 L A T E X ユーザーのための 実用 T E X 入門の入門〔抄〕 L A T E X の「舞台裏」をちょっとだけ ✿ Wynter Snow, T E X for the Beginner (Addison Wesley, 1992) のチョーテキトー私家版抄訳 2008 5 20

LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

  • Upload
    dangnhi

  • View
    225

  • Download
    1

Embed Size (px)

Citation preview

Page 1: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

http://www.pearsonhighered.com/educator/academic/product/0,3110,0201547996,00.html

http://www.pearsoned.co.jp/

私立文系初級 LATEXユーザーが訳してみた初級 LATEXユーザーのための

実用TEX入門の入門〔抄〕

✿ LATEXの「舞台裏」をちょっとだけ ✿

Wynter Snow, TEX for the Beginner (Addison Wesley, 1992) のチョーテキトー私家版抄訳

2008年 5月 20日

Page 2: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

Book Review of: Wynter Snow, TEX for the Beginner, reviewed by Victor Eijkhoutin: TUGboat 13:4, December 1992, pp. 486–487.http://www.tug.org/TUGboat/Articles/tb13-4/tb37reviews.pdf

c⃝ Copyright 1992, TEX Users GroupTranslation published by permission

Translated from TEX FOR THE BEGINNER by Wynter Snow c⃝ 1992 by Pearson Education, Inc.Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 3: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

「はじめに」の代わりに

原著にはちゃんと “Preface”がついていますが,ここではそれに代えて,TUGboatに掲載されていた,ヴィクター・エイコーさんによる本書の書評を訳出して載せてお

きます:

ブックレビュー

Review of: TEX for the Beginner

ヴィクター・エイコー

Wynter Snow, TEX for the Beginner.Addison-Wesley, 1992. xii + 377 pp. +index (23 pp.) ISBN 0-201-54799-6.

plain TEX についてのビギナー向けの更なる一冊により,TEX に関する文献の選択の幅が拡大した。すなわち,Introduction toTEX (Norbert Schwarz; Addison-Wesley,1990), A Beginner’s Book of TEX (Ray-mond Seroul and Silvio Levy; Addison-Wesley, 1991), TEX by Example (ArvindBorde; Academic Press, 1992)に今般,Wyn-ter Snowによる TEX for the Beginnerが付け加わったのである。

Seroulと Levyの著作が幾分アカデミックなスタイルであるのとは対照的に,本書は極めて饒舌なスタイルをとっており,この点は本書の長所であると同時に,短所でもある。著者の叙述スタイルは生き生きとしたもので,TEXの振る舞いについてもオーソドックスでない比喩を用いているが(マクロが ‘meat-and-

potatos’ や ‘jelly-doughnut’ といったバラエティで登場するなど,聞いたことがあろうか),これは概して非常に啓発的といえる。一例を挙げれば,各行は \baselineskip

の距離だけの間隔が空けられる,ということを表現するのに,「TEX はまるで,ぴったり \baselineskip の長さの定規を持っていて,次の棚をどこに置けばよいかを決めるのには,それを使う」と書くのであるが,これは巧い表現である。ときにはしかし,過度にアメリカ的な文化背景が要求される。例えば,“back in grade school” (page 90)という表現が何を表わしているのかは私にも理解出来るが,しかし,“a taffy-like substance”(page 97)

なる表現で表わされているものが何なのかは,確とは分からない。TEXのコミュニティがこれほど国際化している事実に鑑みるなら,この点は看過し得ない。

1 本書の構成

TEX for the Beginner は,5部に分かたれている。第 I部と第 II部は,TEXの基本についてである。とりわけ第 I部は,極めて実用志向である。すなわち,ワープロユーザーがそのファイルを ascii モードでダンプするための Tipsや,Mac版の TEXインプリメントである Textures を使う人々への指示が含まれている。第 III部は,一番長編の部であるが,恐ら

く最も有用でもある。そこに含まれる 16 の章は,TEXのコマンドについて説明をし,また,読者が TEX で行う最も一般的な作業についてのマクロを呈示している。第 IV部は,ボックスや罫線のような発展的なトピックについてであり,更にはTEXのより理論的な側面に関する短い章をも含んでいる。第V部は‘Bug Diagnosis’ で,最後に 2 つの付録が付属する。本書の索引には,本書自身で扱われた諸概

念とコントロールシーケンスの双方が挙げられており,同時に,TEXbook にあたらなければならないような TEX のプリミティブとplain TEXのコントロールシーケンスもが含まれている。簡潔に,後者については該当ページは挙げられていない。これには意味がある。すなわち,ユーザーが誰か他人のマクロを解読する際には,この索引によって,どれがプリミティブないし plain TEXの一部であるのかが(また,他の書物を見なければならないことも)分かるので,これらのコマンドを再定義してしまう危険を回避出来るからである。各部への振り分けは,全体としては筋が通っ

ているが,細部では,その体系性に若干の混乱を来たしている。例えば,「不恰好な行分割を調整する」という章は,基本を扱う第 I部にあるのに対して,「不恰好なページ分割を調整する」章は,発展的トピックを扱う第IV 部に入れられている。同様に,TEX の動作に関する著者独自のメタファーたる ‘actormodel’が紹介されているのは,「プリントアウトする」と題された章においてなのである。これらは,説明の順序としては確かに論理的な配置ではあるが,レファレンスには不都合である。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

i

Page 4: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

ii 「はじめに」の代わりに

2 読者対象

初心者 TEXer を対象とした書籍の中でも本書は,特定のコンピュータに特有の事々までをも含んだ,最も基本的な諸情報を提供する。議論は明らかに plain TEXを学びたいという人々に向けられているが,しかし,本書には ‘LATEX notes’なるものが含まれており,これは,plain TEXユーザーに対しては,対応する LATEXの概念を摘示し,他方 LATEXユーザーに対しては plain TEXへの架橋をするという,両機能を果たし得る。但し,LATEXを学ぶにはこの ‘LATEX notes’ では足りない。また,これら ‘notes’が極めてしばしば読者に告げる事実は,当該章は LATEXでは適用出来ない,というものである。ビギナーの助けとなるもうひとつの着想と

しては,著者が言うところの一群の ‘bug’がある。これらは本文中に分かりやすいマークが付けられ,索引にも採録されている。これら「バグ」には,その役立ち具合の程度に応じた名前が付けられており,それは「脚註が消えるバグ」から「馬の前に馬車を繋ぐバグ」にまで亘る。

3 難しさの程度

本書はビギナー向けの本であることから,いくつかのトピックについては,軽く触れるだけに止められている。著者は読者に対してマクロを沢山書くことを勧めているが(多くの例も呈示している),しかし,本当の意味でのTEXプログラミングはひとつもない。例えば,本書には \edefや \expandafterといったコントロールシーケンスは登場しない。同様に,ヘッダやフッタについての章や,

(静止・フロート両方の)図についての章はあるが,しかし \outputについての言及はない。

4 レイアウト

残念ながら,本書の体裁に関しては,あまり肯定的なことは言えない。著者は,例示や箇条書き周囲のホワイトスペースの量を統一しておらず,本文の行末は不揃い(ragged right)にしてあり,また入力例とタイプセット例とで,インデント幅を変えている。これらは皆,私に眩暈を起こさせる。例示のためにローマン体からタイプライタ体に変更しているのに加えて,著者は,‘bugs’ や ‘LATEX notes’ にはコンピュータ・モダン・サンセリフ書体を使用している。これは混乱の度を増すのみである。見出しの下部にページ幅の罫線が引かれているという事実が,誌面に僅かながらの構築性を与えているのみである。本書の裏表紙はコンピュータ・モダン書体

を使っているように窺え,また,plain TEXによる句読点後のスペース調整がされているが,しかし奇妙なことに TEXと LATEXのロゴは,これらに特徴的なバックカーニングを伴っておらず,また,リガチャも見られない。表紙のほうは,裏表紙の埋め合わせといえるのであろうか。

5 ジョークなのか?

Snowは,その生き生きとしたイマジネーションによって,TEXの動作に関して様々な奇抜な比喩を持ち出すが,これが確実に,本書が楽しく読めることに貢献している。また,著者はその名前についてこれまでに揶揄われたことがあったかも知れないが,それを苦にしていないのは確かであろう。本書の各部のタイトルはスキーに由来した表現であるし(‘Onto

the slopes’, ‘Down we go’),表紙では仔ライオンたちが雪合戦をし,TEXライオンを模した雪だるまを作っているのであるから。

6 評 価

TEX for the Beginner は,TEX の理論については控えめにしておいて,代わりに読者の手を引いて,実用的なやり方で作業の仕方を呈示している。各種の説明は,使い始めのTEXユーザーに対して基本的な理解を授けるには十分であるが,しかししばしば,100%正確とは言えない。例えば,「プリミティブである \csnameと \endcsnameは文字列をとって,これをコントロールシーケンスに変換する」という記述と,その脚註における「\csname

はトークン・リストをコントロールシーケンスに変換する」という説明は,いずれも若干逸れている。つまり,\csname と \endcsname

の間のトークンは,すべてが文字トークンになるまで展開されて(したがって展開不能なトークンは許されない),その後にこれらトークンを用いてコントロールシーケンスが作られるからである。しかしながら私は,本書には現実的な誤り

はひとつも発見し得なかった。本書の説明を特徴づけるのに一番適してい

る表現は「不足はしていない」であるかも知れず,第 II部〔ママ〕のマクロ群もまた,ユーザーを前進させはするが,しかし完全ではない。例えば,第 16 章「詩やプログラムリスト用のマクロを作る」では,本当の verbatimモードのためのマクロを呈示してはいないので,扱えるプログラムコードは極めて限られる(例に使われている言語は Logo であるが,Pascal

に出てくるキャレットや,C には頻出するブレスのような,特殊文字を扱っていない)。更に驚くべきことに,見出しに関する章であ

る第 17章では,見出しとそれに続くテキストとがページ分割するのを防ぐための \nobreakについての言及がなされていない。ヘッダとフッタについて扱う章の中の \TitledSectionの例には \nobreakが組み込まれているが,しかし,これに対しても格別の注意を与えてはいないのである。全体的にはしかし,種々の例は多くの領域

をカバーしており,且つそれは良い説明を伴っている。

Snowは非標準的な用語をいくつか導入するので(‘giving a parameter a value’ ではなく‘giving a reporter an input’と言う),読者がより進んだ TEX の文献に移行する際には困難を覚える可能性がある。しかし,用語法には

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 5: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

「はじめに」の代わりに iii

一貫性があったので,私としてはあまり問題は感じなかった。

総じて,本書は TEX の文献群に有益な一冊を加えたと言えよう。本書の記述は巧みで,実用的な例を多く含む。直線的且つ段階的に

TEXを学びたいという読者であるならば確実に,本書をチェックすべきである。

Victor Eijkhout

(TUGboat, Volume 13 (1992), No. 4, pp. 486 f.)

テキトー訳者からひとこと

▪ 原著は,1992年刊の英語で書かれた “plain TEX”の入門書です。ですんで,当然 1992年時点までのことしか書いてありません。日本語組版のことなんかも,もちろん触れられていません。ところどころで LATEXについても言及されてい

ますが,この “LATEX”は LATEX2εではなくって,LATEX 2.09のことです(いずれ

にしても,原著は LATEXについての本ではありません! LATEXで削除されているコマ

ンドについては,『別冊付録』のほうにランポートさんの本の該当頁を転記しておきま

した)。

▪ テキトー訳者は私立文系初級 LATEXユーザーですので,TEXの難しい話は全然分かりません。原著についても「読み物」として面白く読んだだけで,書いて

あることを実際に試してみたわけではないです。

▪ 勢いでテキトーに訳しましたので,これまでの訳業のものと訳語を照合したり

とかはしてません(TEXbook, Impatient, TEX by Topic, ランポートさんの本〔2.09

と 2ε〕,LATEX, concisely の 6冊については,一応去年邦訳は入手したのですけど )。

▪ 本文書は大したページ数ではないですし,PDFなので,索引は作ってません。多少検索の便を考えて,欄外に重要そうな用語は拾っておきました(手間として →こんな感じ

は索引作るのとあまり変わらなかったかも…)。

▪ 原著の “LATEX Notes”は,本文書では “LATEX 2.09 Notes”として,オリジナルを真 LATEX2.09Notes似たマークを欄外につけてあります。原著ではここに毎回,Leslie Lamport, The

LATEX: Document Preparation System: User’s Guide & Reference Manual,Addison-Wesley, 1985(←初版の LATEX 2.09のほうの本)の参照ページも書かれ

ているのですが,本文書ではその辺は省略しました。

▪ 原著の “. . . bug”には,“LATEX Notes”と似たマーク(こちらはテントウムシの絵のマーク)がついています。「バグ」という表現は誤解を招きやすいと思われる

ので,本文書では「…というマチガイ」として,あと,テントウムシのイラス

トは再現出来ないので,ただ点線枠で囲ってあります。

▪ 本文書はごく私的な部分訳であって,これによって何らかの権利を主張するもの

ではありません。すべての権利は原著者であるWynter Snowさんに属します。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 6: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

iv TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 7: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

目 次

「はじめに」の代わりに i

第 I部 Starting Out 1

第 1章 さぁ、出発〔抄〕 3

第 2章 TEXの特殊文字〔抄〕 5

第 3章 プリントアウトする〔抄〕 9

第 4章 不恰好な行分割を調整する〔抄〕 13

第 II部 Onto the Slopes 15

第 5章 新しいコントロールシーケンスを作る〔抄〕 17

第 6章 フォント山盛り〔抄〕 19

第 7章 文字を大きくしたり小さくしたり〔抄〕 23

第 8章 ページ上のさまざまなホワイトスペース 25

第 9章 新しいホワイトスペースを作る 37

第 10章 伸び縮みするスペース 45

第 11章 TEXのページの組み立て方〔抄〕 53

第 III部 Down We Go! 55

第 12章 基本的なマクロ構造 3タイプ 57

第 13章 段落余白を変更する 67

第 14章 箇条書き用のマクロを作る 77

第 15章 ぶら下げインデントする 89

第 16章 詩やプログラムリスト用のマクロを作る 97

第 17章 見出し用のマクロを作る 107

第 18章 ヘッダやフッタ用のマクロを作る 113

第 19章 脚註用のマクロを作る 119

第 20章 Alignment: Making Tables 125

第 21章 Putting Headings in Your Tables 127

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

v

Page 8: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

vi 目 次

第 22章 Drawing Lines (Rules) in Your Tables 129

第 23章 表や図(静止・フロート両方)用のマクロを作る 131

第 24章 Using Math Mode 139

第 25章 Math Mode Symbols 141

第 26章 Fractions and Multiline Math Displays 143

第 27章 Fonts for Math Mode 145

第 IV部 Steeper Slopes 147

第 28章 Boxes 149

第 29章 Controlling the Size of Your Boxes 151

第 30章 Moving Your Boxes 153

第 31章 Drawing Lines (Rules) in Your Text 155

第 32章 Adjusting Awkward Page Breaks 157

第 33章 How to TEX Works 159

第V部 Back at the Lodge 161

第 34章 Bug Diagnosis: Tips and Strategies 163

第 35章 Bug Diagnosis: Symptom and Error Messages 165

Appendix 167

付 録 A Font Tables 169

付 録 B TEX’s Reporters 171

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 9: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 I部 Starting Out

Page 10: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i
Page 11: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 1章 さぁ、出発〔抄〕

ユーザーが TEX*原註1)の学び始めにまず知りたいと思うのは,入力ファイルには何

を書いて良いのかということと,あと,普段慣れ親しんでいるワードプロセッサと

TEXとではどこが違うのだろうか,ということでしょう。

1.1 What Is Different about TEX?

1.2 What Is a TEX Command?

1.3 TEX Files Must Be Plain-Text Files

1.4 Your Text Must Be Single Spaced

1.5 Long or Short Lines and Extra Spaces

1.6 Disappearing Spaces

まとめとこれから

TEXはワードプロセッサでもなければ,エディタでもありません。そうではなくて,TEXは組版言語なのです。これは初めは,何か堅苦しく奇妙なものに思えるかも知れませんが,それはこの言語が,人と話をするための言語でなくて,コンピュー

タと話すための言語だからです。でも,その根底にある仕組みはとてもシンプルなも

のです。TEXはちょっと変なコマンドをいくつか持っているというだけなので,本書でこれから,出てくる順に説明をしていきます。

入力ファイルは,asciiファイルと普通呼ばれている,テキストファイルでなけれ

ばなりません。ファイルの中ではダブルスペースにしてはいけませんし,段落と段落

の間には一行以上の空行を入れないといけません(2回以上リターン/エンターキーを押

してください)。行末に “ % ”を置くと,TEXが end-of-line 文字をスペースに変換

するのを防ぐことが出来ます。テキスト中でコマンドの次にスペースを入れる場合

には,コントロールスペース(“\␣”)を使ってください。次の章では,TEXの様々な特殊文字の扱い方について,説明をします。

*原註1) “TEX”という 3文字は,“art, skill, craftsmanship”を意味するギリシア語の語根 “τϵχν”に由来する “τϵχ”の大文字です。“χ”はスコットランド語の “loch”とかドイツ語の “ach”のように発音するので,TEX の創造者クヌース先生の言葉を引用すると,「TEX は blecchhh という言葉の語尾と同じ響きになる」〔鷺谷好輝さん訳〕のだそうです。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

3

Page 12: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

4 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 13: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 2章 TEXの特殊文字〔抄〕

多くの場合,「キーボード上に刻印されている文字」と,「入力ファイルにタイプし

た文字」と,「プリントアウトされる文字」は一致します。でも,ある 10個の文字については,TEXで特別な使い方がされるため,正しく使わないと,マチガイが生じます。加えて,3個の文字は,主として数式のために使われます。この 3文字が普通の文章の中に現れると,TEXは,入力したその文字とは全く違う文字でタイプセットしてしまいます。TEXが引用符やダッシュを作り出す方法もまた,普通とは違っています。ユーザーが正しくその方法に従って入力しない場合には,おかしな結果に

なってしまいます。

本章で以下説明するのは,これらの特殊文字の入力方法と,特殊文字を正しくない

方法で使うとどうなってしまうのか,ということについてです。あと,外国語の文字

を 6個と,文字の上にアクセント記号を置く方法についても,説明をします。

2.1 TeX’s Ten Special Characters

Doller Signs aroud the Backslash and Braces

What is Math Mode?

\char94(ˆ)と \char126(˜)

“\char”というコマンドは,「フォントテーブル」の文字をタイプセットするもの \char

ですが,これまで見て来たコマンドとは違って,自分自身だけでは完結しない初め

てのものです。この種のコマンドは,その仕事をするためには追加の情報を必要と

します。\charの場合には,ユーザーが求めているフォントの場所を知る必要があり

ます。TEXのフォントテーブルの多くでは,キャレットは 94番で,チルダは 126番です。

「フォント」というのは,同一のサイズとスタイルの文字種をまとめたものです。

例えば,本書の本文をタイプセットするのに使ったフォントは,10ポイントのローマン体です。「フォントテーブル」は,ひとつのフォントの全文字種を,表にまとめ

たものです。付録 Aには,TEXの基本的なフォントテーブルを全て掲載し,\char

の使い方も説明してあります。

「業界用語」では,この追加的情報 ――ここでは \charに続く数値―― は,「イン インプット/引数

プット」または「引数」と呼ばれます。プログラマの人たちは,より専門的な用語で

ある「引数」という言葉が好きで,コマンドや処理に「引数を与える」なんて言い方

をします。でも私にはこれはコメディアンの台詞みたいに聞こえるので †訳註1),本書

を通して,一般的な言葉のほうの「インプット」という語を使うことに決めました。

数値は英文字ではありません。TEXは,\charの次に数値を見つけると,それでコマンドが完結したことが分かります。数値は複数の数字から成る場合がありますか

†訳註1) 原著では “This sounds like a Groucho Marx phrase to me” とあるのですが…。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

5

Page 14: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

6 第 2 章 TEX の特殊文字〔抄〕

ら,TEXは数字でない文字が現れるまで,文字を読み込み続けます。ちょうど,コマンドの次に続くスペースが,TEXにどこでコマンドが終わるのかを示すために使い尽くされてしまうのと同じ様に,この数値の次に続くスペースもまた,TEXにどこで数値が終わるのかを示すのに使い尽くされてしまいます。ですから,\char94と

か \char126の次にスペースが必要な場合には,コントロールスペース(“\␣”)を使ってください。

\char94とか \char126と入力したにも関わらず,キャレットやチルダとは違う文字

になってしまったような場合には,それは,TEXがそのときに使っているフォントテーブルが,当該場所に違う文字が配置してあるものだということです。この問題を解決

するには,キャレットだったら “{\rm\char94}”,チルダだったら “{\rm\char126}”とタイプしてください。“\rm”というコマンドの意味は「ローマンフォントに切り替えなさい」なのですが,ローマンフォントのフォントテーブルであれば,キャレット

は 94番で,チルダは 126番です。

2.2 What Happens When I Type the Special Character?

The Dollar Sign

The Circumflex and Underscore

The Tilde

The Percent Sign

Braces Make Groups

The Ampersand

Number Sign

2.3 Ligatures

Quotation Marks

Dashes

2.4 What Is ¡That¿ Doing Here?

2.5 Accent Marks and Foreign Characters

まとめとこれから

TEXは 10個の文字を特別な用途に使います。それは,チルダ(˜),シャープ(#),

ドルマーク($),パーセント(%),キャレット(ˆ),アンパサンド(&),アンダース

コア( ),開きブレス({),閉じブレス(}),そしてバックスラッシュ(\)です。本章では,これらの文字をタイプセットするために使うコマンドについて説明しまし

た。更には,これらの特殊文字の用途と,特殊文字を間違って使った場合にはどうな

るのかについても述べました。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 15: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

まとめとこれから 7

この他に 3個の文字が,主として数式で使われます。それは,二つの不等号(“<”,

“>”)と絶対値の記号(“ | ”)です。これらの文字は,数式モード内でのみ使用可能です。TEXは普通のテキストの中にこれらを見つけると,それぞれ,“¡”,“¿”,“—”をタイプセットしてしまいます。

TEXは特定の文字の並びを自動的に合字にしてくれますし,入力の際には引用符やダッシュの使い分けを意識することも必要なのでした。また,TEXには様々なアクセント文字や外国語の文字もあります。

次の章では,プリントアウトをする方法について,説明しましょう。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 16: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

8 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 17: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 3章 プリントアウトする〔抄〕

プリントアウトを手にするには,2つのステップを経ることになります。まず,TEXが入力ファイルを処理して,プリントのためのレイアウト指示のセットを作り出しま

す。次に,このレイアウトの指示をプリンタに送るわけです。本章では,この 2つのステップについて説明をし,また,ファイル名とかTEXのコマンドとかのタイプミスのような,ありがちで簡単なマチガイから復帰する方法についても,説明をします。

3.1 Filenames

3.2 Getting a Printout

Making the .dvi File on Mainframes and Non-Macintosh PCs

Sending the .dvi File to the Printer

TEXtures on the Macintosh

What Can Go Wrong?

3.3 Filename Errors

3.4 Using Nonstandard Filenames

3.5 Overfull and Underfull Boxes

3.6 Errors in the Text

3.7 Replies to TEX’s Question-Mark Prompt

3.8 The Last Possible Mistake in Your File

3.9 オーバーフルの黒いボックスを見えなくするには

TEXは,プリントアウトで,“overfull hbox”のすぐ後ろに黒いボックスを出力します。この黒いボックスを見えなくするには,次のような指示を入力ファイルに書き

ます:

\overfullrule=0in

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

9

Page 18: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

10 第 3 章 プリントアウトする〔抄〕

“\overfullrule”は,オーバーフルの黒いボックスの幅がどれくらいなのか,というものです。そして,上掲の指示は TEXに対してその黒いボックスの幅を「0インチ」にするように伝えています。ですから,黒いボックス自体は依然としてそこに

あるのですが,幅が 0インチなので見えないわけです。黒いボックスがまた見えるようにする方法については,4.6節を見てください。

次の節では,このような指示についてと,“=”が何をしているのかについてとを,説明します。

3.10 便利屋さんモデル †訳註1)

“\overfullrule”は,本書でこれまで見て来たものとは違う仕事をする,最初のコントロールシーケンスです。これまで出てきたコントロールシーケンスは皆,何

かをしてくれるものでした。実際に作業をするものなので,ここでは「作業屋さん作業屋さん†訳註2)」と呼ぶことにします。例えば,“\TeX”は “TEX”というロゴを出力するものですし,コントロールスペース(“\␣”)は通常の単語間スペースを出力し,“\bye”は現在のページを仕上げて “.dvi”ファイルを出力してプロンプトに戻るというものでした。

これらに対して,“\overfullrule”は「情報屋さん †訳註3)」です。このコントロー情報屋さん

ルシーケンスは,黒いオーバーフルの箱の幅がどのくらいなのかを記憶しています。

TEXが “overfull hbox”の後ろに黒いボックスを置く必要が生じると,\overfullruleに,「どのくらいの幅なの?」と尋ね,\overfullruleは自分が記憶している幅をTEXに教えてあげるわけです。「情報屋さん」の仕事は,特定の情報を記憶しておいて,

そして聞かれたときにはその情報を答えるというものです。

実際のところ,TEXには,それぞれが特別の仕事を請け負っているお抱えの小さな「便利屋さん」たちの一団がいるのだと考えることが出来ます。本書には,2種類の基本的な便利屋さんしか出てきません。「作業屋さん」は実際に作業をしてくれ,

他方「情報屋さん」は情報を記憶しそしてそれを教えてくれます(TEXは第 3のタイ

プの「便利屋さん」,すなわち “conditional”も抱えていて,これは 18.5節で手短に扱ってい

ます)。

一部の便利屋さんたちは,もうそれ自身だけで完結しています。“\TeX”も “\bye”も,追加の情報なしに自分たちの仕事をすることが出来ます。他の便利屋さんたち

は,一つないし複数の「インプット」を必要とします。例えば “\char”には,一つの「インプット」が,すなわちフォントテーブルにおける文字の位置を示す数値が,

必要です。

“\overfullrule=0in”の場合にはしかし,“=0in”というのは,「インプット」ではありません。そうではなくて,これは,\overfullruleが記憶し・返答する情報

を変更する方法なのです。ですから,“=”が出てくるときはいつでも,「情報屋さん」に対して,古い情報を忘れて何か新しいものを記憶するよう命じているんだ,という

ことになります*原註1)。

†訳註1) 原著では “The Actor Model”。†訳註2) 原著では “doer”。我ながらうまくない訳語だ…。†訳註3) 原著では “reporter”。*原註1) 「情報屋さん」に新たな情報を記憶させることを,TEX の専門用語では「パラメータないしレジ

スタに値を代入する」という言い方をします。TEX に関する他の書物だと,こういう表現がよく出てきます。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 19: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

まとめとこれから 11

TEXは,沢山の情報屋さんを抱えています。それらは例えば,ページナンバーとか,余白の幅,段落のインデント幅,一行の幅などを記憶しています。したがって,

「情報屋さん」に新たな情報を覚えさせるというのは,本書を通して使うことになる

基本的なテクニックです。

「作業屋さん」と「情報屋さん」からなる,この「便利屋さんモデル」というのは,

プログラミング言語がどのように働いているのかを理解するのに一般的に有効な方

法ですが,しかしもちろん,TEXの用語ではありません。

3.11 TEX’s Prompts

まとめとこれから

本章では,プリントアウトを手にするための 2つのステップについて説明をしました。つまり,TEXに “.tex”ファイルを処理してもらって “.dvi”ファイルを得,そしてその “.dvi”ファイルをプリンタに送る,というものでした。わざわざ面倒の多いファイル名を好むのでない限り,入力ファイルには “.tex”という拡張子を付けましょう。尤も,TEXは他の拡張子でもファイルを見つけることが出来ますし,他のフォルダの中のファイルや,他のドライブにあるファイルを処理することも出来る

のでした。

TEXは,“.tex”ファイルの処理中,ディスプレイにメッセージを表示し,また,“.log”という拡張子を普通は伴ったログファイルにも,メッセージを書き込みます。TEXがエラーを発見して処理を中断した場合には,ディスプレイに「クエスチョンマークのプロンプト」を表示して,ユーザーからの指示を待ちます。この,エラーの

度に停止する振る舞いを変更するには,\scrollmode,\nonstopmode,\batchmode \scrollmode

\nonstopmode

\batchmodeコマンドを使って,それぞれ対応するモードへと変更が可能です。

「クエスチョンマークのプロンプト」の他に,TEXには,処理するファイル名の入力を求める「ダブル・アスタリスクのプロンプト」と,その場でのキーボードから

の入力を TEXが処理する「シングル・アスタリスクのプロンプト」もありました。「便利屋さんモデル」では,2種類のコントロールシーケンスについて説明しました。つまり,「作業屋さん」は実際の作業をしてくれ,「情報屋さん」は情報を記憶し

そしてそれを教えてくれるというものです。この 2つを区別することは,これから本書を読み進めていく上で,どんどん有益になっていきます。

次の章では “overfull hbox”を修正する方法のいくつかについて,説明をしましょう。その次の章では,新しいコントロールシーケンスの作り方について,説明します。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 20: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

12 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 21: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 4章 不恰好な行分割を調整する〔抄〕

遅かれ早かれ(大抵は「早かれ」ですが!),TEXは “overfull hbox(hbox=horizontal

box)”というメッセージをユーザー送って来て,ユーザーはプリントアウトの右余白に小さな黒いボックスがあるのを目にすることでしょう。同時に,その行自体が右

余白に突き出してしまっていることにも気づくでしょう。行がキチンと収まるよう

に文章を書き直してももちろん構わないのですが,本章ではこのオーバーフルな行を

処理する方法について,いくつか説明をします。

ハイフネーションした単語の途中で TEXが改ページするような場合には,これとは別の行分割に関わる問題が生じます。本章では,この問題の対処法についても触れ

ることにします。

4.1 Why TEX Makes Overfull Hboxes

4.2 Hyphenate the Word Yourself

4.3 Break the Line Yourself

4.4 Fuzzy Margins

4.5 Change the Size of Interword Spaces

Badness Numbers

4.6 黒いオーバーフルのボックスが見えないようにする

時には,行を右マージンに突き出させるのに意味がある場合もあるので,プリント \overfullrule

アウトからこの黒いボックスを取り除きたいことがあるでしょう。もしも,オーバー

フルの場所を簡単に見つけるためにオーバーフルの警告自体は無くしてしまわない

で,プリントアウトの黒いボックスだけを見えなくしたいというときには,次のよう

にしてください:

\overfullrule=0in

黒いボックスは依然としてプリントアウト上に存在しています。しかしその幅が

「0インチ」なので目に見えないだけなのです。黒いオーバーフルのボックスを再び見えるにようにするには,次のようにタイプしてください:

\overfullrule=5pt

これら「0インチ」や「5ポイント」は,どちらも「ディメンション」です。TEXのディメンションについては,8.1節で説明をします。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

13

Page 22: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

14 第 4 章 不恰好な行分割を調整する〔抄〕

4.7 Which Strategy Should I Use?

4.8 Changing a Line or Page Break at a Hyphenated Word

まとめと関連事項

本章では,“overfull hbox”に対処する方策を 5つ見てみました:\break

\hfuzz

\tolerance

\pretolerance

▪ “\-”を使って,行末の単語をユーザー自身でハイフネーションする。

▪ “\break”を使って,強制的に行分割する。

▪ “\hfuzz”を使って,TEXがオーバーフルとみなす量を変更する。

▪ “\tolerance”と “\pretolerance”とを使って,TEXが許容する単語間スペースのサイズを変更する。

▪ “\overfullrule=0pt”を使って,黒いオーバーフルのボックスを見えなくする。

本章ではまた,“\hbox”を使うことによって,ハイフネーションした単語の途中でTEXが改ページするのを防ぐ方法についても述べました。次の章では,新たなコントロールシーケンスを作る方法について,説明をします。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 23: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 II部 Onto the Slopes

Page 24: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i
Page 25: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 5章 新しいコントロールシーケンスを作る〔抄〕

キャレットを出力したくなる度に,“\char”に指定するその数値を調べるなんて,面倒くさいですよね。また,“\backslash”とする代わりに “\\”とタイプ出来たとしたら †訳註1),良くないですか? 更には,“Massachusetts Institute of Technology”の代わりに “\MIT”とタイプするだけでいいとしたら,すごくナイスだと思いません?出来ます。本章では,その方法について説明をしましょう。

5.1 How to Make a New Control Sequence

5.2 What Is in a Macro?

5.3 Writing Macros That Take Inputs

Using Macros That Take Inputs

Writing Macros with More Than One Input

How a Macro Takes Its Input

5.4 Always Think Macro!

5.5 TEX’s Control Sequences, Macros, and Primitives

5.6 What TEX Does with Macros

5.7 Macros and Math Mode

5.8 Redefining a Macro

5.9 Where Do I Define New Macros?

Keeping Macros in a Separate File

5.10 Using \input for File Management

†訳註1) これについてはすぐ後の “LATEX Notes” でちゃんと,「LATEX は “\\” を改行マクロとして使っています.ですので,“\backslash”の略語を作る場合には,“\\”ではなくて,例えば “\bksl”とかという風にしてください.」との注意書きがあります。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

17

Page 26: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

18 第 5 章 新しいコントロールシーケンスを作る〔抄〕

まとめとこれから

“\def”を使えば,自分用のコントロールシーケンスを作れるので,何をどうする\def

かとか,体裁とかについて,他人の考えに縛られる必要はありません。\defはこの

後,本書の残りの章全部に出てきます。

本章では,インプットを取るマクロを含め,\defを使ってマクロを書く方法につ

いて説明をし,TEXがテキスト中にマクロを見つけた際にそれを展開する様についても述べました。また,数式モードの中でのみ使われるようなマクロを書く場合に

は,数式モードへのスイッチを定義に含めてしまうと問題が生じる可能性がありまし

た。数式モードへのスイッチはテキストの中に入れるほうが,シンプルですし,多く

の場合,より賢い選択です。

ファイルの管理には “\input”を使うのが良い方法です。マクロの定義は,ひとつ\input

または複数の個別のファイルにまとめておけば,TEXの習熟度が高まったときにマクロを書き直すのも容易になります。必要なマクロファイルは,入力ファイルの冒頭

の数行でまとめて \inputするようにすれば,入力ファイルがスッキリと読みやすく

なります。更には,大部の文書の場合には,個々の章ごとにファイルを分割して管理

することも可能です。後々 \inputするつもりのファイルの末尾には,\byeと書い

てはいけません。

次の章では,いろいろなフォントを使う方法について説明します。そこでは,本書

を通して使われる TEXの大事な特徴のひとつである「グループ」についても見ることにします。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 27: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 6章 フォント山盛り〔抄〕

さまざまな書体を使うのは,大変楽しいことです(でも,例えばスパイスなんかでも,

種類があまり多くなければ料理にとても役に立ちますけど,バリエーションが増えすぎると混

乱の元ですよね)。本章では,いくつかの書体の使い方を説明します。また,変化を

テキストの局所に閉じ込めることが可能となる TEXのとても使える特徴のひとつである「グループ」についても触れましょう。

6.1 Presto Chango!

6.2 フォントを変えるのにグループを使う

フォントの変更をグループの中に閉じ込めるというのは,雄牛を柵の中に入れて, グループ

それでその雄牛が荒れ狂って牧草地の雌牛を困らせないようにするみたいなものです。

1 That {\bf bold bull} is securely fenced.

That bold bull is securely fenced.

開きブレス(“{”)は,「グループを開始しなさい」の意味で,閉じブレス(“}”)は「グループを閉じなさい」を意味します。

グループ内で行った変更はすべて,そのグループの内部に止まり,後続のテキスト

には影響を与えません。これは「ローカル」と呼ばれていて,その意味は,変化が当 ローカル

該グループに局所化されるということです。

グループを開始するには “{”をタイプします。それから,フォント変更コマンドと,そのフォントでタイプセットしたいテキストとをタイプします。グループを閉

じるには,“}”をタイプします。TEXは }を見つけると,グループ内で行われた変更

を皆ストップします。TEXは }に続くテキストを,{の前のテキストと同じように処

理します。先のフォントがローマン体だったとすると,またローマン体に戻します。

先のフォントがスラント体だったなら,またスラント体に戻ります。

1 \sl The slant on {\bf these group} is very useful!

The slant on these groups is very useful!

グループの中では何でも変更することが出来て,また,それを元に戻すにはどうし

たらいいかなんて気にしなくていいのです。グループが終われば,変更はそこでス

トップするのですから。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

19

Page 28: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

20 第 6 章 フォント山盛り〔抄〕

サインボード・アナロジー

TEXはいろいろな標識が書かれたサインボード †訳註1)を持ってて,そのうちの 1枚には「現在のフォント=\rm」と書いてあるみたいなものです。そして,入力テキ

ストの中で “\it”とすると,TEXは前のボードを下ろして,今度は「現在のフォント=\it」と書いてあるやつを掲げるわけです。

グループを開始するというのは,このサインボードの上に透明なプラスチックの

シートを被せるのに似ています。この透明シートを通して,TEXはその下の標識も見ることが出来ます。グループを開始してそこで “\it”とすると,TEXは前のボードを下ろしません。その代わりに,被せた透明シートに「現在のフォント=\it」と

いう標識を書き込みます。

グループを終わらせると,TEXはプラスチック・シートをはずすので,そうすると,プラスチック・シートに書かれた追加の標識も皆,はぎ取られることになりま

す。ですので,最初の標識はすべて,元のボードに書かれたままになっています。(もちろん,TEXがその内部に本当にサインボードを持ってるわけではありませんし,更

には,“\bf”,“\overfullrule”,“\def”とかの仕事をしている「便利屋さん」がいるわけでもありませんよ。これは,TEXの動作についての,簡単なアナロジーに過ぎません。)

グループの中のグループの中のグループ…

グループを開始する前に,先のグループを閉じなきゃならないというわけでもあり

ません。いつでも好きなときに新たなグループを開始することが出来ます。これは,

イタリック体の単語の長いグループの中で,ローマン体やボールド体を使いたいとき

とかに,便利です:

1 You can {\it nest one group {\bf inside} another group} like this too.

You can nest one group inside another group like this too.

イタリック体は,1つ目のグループにローカルになっています。1つ目のグループは,最初の “{”で始まっています(サインボード・アナロジーでの最初のプラスチックシートに当たります)。ボールド体は 2つめのグループにローカルです。2つ目のグループは,2つ目の “{”の後に始まります。

2つ目のグループが終了すると,TEXは 2枚目のプラスチックシートと,そこに書かれた「現在のフォント=\bf」という標識をはずします。それで,TEXが「現在のフォント」の標識をチェックすると ――TEXは文字をタイプセットする度にこれをチェックします――,1つ目のグループの「現在のフォント=\it」だと分かるわけ

です。それで TEXは,“another group”という文字をイタリック体でタイプセットします。

1つ目のグループが終了すると,TEXは 1枚目のプラスチックシートをはずしますので,最初の「現在のフォント=\rm」という元々の標識がまた見えるようになり

ます。

†訳註1) 原著では “bulletin board”。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 29: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

まとめとこれから 21

Changing the Font in Math Mode

6.3 The Italic Correction

6.4 Typeface Macros

Letting the Macro Do the Work

6.5 Using Exotic Fonts: Load Your Own

Loading Exotic Fonts

Deciphering a Font’s Computer Filename

Font Metrics Files and Pixel Files

まとめとこれから

本章では,ローマン体(roman),タイプライタ体(typewriter),ボールド体(bold-

face),スラント体(slanted),イタリック体(italic)のフォントを行き来する方法と,

この手の変化をローカルに(グループの内部に)止める方法について見ました。

“\em”,“\bibl”,“\eg”,“\ship”といったマクロを書けば,単語を強調したり, \def\em{\it}\def\bibl{\sl}\def\eg{\tt}\def\ship#1{{\em

#1}}

書誌を引用したり,コントロールシーケンス名を書いたり,船の名前を書いたりと

いった際に,一貫性を保ってフォントを用いることが容易になります。本章では更

に,ユーザーのシステムで利用可能な他のフォントをロードする仕方についても,述

べました。

次の章では,文字を大きくしたり小さくしたりする方法や,サイズの異なるフォン

トをロードする方法について,説明しましょう。第 27章では異なったサイズの数式

モードフォントをロードする方法を説明しています。その方法を使えば,例えば見出

しや脚註みたいに,大きな書体や小さな書体を使う場所でも,数式モードを利用する

ことが可能となります。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 30: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

22 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 31: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 7章 文字を大きくしたり小さくしたり〔抄〕

TEXの初期設定のポイントサイズは,10ポイントです(「ポイント」というのは,印刷業界で使う単位です.およそ 72ポイントが 1インチに相当します*原註1))。多くの書籍は

10ポイントの書体を使っていますが(本書もそうです),81/2 × 11インチのレターペーパー用としては,10ポイントはちょっと小さめです。本章では,文字のサイズを大きくする(または,小さくする)方法について,2つ説明をします。

LATEXには,フォントを大きくしたり小さくしたりする方法が 2つあります.本文のフォント LATEX2.09Notes

を別のサイズにしたいときには,ランポートさんの本に書いてあるように,“\documentstyle”にオプションのインプットを指定してください.文書の一部のフォントを大きくしたり小さくしたりするには,ランポートさんの本に書いて

ある「サイズ変更マクロ」を使ってください.

7.1 Magnify the Size of Your Text

Let TEX Remember the Number

Limitations of Using \magnification

7.2 Loading Smaller Fonts

7.3 Macros to Change Font Size

7.4 Loading Larger Fonts

ここまでの説明を読んだユーザーの中にはもしかしたら,「へ~,それじゃ,12ポイントのフォントをロードするには “\font\twelverm=cmr12”とかってすればいい \font

わけね!」と思う方がいるかも知れません。確かにいいアイデアですが,でも,恐ら

くうまくいきません。最近になるまで,“cmr12”とか “cmbx12”とかというファイルは存在しませんでした。その代わりに,多くのTEXシステムにおいては,11, 12, 14,17, 21, 25ポイントに拡大した 10ポイントのフォントを使っています。拡大したフォントをロードするには,プリミティブである “\font”にいくつか追

加の情報を与えなければなりません。こんな風にです:

\font\twelvebf=cmbx10 scaled 1200

\font\xiibold= cmbx10 at 12pt

*原註1) 元々は,12 ポイントが 1 パイカで,6 パイカが 1 インチだったので,それで 72 ポイントで 1 インチでした。10 ポイントの文字のベースライン同士は,その間を普通 12 ポイント(1 パイカ)離すので,6 行で 1 インチです。タイプライタの活字サイズの「パイカ」はこの単位からその名が付けられました。100 年前に,American Typefounders Association が 1 ポイントを 0.013837インチと決めたので,現在では 72.27 ポイントで 1 インチです。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

23

Page 32: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

24 第 7 章 文字を大きくしたり小さくしたり〔抄〕

この 2つの指示が実現する結果は同じものです。つまりどちらも,ボールド体である “cmbx10”フォントを,12ポイントのサイズでロードします。この 2つの指示は,名前は違いますが,“\twelvebf”と指定するのと “\xiibold”と指定するのとは,同じ効果をもたらします(ローマ数字の “xii”は “twelve”という単語よりも短いので,フォ

ントに名前をつける際に便利です)。

ここで,“scaled 1200”や “at 12pt”はどちらも,特定のフォントを拡大してローキーワード

ドすることを,TEXに指示しています。“scaled”や “at”はコントロールシーケンスではないので,バックスラッシュはつきません。これらは「キーワード」です。TEXで「キーワード」というのは,コントロールシーケンスに追加の情報を与えるもので

す。この “scaled”や “at”はどちらとも,上に示したように “\font”というコントロールシーケンスに続くときにだけ,キーワードとなります。

キーワードのうちのいくつかは,インプットを必要とします。つまり,“scaled”には数値が必要で,“at”には「ディメンション」―― 数値と単位 ―― が必要です(ディメンションについては,8.1節で説明します)。“scaled”や “at”はどちらも,これらの情報を,拡大されたフォントファイルを見つけるために “\font”が使う指示へと,変換してくれます。拡大するのと同じやり方で,縮小したフォントを使うことも

出来ます。

“scaled”とか “at”と,そのインプットとの間には,スペースを入れる必要は実はありません。スペースを入れると指示が読みやすくなるというだけのことですの

で,ここにスペースを入れたくないという方は,入れなくても構いません。

Let TEX Remember the Font-Size Numbers

まとめとこれから

本章では,文書の書体サイズを変更する方法を2つ説明しました。“\magnification”\magnification

は,文書内のものをすべて拡大または縮小するものでした。サイズの違うフォントを

ロードすれば,当該フォントのサイズのみを変えることも出来ました。

脚註や見出しの場合のように,あるフォントサイズから別のフォントサイズへと\font\eightrm=cmr8\font\eightbf=cmbx8\font\eigthit=cmti8\font\eightsl=cmsl8\font\eighttt=cmtt8

\def\eightpoint{%\def\rm{\eightrm}%\def\bf{\eightbf}%\def\it{\eightit}%\def\sl{\eightsl}%\def\tt{\eigthtt}%\rm}

変更するには,“\eightpoint”のようなサイズ変更マクロを書けば良いのでした。\eightpointは,フォント変更マクロの定義を変更するものです。こうすれば,例

えば “\bf”とすると,\tenbfではなくて,\eightbfへとフォントを変更すること

が出来るようになります。この変更を局所化するには,\eightpointコマンドと,8ポイントでタイプセットするべき部分とを,グループの中に入れるようにします。

次の章では,ページ上の種々のホワイトスペースの量を変更する方法について,説

明をします。第 27章では,TEXの数式ファミリの仕組みを使って,様々なサイズの数式モードフォントを利用する仕方について述べています。その方法を用いると,見

出しや脚註のような,大きな書体や小さな書体を用いる場所で,正しい数式モード

フォントを使えるようになります。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 33: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 8章 ページ上のさまざまなホワイトスペース

ページ上でホワイトスペースが占める割合というのは,読み手に非常に大きなイン

パクトを与えます。一行の長さがとても長くて,行間が狭かったとしたら,すごく読

みにくくありませんか? 逆に,一行が短くって,そして行間が広すぎると,ドラフトみたいに見えませんか? いくつかの行で単語がみんなくっついてたりしたら? 段落がどこで終わって,次の段落がどこで始まるのか分かりづらくなりませんか?

TEXの初期設定では,余白は大体 1インチで,段落のインデントは約 1/4インチ,

そして行間は 6行で 1インチとなっています(TEXは「インチ」でなくて「ポイント」を

使っているので,実際のサイズはいま挙げたのとはちょっとだけ違っています.本当のサイズ

については,すぐあとで分かります)。このままだと,ページが詰まり過ぎで読みにく

いので,この初期設定(デフォルト)のいくつかは,多分変えたくなるだろうと思い

ます。そうするには,適切な「情報屋さん」に,異なるディメンションを覚えてもら

うことになります。

TEXには,ホワイトスペースに関係する沢山の「情報屋さん」がいます。日常的に使うもの(余白幅とか段落のインデント幅とか)から,奥義に属するようなもの(数式

モードの前後にどれだけのスペースを挿入するか,みたいな)まで,多岐に亘ります。本

章では,ユーザーがいちばん変更したいと考えるであろう「情報屋さん」たち,つま

り,段落のインデント幅,余白,段落間隔,そして行間隔について,説明をします。

ホワイトスペースに関係する他の「情報屋さん」のいくつかは,後続の章に出て来ま

すし,海図に載ってない海路を探索したいという向きには,付録 Bに,ホワイトス

ペースに関係する TEXの「情報屋さん」をすべてリストアップしてあります。これらの「情報屋さん」の情報を変更するには,TEXの「ディメンション」のシ

ステムの使い方について,知る必要があります。

8.1 TEXのディメンション

ディメンションというのは,簡単に言うと,数値と長さ単位とを合わせたもので ディメンション

す。インチを使いたい人もいるでしょうし,印刷業界の様々な単位を使いたい人,は

たまたメーター法を使いたい人もいるでしょう。TEXはこれら 3つのどれでも扱うことが出来ます。

全部で 9種類の長さ単位を,TEXは理解出来ます。それぞれの単位には,2文字からなる略語があります。TEXは,次の表の 3列目に載せた変換法で,ディメンションを計算します。4列目と 5列目には各々,1インチがそれぞれの単位ではどのくらいになるのかと,それぞれの単位の 1単位が何ポイントになるのかについてとを,載せてあります:

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

25

Page 34: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

26 第 8 章 ページ上のさまざまなホワイトスペース

1 in = 1 unit =

in inch 1 in = 72.27 pt 72.27 ptpc pica 1 pc = 12 pt 6.0225 pc 12 ptpt point 1 pt = 1 pt 72.27 pt 1 ptbp big point 72 bp = 1 in 72 bp 1.00375 ptcm centimeter 2.54 cm = 1 in 2.54 cm 28.45 ptmm millimeter 1 mm = 0.1 cm 25.4 mm 2.845 ptdd didot point 1157 dd = 1238 pt 67.5415 dd 1.07 ptcc cicero 1 cc = 12 dd 5.6285 cc 12.84 ptsp scaled point 65536 sp = 1 pt 4736286.7 sp 0.00001526 pt

これらの略語にはバックスラッシュはつかないのですが,それはこれらが,“scaled”や “at”と同じ様に,「キーワード」だからです。したがって,TEXは,ディメンションが要求される場面で “in”, “pc”, “pt”, “bp”, “cm”, “mm”, “dd”, “cc”, “sp”が使われると,これらがディメンションの一部であるということが,ちゃんと分かります。

そうでない場面では,これらは通常のテキストとしてタイプセットされます:

1 There are 2.54 cm to the inch---and

2 the \TeX\ dimension ‘1in’ equals ‘72.27pt.’

There are 2.54 cm to the inch—and the TEX dimension‘1in’ equals ‘72.27pt.’

数値と長さ単位との間には,スペースを入れても入れなくても,どちらでも構いま

せん。TEXは,“5pc”というディメンションと “5 pc”というディメンションとを,まったく同じに扱います。でも,数値とキーワードの間にスペースを入れないよう

にすれば,エディタがその間で改行するのを防ぐことが出来ますから,後々もこれが

TEXのディメンションだということが,分かりやすくはなります。あと,例えばあるディメンションはインチにして,次のディメンションはポイント,そして 3番目はミリ,としても全然問題ありません。TEXはこれで混乱したりなんかしません ――ユーザー自身が混乱するかも知れませんが!

TEXのディメンション表記として正しいものを,いくつか挙げます:

2 in .5 pc 0.35pt -67,86254bp 0mm +1024 sp

これらのディメンションのうちのいくつかは,奇妙に思われるかも知れません。

▪ 「ゼロ」。私は,数値が 0より小さいときには小数点の前に 0を書くほうが好きなのですけど,でもこの 0はなくても構いません。TEXはどちらでも理解出来ます。なお,TEXがディメンションを予定しているところでは,長さ単位なしでただ “0”とはしないでください。そうはせずに,例えば “0pt”とか “0in”とかとか,とにかく何にせよ上に挙げた長さ単位をつけるようにしてください。

▪ 「マイナス記号」。ディメンションの前につくマイナス記号はしばしば,加え

るのでなく減ずる場合や,TEXに「逆に動いて」もらうとき,つまり,右にじゃなくて左にとか,下にじゃなくて上に,とかというときに使います。こういう

マイナスのディメンションの例が 3つほど,8.4節,8.8節,9.7節にあります。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 35: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

8.2 段落のインデント幅 27

▪ 「プラス記号」。お望みであれば,正のディメンションの前にプラスの記号を

つけても構いませんが,これは格別必要ではありません。TEXでは “+”は常に正の数値を意味するのであって,数値を加えるという意味ではありません。

▪ 「コンマ」。小数点として「ピリオドの代わりに」コンマを使うことも出来ま

す。ヨーロッパの国々のいくつかでは小数点としてコンマを使うので,TEXはこれに対応出来るように設計されています。しかし,コンマをこれ以外の場所

では,例えば数値を 3桁ごとに区切ったりするのには,使わないでください。

他にあと 2つ,使用しているフォントに依存するような単位が,TEXにはありま emex

す。“em”は水平方向のスペーシングに使われ,“ex”は垂直方向のスペーシングに使われるものです。金属活字の時代には,“em”は大文字の “M”と同じ幅で,“ex”は小文字の “x”と同じ高さでした。TEXの “em”と “ex”とを使うと,相対的なスペーシングは保持したままで,フォントサイズごとに異なった拡大や縮小が可能になりま

す。TEXの 10ポイントフォントの基本セットでは,“em”と “ex”のサイズは以下のようになっています:

\rm \sl \it \tt \bf mathitalic

1 em = 10.00 pt 10.00 pt 10.22 pt 10.50 pt 11.50 pt 10.00 pt1 ex = 4.31 pt 4.31 pt 4.31 pt 4.31 pt 4.44 pt 4.31 pt

“em”と “ex”とは,フォントの相対的なサイズを維持します。例えば,「コンピュータ・モダン・ローマン 12ポイント」フォントでは,その “em”は 1.2× 10 = 12ポイントで,“ex”は 1.2× 4.31 = 5.17ポイントとなります。

ディメンションを実際のサイズに保つ

“\magnification”を使いながら,特定のディメンションについては元のママにし true

ておきたいという場合には,長さ単位の前に “true”をつけてください。例えば,文書を 14ポイントに拡大する場合に,\overfullruleまで同時に拡大したくはないというなら,こうします:

1 \magnification \magstep2

2 \overfullrule=5truept

もっと重要な場面としては,ホワイトスペースをコントロールするような「情報屋

さん」を扱う際に,trueを使う必要が出てくるかも知れません。

8.2 段落のインデント幅

TEXは,新たな段落の冒頭には,一定のホワイトスペースを自動的に挿入します。この \parindent

ホワイトスペースの幅をどれくらいにすれば良いのかについて,TEXは “\parindent”という名の「情報屋さん」(プリミティブ)に尋ねます。初期設定の \parindentは 20ポイントで,これは 1/4インチよりは実はちょっと広いです(20ポイントは 0.27674イ

ンチで,1/4インチは 18.0675ポイントです)。

段落冒頭のホワイトスペースの量を変えるには,「情報屋さん」である \parindent

に新たなディメンションを覚えてもらいます。例えば,すべての段落を 1/2インチずつインデントする場合には,次のようにします:

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 36: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

28 第 8 章 ページ上のさまざまなホワイトスペース

\parindent=0.5in

この \parindentは文書内のどこで変更しても構いません。しかし,段落の途中で

変更した場合には,その効果を確かめることは出来ませんし,当該段落冒頭のインデ

ントも変わりません。TEXが新たな \parindentを使うのは,次の新しい段落から

であって,そしてそれ以降はずっと,この新たな \parindentを使い続けます(この

「情報屋さん」を再び変更しない限りは)。

\parindentを変更するには,LATEXのディメンション変更マクロである “\setlength”をLATEX2.09Notes

使ってください.“\setlength{\parindent}{2em}”のようにタイプします(ディメンションの値はお好きなものをどうぞ).\parindentは文書内のどこで変更しても構いません.

インデントせずに段落を始める

時には,特定の段落をインデントなしで始めるべき場合もあります。図や表の次の

文章が,新たな段落を始めるのではなくて前の段落の続きである場合には,インデン

トするべきではありません。また,章や,節,小節の最初の段落とか,場面や時間が

転換したことを示すための “\sceneshift”マクロの次の段落でも,インデントした\def\sceneshift{\bigskip}

くないかも知れません。

こういうときに,いちいち \parindentを 0ptにしたり元に戻したりを繰り返す必\noindent

要はありません。そうではなくて,段落の冒頭で “\noindent”とします:

1 \dots\ attached metal string and sent the kite soaring

2 into the stormy skies.

3 \sceneshift

4

5 \noindent

6 Suddenly, lightning struck! Ben Franklin knew \dots

. . . attached metal string and sent the kite soaring into the stormyskies.

Suddenly, lightning struck! Ben Franklin knew . . .

本書の中のインデントしない段落は皆 ――この段落もそうです――,\noindentで

始めています。

もちろん,これを実現する簡単な方法は,マクロの中に \noindentを組み込むこ

とです。例えば,本書で各種サンプルの印刷例をタイプセットしているマクロでは,

最初の段落を開始する際に \noindentを使っています。そのせいで,サンプルの最

初の段落はインデントしていないわけです。

“\noindent”は,プリミティブの「作業屋さん」であって,「情報屋さん」ではありません。このコマンドは,インデントせずに新たな段落を開始する,というもので

す。似たものとして,“\indent”という名のプリミティブもあって,こちらは,新た\indent

な段落を開始し,且つ \parindentの幅だけのインデントを冒頭に挿入する,という

ものです*原註1)。

*原註1) これはちょっと単純化し過ぎです。“\noindent” と “\indent” はどちらも,TEX を水平モード(段落作成モード)へと押し出します。\indent だとインデントも挿入し,対する \noindent はインデントを挿入しません。TEXが既に水平モードにいる場合には,\noindentは何の効果も及ぼ

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 37: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

8.3 余白幅 29

8.3 余白幅

余白幅を変化させるには 2つの方法があります。ひとつは,本文幅を狭く(または広く)して,その分横にシフトするという方法です。このアプローチは ――TEXがページの上下に自動的に挿入する “headline”と “footline”を含めて―― ページ全体 headline

footlineに影響が及びますが,ページ余白を管理するにはベストなやり方です。もうひとつ

の方法は,ページの headline,footline,本文領域を,別個に扱うものです。この後者のアプローチは,特別の用途向けにインデントした段落に適しているので,第 13

章で説明します。

本文の幅は“\hsize”で,ページ上のその左右への配置は“\hoffset”です。“\hsize” \hsize

\hoffsetと “\hoffset”はどちらも,「情報屋さん」(プリミティブ)です(ご想像のとおり,これらの名前に含まれている “h”は “horizontal”の意味です)。

TEXの初期設定では,\hsizeは 6.5インチで,\hoffsetは 0ポイントです。しかしこの「\hoffsetが 0ポイントである」ということは,本文が紙の左の端から始まるという意味ではありません。“.dvi”ファイルがプリンタに送られる際には,ドライバ・プログラムが自動的に,本文と紙の左端との間に 1インチの余白を入れるようになっています。

左右の余白幅を変更するには,「情報屋さん」である “\hsize”と “\hoffset”とに,新たなディメンションを覚えてもらいます。“\hsize”を決める際の経験的ルールとしては,一行の文字数を大体 55文字から 65文字にするというものがあります。これ以上文字数を増やしてしまうと,読みにくい行になってしまいます。

左余白を 1.25インチに増やす必要がある場合について考えてみましょう。最初の1インチは既にそこにあるのですから,本文を右に 0.25インチだけ \hoffsetすれば

いいわけです:

\hoffset=0.25in

本文を右に動かしたので,その分右余白が狭くなってしまいます。右余白を元の 1インチに戻すためには,本文幅を狭くします。\hoffsetは 0.25インチだったのですから,\hsizeの初期値 6.5インチから,同じだけ減らせばいいのです:

\hsize=6.25in

TEXで作業する経験をほんの少し積みさえすれば,左右の余白幅を基準にして考えるのではなくて,左余白と本文幅とで設定するというやり方にも,すぐに慣れます。

LATEXで本文の幅(段落の \hzise)を変えるには,\setlengthを使って “\textwidth”を変 LATEX2.09Notes

更します.LATEXで\hoffsetを変えるには,\setlengthを使って “\oddsidemargin”と “\evensidemargin”

を変更します.LATEXは,奇数ページには \oddsidemarginを,偶数ページには \evensidemargin

を,使います.\textwidth,\oddsidemargin,\evensidemarginは,プリアンブルで変更しなくてはな

りません.

しませんが,他方 \indent は,\parindent 幅のホワイトスペースをひとつ,付け加えます。したがって,段落を始めるときに “\indent\indent” とすると,段落の冒頭に \parindent 幅のスペースが 2個挿入されます。“\noindent\noindent”として段落を始めても,“\noindent”が 1個のときと変化はありません。TEX の「モード」については第 33 章で説明します。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 38: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

30 第 8 章 ページ上のさまざまなホワイトスペース

8.4 TEXに計算してもらう

これら「情報屋さん」のそれぞれに,どのディメンションを覚えてもらっているの

かをユーザーがいちいち記憶しておかなきゃならないなんて,面倒ですよね。そもそ

も,記憶するのは「情報屋さん」の仕事なんですし。TEXに足し算や引き算をしてもらえれば,ユーザーがこれらを記憶しておく必要もなくなります。

上の例では,\hoffsetを 1/4インチ増やして,\hsizeを 1/4インチ減らしました。

TEXのプリミティブである “\advance”が,この仕事をしてくれます。引き算をす\advance

るには,正のディメンションではなく負のディメンションを使います:

\advance\hoffset by .25in

\advance\hsize by -.25in

\advanceは 2つのインプットを取って,そして「情報屋さん」に新たな情報を覚えるように伝えます。\advanceのひとつ目のインプットは,「情報屋さん」それ自

体であって,今の例では \hoffsetと \hsizeです。ふたつ目のインプットは,“by”の後に続きます。

“by”は,これもまた「キーワード」です。この “by”は,“\advance”,“\multyply”,“\divide”という計算をしてくれる TEXの 3つのコントロールシーケンスのどれとでも一緒に使えます。

\advanceは,どの「情報屋さん」にも使えます。数値を記憶する「情報屋さん」

の場合には “by”の次には数値を,ディメンションを記憶する「情報屋さん」の場合には “by”の次にはディメンションを,指定します。例えば,本文幅がとても狭くて,“overfull hbox”の洪水を避けるために \toleranceを増やしたいという場合には,こ

うします:

\advance\tolerance by 3000

ディメンションを記憶している「情報屋さん」に何かを加える場合には,LATEXの “\addtolength”LATEX2.09Notes

マクロを使ってください.例えば,\parindentを 1em増やす場合には,次のようにタイプします:

 \addtolength{\parindent}{1em}

TEXの\toleranceを変更する代わりに,ひとつないし複数の段落に対してLATEXの “sloppy”環境を使うことも出来ます.

本文上下の余白幅

左右の余白幅を変更するのと同じようにして,本文上下の余白幅も変更することが\vsize

\voffset 出来ます。“\voffset”が本文をページ上でどれだけ下にシフトするのかを覚えていて,“\vsize”が本文の高さがどれくらいなのかを記憶しています。“\voffset”と“\vsize”はどちらも,「情報屋さん」(プリミティブ)です。

plain TEXの初期設定では,\voffsetは 0ポイントで,\vsizeは 8.9インチです。希望するレイアウトになるまで,いろいろなディメンションを指定して,実験してみ

てください。“.dvi”ファイルがプリンタに送られる際には,ドライバ・プログラムが自動的に,本文と紙の上端との間に 1インチの余白を入れます。

TEXにはこの,水平方向(horizontal)には “h”,垂直方向(vertical)には “v”というペアが,いくつもあります。もしもどっちがどっちなのか分からなくなるよう

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 39: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

8.5 段落間隔 31

でしたら,海岸の絵をディスプレイの近くに貼っておきましょう。「水平線(hori-

zon)」は水平方向(horizontal)と同根で,あと,高い場所から下を覗き込むと「眩暈

(vertigo)」がしますよね †訳註1)。

LATEXで本文の高さを変えるには,\setlengthを使って,LATEXの “\textheight”を変更し LATEX2.09Notes

てください.\voffsetを変えるには,\setlengthを使って,“\topmargin”を変更してください.\textheightと \topmarginはどちらも,プリアンブルで変更しなくてはなりません.

8.5 段落間隔

段落間のホワイトスペースの量は,“\parskip”という名の「情報屋さん」(プリミ \parskip

ティブ)によって決まります。\parskipは,他の「情報屋さん」と同じように,変

更可能です。変更するには,新しいディメンションを覚えてもらいます:

\parskip=1pc

TEXが\parskipを加えるのは,新しい段落を始める直前に,です。段落の後に,

ではありません。

\parskipを変更するには,\setlengthを使ってください.“\setlength{\parskip}{3pt}” LATEX2.09Notes

のようにタイプします(ディメンションの値はお好きなものをどうぞ).\parskipは文書のどこででも変更出来ます.

8.6 行間隔

TEXを学び始めた人々の多くが発する最初の問いのひとつに,「ダブルスペースにする \baselineskip

にはどうしたら良いのだろうか」というものがあります。行間隔は,“\baselineskip”という名前の「情報屋さん」(プリミティブ)によって制御されています。

小学校でABCを習ったときに,幅広の罫線が引かれた用紙に書いたのを覚えてますか? この罫線が「ベースライン」でした。つまり,文字がその上に腰掛けるラインです。ベースラインより下にはみ出すのは,“g”, “j”,“ p”, “q”, “y”, “Q”みたいに,尻尾を持つような文字のみです。TEXの “\baselineskip”というのは,あるベースラインと次のベースラインとの間隔のことです。

TEXは,段落をタイプセットする際には,段落を行にばらします。そして,これらの行をページ上に,壁に吊り棚を作るみたいに,上から下へと重ねていきます。TEXの \baselineskipは,ベースラインがどれだけ離れなければならないのかを記憶し

ています。まるで,TEXはちょうど \baselineskipの長さの定規を持っていて,次

の棚をどこに置くかを決めるのに,それを使うみたいなものです(このプロセスについ

ては,第 33章でもっと詳しく説明します)。

TEXの初期設定では,\baselineskipは 12ポイントです。12ポイントずつ離れたテキストが 6行だと 72ポイント(約 1インチ)ですから,それぞれのベースライン

は,お隣とは約 1/6インチ離れていることになります。これを変更するには,「情報

屋さん」の \baselineskipに,新しいディメンションを覚えてもらいます。例えば,

セミダブルスペース(space-and-a-half)にするには,次のようにタイプします:

\baselineskip=18pt

†訳註1) うーん,英語圏の人間じゃないと役に立たないアドバイスですよねぇ…。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 40: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

32 第 8 章 ページ上のさまざまなホワイトスペース

\baselineskipは文書のどこで変更しても,何回変更しても構いません。しかし,同

じ段落内で 2回以上変更しても,無意味です。TEXは,段落の最後の \baselineskip

の情報を,段落全体に適用します。

ある「情報屋さん」の情報を,別の「情報屋さん」に,新たな情報として与えると

いうことが出来ます。手紙の場合はしばしば,段落間に空行を必要とします。この空

行を \baselineskipと同じサイズにするには,次のようにします:

\parskip=\baselineskip

\parskipはこれで,何であれ \baselineskipから得られる情報を,保存すること

になります。つまり,\baselineskipが 14ポイントだとすると,これで \parskip

も同様に,14ポイントになります。

フォントサイズに合わせて \baselineskipを変える

本文では 10ポイント,脚註では 8ポイント,という風に,文書のなかで 2つのフォントサイズを使う場合には,これら 2つの場所での \baselineskipも変更する必要

があるでしょう。簡単な方法は,フォントサイズを変更するマクロの中にこの変更を

組み込むというものです。例えば,次の “\eightpoint”マクロのように:

1 \def\eightpoint{%

2 \def\rm{\eightrm}%

3 \def\bf{\eightbf}%

4 \def\it{\eightit}%

5 \def\sl{\eightsl}%

6 \def\tt{\eighttt}%

7 \baselineskip=10pt

8 \rm}

(第 7章で作った “\eightpoint”マクロとの違いは,\baselineskipを変更している部分

のみです)。

TEXに記憶してもらう

\baselineskipを変えたくなる度に,その値を調べるなんて面倒です。TEXが代\normalbaselineskip

わりに覚えておいてくれます。“\normalbaselineskip”という名前の plain TEXの

「情報屋さん」が,\baselineskipの通常のサイズを記憶するという仕事をしていま

す。TEXの初期状態では,\normalbaselineskipは 12ポイントです。よって,ベースラインをダブルスペースに変更する,もうひとつの手段はとしては,こうすること

が出来ます:

\baselineskip=2\normalbaselineskip

TEXは \normalbaselineskipからの情報を 2倍して,そしてその結果を新たな情報として \baselineskipに提供します。ここで,数値は整数でなくても構いませ

ん。例えば:

\baselineskip=1.5\normalbaselineskip

とか

\baselineskip=1.3333\normalbaselineskip

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 41: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

8.6 行間隔 33

とすると,ベースラインの間隔を,セミダブルスペースや 1.3倍スペース(space-and-

a-third)にすることが出来ます。

\normalbaselineskipという「情報屋さん」は,\baselineskipを変更しても変

わらないので,これを,変動しない基準として使うことが出来ます。もしも,ベース

ラインが変になってしまって,元に戻したいという場合には,“\normalbaselines” \normalbaselines

とタイプしてください。\normalbaselinesは plain TEXのマクロで,その定義には

次のような指示が含まれています:

1 \baselineskip=\normalbaselineskip

ある特定の「情報屋さん」を基準にして,それを他の「情報屋さん」の情報源とし

て使うというのは,とても有用なTEXniqueです。本書の残りの部分では,この方法をしばしば目にすることになります。

通常のベースラインのサイズを変更する

お望みであれば,\normalbaselineskipを変更することも,可能です。通常サイ

ズのベースラインを,3行で 1インチになるようにするのであれば,次のようにします:

1 \normalbaselineskip=0.3333in

2 \baselineskip=\normalbaselineskip

ここで 2行目を書くのを忘れてしまうと,\baselineskipには変化が起きず,「情報屋さんが変わってくれない」マチガイに陥ります。

情報屋さんが変わってくれない、というマチガイ

 ある「情報屋さん」に新たな情報を提供すると,その「情報屋さん」は即座に,

新たな情報を計算して記憶します。その情報が別の「情報屋さん」から来るのか

どうかとか,その別の「情報屋さん」の情報を後から変更するのかどうかには,

関係ありません。どんな「情報屋さん」であれ,その情報を変更するには,その

当該「情報屋さん」自身に,新たな情報を与えなければなりません。

したがって,\normalbaselineskipを変えただけでは,TEXは \baselineskip

を変更はしません。ここで,順番に次のように指定してみると,\baselineskipと

\normalbaselineskipがどうなるのかについて,見てみましょう:

▪ TEXの初期状態では: \baselineskipの情報は · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 12pt \normalbaselineskipの情報は · · · · · · · · · · · · · · · · · · · · · · · · · · 12pt

▪ \baselineskip=18ptとした後では:

 \baselineskipの情報は · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 18pt \normalbaselineskipの情報は · · · · · · · · · · · · · · · · · · · · · · · · · · 12pt

▪ 次に \normalbaselineskip=15ptとすると:

 \baselineskipの情報は · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 18pt \normalbaselineskipの情報は · · · · · · · · · · · · · · · · · · · · · · · · · · 15pt

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 42: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

34 第 8 章 ページ上のさまざまなホワイトスペース

▪ 続いて,\baselineskip=2\normalbaselineskipとすると:

 \baselineskipの情報は · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 30pt \normalbaselineskipの情報は · · · · · · · · · · · · · · · · · · · · · · · · · · 15pt

8.7 TEXにみんなしてもらう

ダブルスペースにするには “\linespacing{2}”,セミダブルスペースにするなら“\linespacing{1.5}”とタイプすればいいとしたら,ナイスじゃないですか? 出来ます。次のような,インプットをひとつ取る “\linespacing”マクロを書きましょう:

1 \def\linespacing#1{\baselineskip=#1\normalbaselineskip}

5.3節で見ましたように,\linespacingの後ろの “#1”は TEXに,このマクロがインプットを 1個取ることを教えています。定義の中にあるほうの “#1”は,TEXが文章の中でこのマクロを見つけて展開する際に,どこにこのインプットを挿入すれば

良いのかを示しています。したがって,\linespacing{1.75}は,

\baselineskip=1.75\normalbaselineskip

へと展開されます。

仮に現在の\normalbaselineskipが 12ポイントだとすると,\baselineskipは

21ポイントとなり,次の例のようになります:

1 \linespacing{1.75}

2 Is double spacing more like double parking or like

3 double dating? If the former, will I get a ticket?

4 If the latter, is it blind?

Is double spacing more like double parking or like double

dating? If the former, will I get a ticket? If the latter,

is it blind?

\setlength を使って,\baselineskip を変更することが出来ますし,その変更は文書のLATEX2.09Notes

どこで行っても構いません.しかし,LATEX でベースライン間隔を変更する一番良い方法は,“\renewcommand”を使って,“\baselinestretch”を再定義することです.例えば,ダブルスペースにするには,次のようにタイプします:

 \renewcommand{\baselinestretch}{2}

セミダブルスペースにするには \baselinestretch を “1.5” にし,1.3 倍スペースにするなら “1.333”に,という風にお好きな数値を設定してください.\baselinestretchの変更は,プリアンブルで行ってください.

8.8 「情報屋さん」にマフィンを

「情報屋さん」に新たな情報を覚えてもらう必要が生じた場合,それには 3つの方法があります。ひとつは直接的な方法で,あとの 2つは間接的なものです:

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 43: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

8.8 「情報屋さん」にマフィンを 35

直接的 \baselineskip=15pt

 覚えてもらう特定の数値やディメンションそのものを,直接「情報屋さん」に提供する。

間接的 \baselineskip=\normalbaselineskip

 新たな情報を,別の「情報屋さん」に提供してもらう。

\advance\baselineskip by 10pt

 新たな情報を提供するのに,\advance,\multiply,\divideを使う。

情報を直接提供するというやり方は,誰かお腹が空いている人に,マフィンをあげ

るみたいなものです。その人が必要としている,そのものをあげるわけです。同様

に,特定の数値やディメンションを指定する方法は,「情報屋さん」に,探している

まさにそのものを提供する,ということです。

時には,情報を「間接的に」,他の「情報屋さん」から提供してもらうほうが,簡

単で且つ一貫性がある場合があります。これは,「鈴木さんに聞きに行って。彼があ

なたのためのマフィンを持ってるから」と言うのに似ています。

例えば,\baselineskipを \normalbaselineskipと同じにするには,\baselineskip

に特定のディメンションを指定するよりも,“\baselineskip=\normalbaselineskip”としたほうがいいです。こうすれば,後から\normalbaselineskipを変更することに

した場合に,\baselineskipも一緒に変更されます(もちろん,まず \normalbaselineskip

のほうを先に変更しなければなりません.そうじゃないと,「情報屋さんが変わってくれない」

マチガイに陥ります)。

情報を「間接的に」提供するもうひとつの方法は,レシピを渡すのに似ています。

つまり,「あなたが必要としているものそのものは,今手許にはないのですが,でも,

ここにあなたのためのレシピがあります」というわけです。

上に挙げた例では,\advanceがいくつかの材料(\baselineskipからの情報と,by

からの数値)を手に入れて,それらから \baselineskipが記憶すべき新たなディメン

ションを作り出しています。これはまるで,\advanceが,\baselineskipのために

特製のマフィンを焼いてあげるみたいなものです。

この,「レシピをあげる」戦略が有用なのは,特定の数値やディメンションが手許

にない場合や,関係するものを変更しなければならないような場合です。例えば,ド

ラフトのために \hsizeを変更するには,

\adcance\hsize by -1.5in

とするほうが,“\hsize=5in”とするよりも,フレキシブルです。\multiplyおよび \divideと共に使われる byのインプットは,ディメンションで \multiply

\divideはなく,数値でなければなりません。また,これらの数値は,整数でないといけませ

ん(小数は不可)。例えば,ドラフトのために \hsizeを元のサイズの 2/3にしたいのであれば,次のようにタイプしましょう:

1 \multiply\hsize by 2

2 \divide\hsize by 3

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 44: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

36 第 8 章 ページ上のさまざまなホワイトスペース

8.9 みんな一緒に

作業する文書のどれもが,それぞれに特別の書式を使っているというのであれば,

以上の「情報屋さん」を,文書ごとにカスタマイズしてください。でも,作業する文

書がいくつかの一定の書式のものだけであるなら(手紙,論文,それにドラフト程度),

それぞれそれ専用のマクロを書きたいと思うのではないでしょうか。“\thesis”と“\draft”の骨組みだけを,ここでは挙げておきます:

1 \def\thesis{\hsize=6.25in

2 \hoffset=0.25in

3 \voffset=0.25in

4 \vsize=8.75in

5 \normalbaselineskip=18pt

6 \normalbaselines}

1 \def\draft{\hsize=5in

2 \vsize=7.5in

3 \parindent=30pt

4 \linespacing{2}}

こうしておけば,ドラフトとしてタイプセットしたい文書の場合には,次のような

行で始まることになるでしょう:

1 \input macros

2 \draft

似たようなアプローチとしては,それぞれの文書タイプごとに,“thesis.mac”とか “draft.mac”といった,小さなマクロファイルを用意しておくのもよいでしょう。それぞれのファイルには,対応する「情報屋さん」のためのカスタマイズされた情報

や,それぞれの書式のためのマクロを入れておくことが出来ます。このようなアプ

ローチをとるならば,論文は次のような行で始まることになるでしょう:

1 \input macros

2 \input thesis.mac

LATEXはこの「ファイルをインプットする」システムを使っています.LATEXのスタイルファLATEX2.09Notes

イルは,特定の文書タイプそれぞれのために,種々のホワイトスペースをカスタマイズしています.LATEXのスタイルファイルの変更についてアドバイスするのは,本書の範囲をずっと超えています.実験をしたい場合には,スタイルファイルをコピーして,小さなテストファイルを使って,新たなスタイルファイルの中で何かを変更した場合にどうなるのかについて,見てみてください.

まとめとこれから

本章では,ディメンションについて説明をし,それから,余白,本文の高さと幅,段落の

インデント幅,ベースラインの間隔を変更する方法について示しました。“\noindent”と “\indent”はどちらも新たな段落を開始することが出来ます。“\linespacing”,“\thesis”,“\draft”は,ページ上のホワイトスペースを変更するマクロの例です。マフィンのアナロジーは,「情報屋さん」に新たな情報を提供する 3つの方法について,説明するものでした。

次の章では,新たなホワイトスペースの作り方について説明します。その次の章

では,TEXの「グルー」――想像されているようなベトベトしたやつではなくって,どちらかというとパテみたいに変幻自在なもの―― について紹介をします。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 45: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 9章 新しいホワイトスペースを作る

ページ上にホワイトスペースを配置するに際しては,確定した量が必要なときもあ

れば,「ここからあそこまで」を埋めなきゃならないんだけどその量がどれくらいか

は事前には分からない,というときもあります。量が確定しているものの例としては

“\parindent”があります。事前には分からないような「ここからあそこまで」の量の例としては,「ページの残りの部分」が挙げられるでしょう。

本章では,行やページに決まった量のホワイトスペースを加える方法について,説

明します。次の章では,いくらでも伸び縮みするタフィーキャンディーみたいなもの†訳註1)である「グルー」について,紹介します。

9.1 ここに少し、ホワイトスペースを入れて

TEXのプリミティブである “\hskip”が,行に水平方向のスペースを加え,同じく \hskip

\vskipプリミティブの “\vskip”が,ページに垂直方向のスペースを加えます。当然,どれだけのスペースが必要かを指定しなくてはなりませんので,\hskipと \vskipはど

ちらも,インプットを取ります:

1 Dick and Jane went \hskip 1in skipping

2 down the hill.

3

4 \vskip0.25in

5

6 Spot ran up to meet them.

Dick and Jane went skipping down thehill.

Spot ran up to meet them.

ルールを把握した方のために †訳註2)。“went”と “skipping”との間の水平方向のスペースは,1インチよりも広いのですが,それは,単語間スペースがひとつ含まれているからです。“Spot”の前の水平方向のスペースは,“\parindent”によるインデントです。“hill”と “Spot”との間の垂直方向のスペースは,1/4インチよりも大き

いのですけど,それは TEXが,ベースライン間の距離に,“\vskip”を加えるからです。言い換えるなら,“hill”と “Spot”のベースラインの間の距離が,“0.25in +

1\baselineskip”なわけです。

†訳註1) Victor Eijkhout さんが “I’m not sure what is meant by ‘taffy-like substance.’ ” と言っていた,例のものです:-)。

†訳註2) よく分かりません…。“For those of you who grabbed your rules.” と書いてあります。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

37

Page 46: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

38 第 9 章 新しいホワイトスペースを作る

2行のテキストの間に強引にちょうど\vskipと同じだけの量を,TEXに挿入させるには,\vskipの上で “\nointerlineskip”とします。TEXは通常,ベースライ\nointerlineskip

ンをぴったり 1\baselineskipだけ離して配置するために,行間に interlineskipグルーを挿入します。\nointerlineskipは plain TEXのマクロで,TEXが行の直前と直後に interlineskipグルーを挿入するのを防ぎます*原註1)。

\hskipや \vskipと,そのインプットとの間には,スペースを入れても入れなく

ても,どちらでも構いません。数値は英文字ではないので,TEXはどこでコントロールシーケンスが終わるのかがちゃんと分かります。数値を指定し忘れると,TEXはエラーメッセージを送って来て,ゼロ(“0”)を補います。長さ単位を指定し忘れる

と,TEXはまた別のエラーメッセージを送って来て,単位としてポイント(“pt”)を

使います。

LATEXには,ページ上にホワイトスペースを配置するマクロが 2つあります.“\hspace”とLATEX2.09Notes

“\vspace”です.インプットはブレスで囲んでください:

 \hspace{.25in}

 \vspace{1.2cm}

ランポートさんは,「プラスまたはマイナス」マチガイ(10.7 節)に陥らないように,\hspaceと\vspaceを設計しています.

9.2 普段使いためのTEXの出来合いのスキップ

スキップの使い方に一貫性を持たせたいという場合に,最後に使った \vskipの大\smallskip

\medskip

\bigskip

きさを覚えてなくちゃいけなかったり,文書全体を探し廻らないといけないとした

ら,ウンザリですよね。それで,TEXには出来合いの垂直方向のスキップが 3つあります:

  

\smallskip 3 point\medskip 6 point\bigskip 12 point

(これは,単純化しすぎです.TEXのスキップはすべて,実際にはグルーを使っていて,グルーについては次の章で説明します。ここでの目的のためには,これらのスキップがディメンションだけを使っていると考えて構いません.)

これらのサイズは,TEXの初期状態の 10ポイント書体にとってとりわけ都合良く出来ているのですが,それは,“\bigskip”が \baselineskipと同じ高さであって,

“\medskip”はその半分の高さ,“\smallskip”はそのまた半分の高さとなっているからです。

これらのスキップのサイズを変更するのは簡単です。それぞれのスキップには,対

応するスキップ量の「情報屋さん」がいるので,スキップのサイズを変えるには,適

切な「情報屋さん」を変更すればいいわけです。例えば,\bigskipを 1/2インチに,\medskipは 1/3インチ,そして\smallskipは 1/4インチにするなら:

1 \bigskipamount=0.5in

2 \medskipamount=0.3333in

3 \smallskipamount=0.25in

*原註1) より正確には,“\nointerlineskip”は,2つのボックスの間に interlineskipグルーを挿入しないように TEX に伝えます。TEX は,段落のそれぞれの行を hbox という箱に入れています。このプロセスについては,第 11, 28, 33 章で説明します。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 47: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

9.3 \baselineskip サイズのスキップを作る 39

\bigskipとその 2人の兄弟は,クヌース先生によって書かれた plain TEXのマク

ロです。その定義は次のようになっています:

1 \def\bigskip{\vskip\bigskipamount}

2 \def\medskip{\vskip\medskipamount}

3 \def\smallskip{\vskip\smallskipamount}

TEX がテキスト内で \bigskip を見つけてそれを展開すると,\vskip はインプ

ットとしてディメンションを見つけることを期待します。しかし,見つかるのは

\bigskipamountです。それでもまだ,インプットを手にする望みを抱いて,\vskip

は \bigskipamountを突っつきます,すると,\bigskipamountは “12pt”という情報を答えてくれるわけです。

これはまさしく,第 8章の「マフィン・アナロジー」における「鈴木さんに聞いて

みて」戦略と同じものです。直接インプットを手に入れる代わりに,\vskipはその

インプットを「情報屋さん」である \bigskipamountから入手するわけです。

\bigskip,\medskip,\smallskipを使えば,文書の中で,3つの異なるサイズのホワイトスペースを一貫性を保って用いることが,容易になります。まずは,大中

小のスキップをどういう場面で使い分けるのかについて決めて,それから,これら 3つのスキップのサイズをどれくらいにするべきかを決定しましょう。

9.3 \baselineskipサイズのスキップを作る

スキップのサイズを変更する別のアプローチとしては,\bigskip,\medskip,

\smallskip を定義するのに,スキップ量の「情報屋さん」を使うのではなくて,

\baselineskipを基準にするというやり方が考えられます:

1 \def\bigskip{\vskip\baselineskip}

2 \def\medskip{\vskip 0.5\baselineskip}

3 \def\smallskip{\vskip.25 \baselineskip}

ここでも,\vskip とそのインプットとの間にスペースを入れるか否かについて

は,どちらでも構いません。もしもひとつ入れたしても,TEXはそれを無視します。“\baselineskip”,“0.5\baselineskip”,“.25 \baselineskip”はいずれも英文字でないもので始まっているので,これらは皆,その前にあるコントロールシーケ

ンスがどこで終わるのかを TEXに示すことが出来ています。TEXはまた,“.25”と“\baselineskip”との間のスペースも,タイプセットしません。この方法は,8.6節で,\baselineskipに新たな情報を提示したやり方と似ていま

す。ここでは,TEXは \medskipを展開するときに,\baselineskipを 0.5倍して,

その結果をインプットとして \vskipに渡します。

今定義したような \bigskip,\medskip,\smallskipをテキストで使うと,これ

らのスキップは,ダブルスペースの場所ではサイズが大きくなり,シングルスペース

の場所ではサイズが小さくなります。TEXがこれらのスキップマクロを展開する際には,そのときどきの \baselineskipが使われます。したがって,もしもドラフトの

部分では \baselineskipを増やしていたり,逆に引用文の部分では \baselineskip

を減らしていたりすると,TEXは,マクロを展開して \vskipのためのディメンショ

ンを計算する際には,その大きくしたり小さくしたりした情報を使います。

このアイデアのちょっとしたバリエーションとして,スキップ量の「情報屋さん」

を,\baselineskipに比例させて定めることも出来ます:

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 48: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

40 第 9 章 新しいホワイトスペースを作る

1 \bigskipamount=\baselineskip

2 \medskipamount=0.5\baselineskip

3 \smallskipamount=0.25\baselineskip

「情報屋さん」への新たな情報は,直ちに計算され記憶されます。したがって,この

TEXniqueを使うと,\bigskip,\medskip,\smallskipのサイズは,その後 \baselineskip

を変更しても,変わりません。

換言すると,もしもスキップ量の「情報屋さん」をこのように変更したときの\baselineskip

のサイズが18ptだったとしたら,\bigskipamountは18pt,\medskipamountは9pt,

\smallskipamountは 4.5ptということになります。\baselineskipを後から変更

したとしても,これらのスキップ量の「情報屋さん」は同じサイズのママに止まり

ます。

9.4 特定の目的のためのスキップマクロを作る

文書全体に亘って大中小のスキップをバラ撒いてしてしまうと,どのサイズのス

キップをどの目的のために使っていたのかを,すぐに忘れてしまいます。これは,ス

ペーシングの一貫性が崩れることにつながります。そこで,どのサイズのスキップを

どういう特定の場面で使うのかについては,マクロに覚えておいてもらいましょう。

たとえ,様々な場面のどこでも同じサイズのスキップ量を使うつもりであったとして

も,そうしといたほうがいいです:

1 \def\endofexercise{\bigskip}

2 \def\sceneshift{\bigskip}

こうすると:

1 Exercise 9.1:

2 How many angels can dance on the head of a pin?

3 \endofexercise

4

5 This theological question has no simple answer \dots

Exercise 9.1: How many angels can dance on the headof a pin?

This theological question has no simple answer . . .

特定の目的のためのスキップマクロをいろいろと用意しておけば,テキスト全体を

通して,一貫性を保って大中小のスキップを使うことが容易になります。また,こう

しておけば後々,文書中の他のスキップに影響を与えることなしに,“\sceneshift”や “\endofexercise”のサイズを変更するのも,簡単になります。

9.5 水平方向のスキップ

TEXにはまた,便利なサイズの 5つの標準的な水平方向のスキップもあります。そのうちの 3つはそこで行分割可能で,2つは行分割不可です:

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 49: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

9.6 新たなスキップマクロを書く 41

  

行分割可能 行分割不可

\enskip 0.5em \enspace 0.5em

\quad 1em \thinspace 0.16667em

\qquad 2em

これら 5つは皆,“em”を単位にしているので,その実際の幅はフォントによって \enskip

\quad

\qquad

\enspace

\thinspace

異なります(コンピュータ・モダン・10ポイントの TEXの標準的なフォントセットの emの

サイズについては,8.1節で示しました)。“\quad”と “\qquad”は,表の中で列を区切るホワイトスペースとして便利です(これについては第 20章で見ます)。

これらのマクロの定義に含まれているディメンションは,上のように決まってい

るので,変更するための対応するスキップ量の「情報屋さん」はありません。実のと

ころ,スキップ量の「情報屋さん」があるのは,\bigskip,\medskip,\smallskip

についてのみです。

9.6 新たなスキップマクロを書く

大中小の出来合いのスキップのディメンションを変更するのではなくて,自分専

用のスキップを作ることも出来ます。標準セットだけでなく,“\tinyskip” とか“\biggerskip”も必要かも知れません。それとも,フォントを変更してもサイズが変わらないような水平方向のスキップが一式,必要になるかも知れません。

自分専用のスキップを作るひとつの方法は,直接そのサイズを指定してしまうこと

です:

1 \def\tinyskip{\vskip 1.5 pt\relax}

2 \def\biggerskip{\vskip24pt\relax}

1 \def\bigHskip{\hskip20pt\relax}

2 \def\medHskip{\hskip 10pt\relax}

3 \def\smallHskip{\hskip 5 pt\relax}

これらの定義の最後の “\relax”というのは,「プラスまたはマイナス」マチガイに陥らないようにするためのものです(10.7節参照)。

もうひとつの方法は,大中小のスキップ量の「情報屋さん」と同じような,新たな「情 \newskip

報屋さん」を作り出すことです。まず第 1に,plain TEXのマクロである “\newskip”を使って,新たなスキップの「情報屋さん」を作ります。第 2に,この「情報屋さん」に,どれだけのディメンションを記憶してもらうかを伝えます。そして第 3に,新たなマクロを定義する際に,この新しい「情報屋さん」を使います。この 3ステップの例を挙げましょう:

1 \newskip\hugeskipamount

2 \hugeskipamount=36pt

3 \def\hugeskip{\vskip\hugeskipamount}

ここではまず,\newskipが,“\hugeskipamount”という新たな「情報屋さん」を作っています。次に,この \hugeskipamountが記憶し・返答するディメンションとして,

“36pt”が渡されています。そして最後に,“\hugeskip”が,“\vskip\hugeskipamount”と定義されています。

これでこの \hugeskipは,\bigskip等々と同じように使えます。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 50: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

42 第 9 章 新しいホワイトスペースを作る

“\newskip”は,\defに似ていて,新たなコントロールシーケンスを作り出すものです。しかし,この新たなコントロールシーケンスは,マクロではなくて,「情報屋

さん」です。

入力ファイルを処理する際にTEXは,マクロをその定義へと展開しますが,「情報屋さん」はただ,聞かれた情報を返答するだけです。この「聞いてくる人」は,TEX自身のこともありますし,他の「便利屋さん」の場合もあります。例えば,TEXは新しい段落を始める際には,“\parindent” に対して,インデントの幅をどれだけにしたらよいのかを尋ねます。また例えば,“\vskip\parindent”としたとすると,\vskipはインプットを必要とします。それで,\vskipは \parindentを突っつい

て,\parindentはそこで,聞かれた情報を返答するわけです。

9.7 反対方向にスキップする

進行方向(右へ,とか下へ)だけじゃなく,反対方向(左へ,とか上へ)にも,スキッ

プ出来ます。その場合には,\hskipや \vskipのインプットとして,負のディメン

ションを使ってください:

1 Toodle ooooooooo

2

3 \vskip -\baselineskip

4 \noindent Toodle agagag

Toodle oooooooooToodle agagag

この,反対方向へスキップするという手法は,いろいろな場面で有用なのですが,

例えば本書では,余白部分で灰色の四角の上に “LATEX Notes”という文字や「テントウムシ」の絵をタイプセットするのにも,使っています †訳註3)。

まとめとこれから

本章では,特定の長さのホワイトスペースの作り方について述べました:

 

\hskip 水平方向〔右/左へ〕のスキップ(「作業屋さん」)

\vskip 垂直方向〔下/上へ〕のスキップ(「作業屋さん」)

\bigskip 垂直方向のスキップ〔大〕(「作業屋さん」)

\medskip 垂直方向のスキップ〔中〕(「作業屋さん」)

\smallskip 垂直方向のスキップ〔小〕(「作業屋さん」)

\bigskipamount \bigskip のための「情報屋さん」

\medskipamount \medskip のための「情報屋さん」

\smallskipamount \smallskip のための「情報屋さん」

\thinspace 水平方向のスキップ (0.16667em)(「作業屋さん」)〔ママ〕\enskip 水平方向のスキップ (0.5em)(「作業屋さん」)\enspace 行分割不能な水平方向のスキップ (0.5em)(「作業屋さん」)\quad 水平方向のスキップ (1em)(「作業屋さん」)\qquad 水平方向のスキップ (2em)(「作業屋さん」)

†訳註3) 本文書では単純に,\colorbox で欄外のマークを入れてます。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 51: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

まとめとこれから 43

スキップのサイズを変更するひとつの方法としては,スキップ量の「情報屋さん」

のサイズを変えるというものがありました。もうひとつの方法は,新たなスキップ用

に「情報屋さん」を作り出して,それを使って新たなスキップマクロを書くというも

のです。また,それぞれの特定の目的用のホワイトスペースマクロを書けば,文書内

で統一的にスキップを使うことが容易にもなるのでした。

次の章では,伸縮可能なホワイトスペースの作り方と,TEXのグルーの使い方について,説明をします。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 52: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

44 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 53: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 10章 伸び縮みするスペース

TEXでは,いくらでも拡大したり縮小したりするホワイトスペースを作ることも出来ます。そうするにはTEXは「グルー」を使うのですが,これはディメンションに似た「魔法のモルタル」で,伸び縮み出来る点がディメンションとは違います。ペー

ジ上のホワイトスペースの多くは,グルーによって作られています。TEXは,ちょうどレンガ工の人が煉瓦の間にモルタルを使うみたいに,単語や段落の間にグルーを

使うのです。本章では,(くっついちゃって立ち往生することなしに!) †訳註1)グルーを

使う方法について,説明します。

10.1 グルーって何?

グルーを作るには,まずディメンションで始めて,それに伸び量を加えて,次に縮 グルー

み量を減じます。こんな感じにです:

10pt plus 3pt minus 1pt

このグルーは 10ポイントの幅なのですが,あと 3ポイント拡大するか,1ポイント縮小するかすることが出来ます。言い換えると,このグルーは,最大で 13ポイントになれ,最小で 9ポイントになれる,ということです。グルーのディメンションの部分(上掲の例では「10pt」の部分)は,「自然長」と呼ば

れます。これは,TEXがグルーを伸び縮みさせないときの,グルーのサイズです(実は,ディメンションというのは実際には,グルーが伸び縮み出来ない特別なケースなのです)。

10.2 グルーを使う

グルーは,ディメンションと同じように,インプットとして使われます。例えば,

こんな風にです:

\hskip 72pt plus 12pt minus 6pt

\vskip 12pc plus 2pc minus 0.5pc

「情報屋さん」である“\smallskipamount”,“\medskipamount”,“\bigskipamount”は実際には,ディメンションではなくて,グルーで出来ています。クヌース先生がこ

れら 3つに与えた詳細の全貌を,ここで挙げておきます:

1 \smallskipamount=3pt plus 1pt minus 1pt

2 \medskipamount=6pt plus 2pt minus 2pt

3 \bigskipamount=12pt plus 4pt minus 4pt

ページ上でのグルーの伸縮は,常に比例します。もしもページ上で\medskipが 7ポイントに伸びたとすれば,\smallskipは 3.5ポイントに,そして \bigskipは 14

†訳註1) うまく訳せない…。原著には,“(without getting stuck!)” とあるのですが…。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

45

Page 54: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

46 第 10 章 伸び縮みするスペース

ポイントに伸びます。ですので,グルーの中の “plus”と “minus”を調整することで,TEXがグルーを伸ばす仕方を,コントロールすることが出来ます。グルーである「情報屋さん」に,(plusやminusを付けずに)ディメンションだけを

提供すると,TEXは自動的に “plus 0pt minus 0pt”を付け加えます。これは,前の章で “\bigskipamount=0.5in”としたときに,TEXがしていたことです。したがって,もしも段落間のグルーや,“\smallskip”,“\medskip”,“\bigskip”

のグルーを TEXに伸ばして欲しくないのであれば,これらにグルーではなくてディメンションを指定すればよいわけです。TEXは自動的に “plus 0pt minus 0pt”を付け加えるので,そのグルーは伸び縮みしないことになります。

時には TEXは “plus 0pt”のグルーを伸ばすことがありますが,それは緊急事態の場合のみです。ページのテキスト量が,TEXがページを埋めるのに必要な量よりも少ない場合には,TEXは無理やり何かをどこかで伸ばさなければならなくなります。これが起こると,TEXは “underfull vbox”という警告を送って来ます*原註1)。

10.3 無限に伸びることが出来るグルー

グルーは,いくらでも必要な分だけ伸ばすことも出来ます。それには,ディメンfil

fill

filllションのキーワードの代わりに,無限グルーのキーワードを使います。TEXには 3つの無限グルーのキーワードがあります。それは,“fil”と “fill”と “filll”です。10.4節と 10.5節で,TEXにはどうしてひとつじゃなくて 3つの無限グルーのキーワードがあるのかについてと,どれを使うべきかの決め方について,説明をします。

グルーのキーワードの前には,ディメンションのキーワードのときと同じように,

数値を置いてください。次の 3つのグルーは皆,無限に伸びることが出来,まったく縮みません:

2in plus 1fil minus 0pt

5pc plus 1fill minus 0pt

0pt plus 1filll minus 0pt

ディメンションにプラス何々とのみ指定すると,伸びるだけのグルーを作ることが

出来ます(例:6pt plus 2pt)。同様に,ディメンションにマイナス何々とのみする

と,縮むだけのグルーが作れます(例:2in minus 0.5in)。

fil,fill,filllというキーワードによって,伸張(または縮小)の程度を変える

ことが出来ます。無限グルーに異なる 3つの度合いがある理由については,続く数節で説明をします。本章の残りの部分では,無限に伸びるグルーの使い方について,

いくつか説明することにします。

10.4 グルーで埋める

無限に伸びるグルーを使えば,特定の部分について,その大きさが分からない場

合であっても,そこをホワイトスペースで埋めるということが可能になります。例

えば,ページの最終行が “\section{heading}”だったとしたら,この見出しを次のページに送りたいと思うでしょう。TEXが普通に新しいページを始める前に新たなページを開始するには,ページの残りをグルーで埋めて,“\eject”します。\eject\eject

*原註1) “vbox”というのは「垂直ボックス」の意味です。第 28章で,TEXのボックスについて説明をし,第 33章で,TEXがその仕事をするのにボックスをどのように使うのかについて示します。第 29,32 章では,“underfull vbox” の対処法をいくつか説明します。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 55: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

10.4 グルーで埋める 47

というのは plain TEXのマクロで,強制的に改ページをするものです。

1 \dots\ counting my roosters before they hatch.

2

3 \vskip 0pt plus 1fill

4 \eject

この例では,\vskipが一定量のホワイトスペースを作るわけですが,plus 1fillが

それを無限に伸張可能にするのです。TEXは \ejectが改ページを実行するページの

最下部にまで,グルーを引き伸ばします(\sectionは第 17章で定義するマクロです)。

グルーはしばしばこんな風な使われ方をするので,TEXには 4種類の “fil”関連の \hfil

\hfill

\vfil

\vfill

プリミティブがあります:

\hfil “\hskip 0pt plus 1fil”と同義\hfill “\hskip 0pt plus 1fill”と同義

\vfil “\vskip 0pt plus 1fil”と同義\vfill “\vskip 0pt plus 1fill”と同義

次の例では,段落の 1行目に短い行をタイプセットするのに\hfilを使っています:

1 {\bf Snoopy’s Revenge:}\hfil\break

2 On a dark and stormy nightl Snoopy tells the tale

3 of a faithful beagle who \dots

Snoopy’s Revenge:On a dark and stormy nightl Snoopy tells the tale of afaithful beagle who . . .

\hfilがグルーを付け加え,\breakが強制的に改行をするのですが,この “\break”が,グルーを右余白にまでずーっと引っ張ります。

改行したり改ページをしたりしたいということはよくあるでしょうから,この 2つの作業のためのマクロを書くのは,意味のあることです:

1 \def\newpage{\vfill\eject}

2 \def\eol{\hfil\break}

“\eol”というのは私が作ったもので,“end of l ine”の略です。このマクロの名前を,別のお好きなものに変えても構いませんが,“\endline”とか “\filbreak”とかとはしないでください。TEXは既にこれらの名前を 2つとも,別の目的のために使っていますので。

これら 2つのマクロを使えば,改ページしたいときには “\newpage”とタイプすればよくて,改行したいときには “\eol”とタイプすれば済みます。

LATEXには既に,“\newpage”マクロがあります. LATEX2.09Notes

LATEXでは,\eolではなくて,“\newline”,“\\”,“\linebreak”マクロを使ってください.\newlineは \eolとまったく同じ働きをします.LATEXは “\\”の定義を環境ごとにいろいろと変えていて,それぞれに正しく改行マクロとして動作するようになっています.

LATEXの \linebreakマクロは TEXの \breakに似た動作をしますが,\linebreakのほうはオプション引数を取れる点が異なります.\linebreak[0]は,TEXがそこで改行することを可能にしますが,しかし改行を,強制も抑制もしません.\linebreak[1],\linebreak[2],\linebreak[3]は,この順番で改行の度合いが高くなり,そして \linebreak[4]だと強制的に改行します.

\newline,\\,\linebreakについては,ランポートさんの本に記述があります.

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 56: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

48 第 10 章 伸び縮みするスペース

10.5 どのグルーを使えばいいの?

どのグルーを使うべきなのかは,どうやって決めたらよいのでしょうか。特定の

量を超えてグルーに伸びてほしくないのであれば,クヌース先生がスキップ量の「情

報屋さん」を定義したときのように,有限のグルーを使いましょう(グルーが伸張可

能な量よりもテキストを引っ張るように,TEXが強いられた場合には,TEXは見つけ得るす

べてのグルーを引き伸ばした上で,ディスプレイとログファイルに “underfull hbox”という

警告を送ってきます)。

無限のグルーが必要な場合には,その作業に必要な一番伸張度の低いものを使いま

しょう。ひとつ上の伸張度のグルーは,その下のグルーよりも無限に伸びます。有

限のグルーの伸張度が一番低く,“filll”のグルーの伸張度が一番高いです。一般的に言って,より伸張度の高いグルーが必要かどうかが分からない場合には,まず “fil”のグルーから始めましょう。例えば,次は私が子どもの頃の早口言葉です:

1 Rubber\hfil baby\hfil buggy\hfil bumpers!\break

Rubber baby buggy bumpers!

TEXは,改行(\break)をする右余白のところまで,“bumpers!”を引っ張ります。これで,それぞれの \hfilに含まれるグルーは同じ量だけ引き伸ばされるので,4つの単語は行全体に均等に配置されます。

伸張度の違うグルー 2つを混ぜると,結果は変わります:

1 Peter\hfil Piper\hfill picked\hfil a\hfil peck\break

PeterPiper pickedapeck

\hfilのグルーが消えてしまったように見えますが,それは,これら一連の “fil”に含まれているグルーは,TEX が引っ張るまではその幅が 0 だからです。\hfill

は,\hfilよりも伸びる無限グルーを使っているので,TEXはそのすべての伸張度を “Piper”と “picked”の間に挿入するのです。〔10.4節で作った〕“\newpage”マクロは \vfillを使っていますが,それは,当該

ページ上でこのマクロよりも前に filのグルーが使われているかも知れないからです。\vfillとすれば確実に,すべての伸張度をページの下部に入れることが出来ます。

“\eol”マクロのほうについてはしかし,他の filのグルーが同一行の中に含まれているようなことは非常に稀です。単語間のグルーは有限のグルーなので,それで,行末

の後ろを埋めるには,\hfilで十分なわけです。

クヌース先生は,\hfilllとか \vfilllとかいうコントロールシーケンスは作りま

せんでしたが,それは,こんなに強力なグルーが必要となるような状況にユーザーが

陥るのは避けるようにしたいと考えていたからです。でも,もしも fillのグルーを上回るようなグルーが本当に必要だというのでしたら,ユーザーが自分で filllのグルーを作ることは出来ます。次の “\hfilll”と “\vfilll”マクロは,\hfil,\hfill,

\vfil,\vfillとまったく同じように使うことが出来ます:

1 \def\hfilll{\hskip 0pt plus 1filll minus 0pt}

2 \def\vfilll{\vskip 0pt plus 1filll minus 0pt}

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 57: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

10.6 縮むグルー 49

fillグルーを使うのは filを上回るグルーが必要なときにだけ,と決めておくのであれば,filllグルーに頼る必要はほとんどないでしょう。

グルーが消えちゃった、というマチガイ

 グルーが消えてしまったように見えるときには,レベルの違う filのグルーを混ぜて使ってないかをチェックしてください。ひとつでも上のレベルの filのグルーは,下のレベルの filのグルーを打ち負かしてしまいます。 \hfil,\hfill,\vfil,\vfillに含まれているグルーの自然長は 0ポイントですので,これらのグルーを引っ張ってくれるものが何もなければ,グルーは消

えたように見えます。グルーを引っ張る「作業屋さん」は,\breakや \eject,

それに第 28章に出てくるボックスです。

10.6 縮むグルー

10.2節をもう一度見ていただくと,グルーは縮むことも出来るのが分かると思い

ます。とりわけ,\bigskip,\medskip,\smallskipはそれぞれ,自然長の 1/3にま

で縮むことが出来ます。これらのスキップの縮小度は有限ですが,それはクヌース先

生が “minus”の量として,ディメンションのキーワードを使ったからです。つまり,\bigskipamountでは “minus 4pt”,\medskipamountには “minus 2pt”で,そして \smallskipamountでは “minus 1pt”となっています。縮むグルーを使えば,TEXは,テキストが \vsizeに収まるようにページ上のグ

ルーを縮めることが出来ます。しかし,段落内部や段落間に,無限に縮むことの出来

るグルーを使ったとしたら,TEXは文句を言います。もしも 0ポイントにまで縮むことが出来るグルーが必要な場合には,グルーの自然長と縮小度の両方に,同じディ

メンションを使ってください。例えば,“20pt minus 20pt”とすれば,0ポイントまで縮むことが可能になります。

特別の効果を生じさせるためにボックスの中で使うことが出来る,無限に縮むこと

が可能なグルーが,実は TEXにはあります。“\hss”や “\vss”というプリミティブ \hss

\vssに含まれるグルーは,ゼロよりも縮むことが出来るので,モノを前後にオーバーラッ

プさせることが出来ます。この特別なグルーについては,29.4節,32.6節で説明し,

その使い方も示します。

10.7 フギャー!

“plus”と “minus”はどちらも「キーワード」なので,TEXは,グルーを見つけることを期待している場所では,これらを特別の方法で取扱います。このせいで,めっ

たには起きない「plusまたはminus」マチガイのきっかけが生じます。

不用意に plusまたは minusと書いてしまう、というマチガイ

 テキストの中で,TEXがグルーを見つけることを期待している場所に,“plus”とか “minus”という単語が出てくると,TEXはこれらの語をキーワードとして扱ってしまい,その次には数値かディメンションか,それとも無限グルーのキー

ワードが続くことを,期待してしまいます。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 58: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

50 第 10 章 伸び縮みするスペース

テキストが不適切にグルーに変換されてしまわないようにするためには,“plus”や“minus” がグルーを生じさせるような場所では “\relax” とタイプしてください。\relax

\relaxはプリミティブで,何もしないことを伝えるものです。次の例では,TEXがplusをキーワードとして解釈するのを,\relaxが阻止しています:

1 Wrong: splish \hskip 1em

2 plus splash means raindrops.

3

4 Right: squish \hskip 1em\relax

5 plus squash means dead bugs!

Wrong: splish lash means raindrops.Right: squish plus squash means dead bugs!

この例の “wrong” の部分では,plus がプリントアウトに出て来てません。また,

“splash”という語の “sp”も消えてしまっています。TEXは,\hskipのインプット

としてグルーが見つかることを期待するので,そこに数値でなくて “s”が見つかると文句を言い,更にディメンションのキーワードや無限グルーのキーワードではなくて

“p”が見つかるので,また文句を言います。このときのエラーメッセージは,数値がなくって,長さ単位も正しくない,というものです。

使用する際に “plus” とか “minus” という語が後ろに続くかも知れないマクロであって,スキップを用いるようなマクロを定義する場合にはいつでも,この\relax

を使う戦略をとってください。例えば,クヌース先生は “\enskip”を次のように定義しています:

1 \def\enskip{\hskip.5em\relax}

こうしておけば,仮に “\enskip plus”とタイプしたとしても,「plusまたはminus」マチガイに陥らずに済みます。

TEXがディメンションを期待している場所でグルーを指定しまうと,また別のマチガイが起きます。この場合,TEX はグルーが見つかることは期待してないので,“plus”や “minus”を普通のテキストとして扱ってしまいます。

グルーがタイプセットされちゃった、というマチガイ

 グルーがテキストとしてタイプセットされたとしたら,次の 2つのうちのどちらかが起きています。ディメンションである「情報屋さん」にグルーを提供して

しまったか,それとも,グルーをタイプしたのにそれをどうするべきかを指示し

ていないか,です。

1 Additionally speaking, the sum of 2 and 2 is

2 generally held to be 4.

3

4 \parindent=1in plus 5pt

5

6 But in the Restaurant at the End of the Universe,

7 it is whatever you can get away with.

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 59: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

10.8 どの「情報屋さん」が、グルーの「情報屋さん」なわけ? 51

Additionally speaking, the sum of 2 and 2 is generallyheld to be 4.

plus 5ptBut in the Restaurant at the End of

the Universe, it is whatever you can get away with.

10.8 どの「情報屋さん」が、グルーの「情報屋さん」なわけ?

ラッキーなことに,ディメンションの「情報屋さん」とグルーの「情報屋さん」と

を見分けるのは,とても簡単です。グルーの「情報屋さん」は皆,その名前に “skip”という単語が含まれているからです。ディメンションの「情報屋さん」の名前には,2つの例外を除いて,“skip”は含まれません。その 2つというのは “\lineskiplimit”と “\normallineskiplimit”なのですが,これについては 33.1節で説明をします。

新しい「情報屋さん」を作るときには,これと同じ命名区分に倣うようにしたほう

がいいかも知れませんね。“\newskip”は,グルーの「情報屋さん」を新たに作り出します。ディメンションの「情報屋さん」を作るには,\newskipではなくて,plain

TEXのマクロの “\newdimen”を使ってください。例えば,こんな感じにです: \newdimen

1 \newdimen\normalparindent

2 \normalparindent=20pt

3 \parindent=\normalparindent

\newskipは,新たに作ったスキップの「情報屋さん」に,自動的に “0pt plus 0pt

minus 0pt” のグルーを提供します。\newdimenのほうは,新たに作ったディメン

ションの「情報屋さん」に,“0pt”を提供します。付録Bには,TEXのディメンションの「情報屋さん」と,グルーの「情報屋さん」,それにディメンションとグルーを

扱う便利屋さんをすべて,挙げておきました。

10.9 アンダーフルなボックス

plusが許すよりもずっと多い量のグルーを引っ張るようにTEXが強いられた場合には,TEXは “underfull”という警告をディスプレイとログファイルに送って来ます。TEXが改行するつもりだったところより前で \breakすると時々,“underfull hbox”というメッセージを目にすることがあるのは,このためです。

“undefull hbox”の警告は “overfull”の警告とよく似ていて,こんな感じです:

Underfull \hbox (badness 10000) detected at line 275

\tenrm some gaunt text in the underfull line.

評価値(badness number)は,TEXがグルーをどれだけ余計に伸ばさなければならなかったのかを示すものです。“10000”は評価値としてあり得る最大の値なので,当該行はひどく見苦しいことになっているはずです。TEXは入力ファイルのどこが問題なのかを示して(上の例では 275行目),また,underfull hboxに入れたテキストを表示します(上の例だと “\tenrm some gaunt text ...”)。

普通,underfull hboxの中の改行をし直すには,その段落の \toleranceをもっと

大きくするという方法があります。underfull hboxのより美しい対処法は,段落を書き直すことです。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 60: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

52 第 10 章 伸び縮みするスペース

“underfull vbox”となることもありますが,それは特に,ページを埋めるには少なすぎるテキストしかないようなページで \ejectしたりした場合です。TEXはテキストの最後のブロックをページ最下部まで引っ張って,また,少しでもグルーがある

場所ならどこにでも,余分なホワイトスペースを突っ込みます。ページ上の他のグ

ルーはもちろんのこと,\parskipのグルーも余計に引っ張ります。すると,テキス

トとホワイトスペースとがページ上でスカスカの縞模様になり,とても変な見た目と

なってしまいます(“underfull vbox”にはどうしたらよいのかについては,第 32章で説明し

ます)。

まとめとこれから

本章では,立ち往生することなく TEXのグルーを扱う方法について説明しました(あちこちで,ちょっとは辛抱しなくちゃいけなかったかも知れないけど)。グルーは,ディ

メンションと似ていて,でも伸び縮みが出来るものです(逆に,ディメンションは,伸

び縮み出来ないグルーです)。

TEXのホワイトスペースの多くはグルーであって,また TEXの “skip”は皆,グルーを含みます。グルーの「情報屋さん」にディメンションを提供すると,TEXは自動的に “plus 0pt minus 0pt” を付け加えます。ディメンションの「情報屋さん」にグルーを提供すると,グルーがプリントアウトに本文として表われてしまいま

す。“\hskip”や “\vskip”はどちらも,実際はグルーをインプットとして取ります。“\hfil”,“\hfill”,“\vfil”,“\vfill”という 4つの一連の “fil”は,テキストにグルーを挿入します。

“\newskip”は新たなグルーの「情報屋さん」を作り,その初期状態は “0pt plus

0pt minus 0pt”です。“\newdimen”は,新たなディメンションの「情報屋さん」を作り出して,その初期状態は “0pt”です。本章では,グルーを含むマクロを新しくいくつか作りました。“\eol”と “\newpage”

とは,短い行を作り,新しいページを始めます。fillレベルのグルーにさえ打ち勝つ“\hfilll”や “\vfilll”は,緊急事態のときにだけ使ってください。次の章では,TEXが入力ファイルの文字を,単語・スペース・行・段落・ページへと変換する仕方について,説明をします。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 61: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 11章 TEXのページの組み立て方〔抄〕

TEXが入力ファイルを処理しているときには何をしてるのかとか,ページの諸要素を TEXがひとつにまとめるまとめ方とかを理解しておくのは,役に立ちます。ページ上のものはほとんどすべて,ボックスか,またはグルーです。前章では,グルーと

は何かについてや,その使い方について,説明をしました。本章では,TEXが段落やページを作るのに,ボックスやグルーをどう使うのかについて,一般的に示します。

このプロセスの詳細については,第 33章で説明します。

11.1 What Are TEX’s Boxes

11.2 Making Paragraphs: Horizontal Mode

11.3 Making Pages: Vertical Mode

11.4 The Structure of a Page

11.5 More about Boxes and the Contents of the Text Vbox

まとめとこれから

本章では,ページを作るのに TEXがどのようにボックスを使うのかについて,示しました。TEXは,ひとつひとつの文字を,特定の高さ・深さ・幅を持ったボックスであるとみなします。段落を作る際には,TEXは隣り合う文字同士から単語を作り,そしてその単語間にグルーを挿入します。こうして,TEXは入力ファイル中の段落を,単語とグルーのリストへと変換します。

段落の末尾に行き着くと,TEXはどこで行を分割するべきかを決定します。それぞれの行は hboxに入れられ,それから,行末の文字が右余白に接するように,単語間のグルーが伸縮されます(したがって,行末は揃います)。

TEXは,hboxのベースライン同士の間隔が \baselineskip分離れるように,hboxと hboxとの間にグルーを挿入します。ページを埋めるのに十分な数以上の行を積み重ねた場合には,TEXはどこでページを分割すべきかを決めます。TEXのアウトプットルーチンは,テキストからなるこれらの hboxを,それを取り囲む vboxの中へと入れ,また,そのページに属するフロートもそこに収めます。アウトプットルーチン

はまた,ヘッダの hboxとフッタの hboxも生成し,次いでヘッダ,フッタ,それから本文の vboxを,これら全部を取り囲むひとつの vboxの中へと封じ込め,そして最後に,こうして完成したページを,“.dvi”ファイルへとシップアウトします。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

53

Page 62: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

54 第 11 章 TEX のページの組み立て方〔抄〕

次の第 III部においては,様々な書式のためのマクロの書き方について説明をしま

しょう:

▪ 第 12章から第 16章では,段落形状の変え方について説明します。つまり,引

用文や,左揃え,中央ぞろえ,箇条書き,用語集,プログラムリスト,といっ

たものです。

▪ 第 17章から第 19章では,本文の特別な部分の扱い方について説明します。つ

まり,見出しや,ヘッダやフッタ,それに脚註についてです。

▪ 第 20章から第 22章では,表の作り方,列の上に見出しを書く方法,表に罫線

を引く方法について示します。

▪ 第 23章では,表や図をフロートにして,他のページや,当該ページまたは次

のページに配置する方法について,説明をします。

▪ 第 24章から第 26章は,数式モードとディスプレイ数式モードの使い方につい

て扱っています。

▪ 第 27章では,複数の文字サイズで数式モードを用いる必要がある場合に,正

しいフォントを使う方法について,説明します。

第 12章では,以上のような作業をするのに必要となる基本的なマクロ構造 3種について説明していますので,まずはこちらをお読みになることをお勧めします。そ

こではいくつかの用語と概念を導入していて,それは本書の残りで使いますので,第

12章を飛ばしてしまうと,その後の章で困惑されてしまうかも知れません。

本書の第 III部の第 13章から第 23章は,それぞれ独立な章にしてあります。です

ので,第 12章を読まれた後であれば,次にはどの章に進まれても構いません。この,

どこ読んでも構いませんアプローチの例外は,第 24章から第 26章で,そこでは数

式モードの使い方について説明をしています。この 3つの章については,順を追って読んでください。第 27章では,本文だけでなく見出しや脚註でも数式モードをが使

えるようにするための,TEXのフォントファミリの使い方について,説明をします。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 63: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 III部 Down We Go!

Page 64: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i
Page 65: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 12章 基本的なマクロ構造 3タイプ

――「引用文」マクロを例として

時折,段落の形状を変える必要が出てくることがあります。例えば,引用文の場合

はしばしば,行幅を通常の幅より狭くして,その上下にアキを作り,そして普通は

ダブルスペースにはしません。番号や黒丸付きの箇条書きは,大抵インデントしま

すし,また,項目と項目との間や,箇条書きの上下には,アキを入れるかも知れませ

ん。プログラムリストの場合には両端揃えにはしませんし,結婚式の案内状だったら

センタリングするでしょう。詩の場合には,それはそれでまた,特有の形状が必要に

なります。

特定の目的に沿った段落を形作るのに一番良い方法は,「サンドイッチ †訳註1)」型

の構造を使うことです。つまり,パン(マクロ)を一枚,そしてローストビーフ(テ

キスト)を挟んで,最後にまたパン(マクロ)を一枚,てな感じに。他方,本書でこれ

まで見てきたマクロの多くは,そのクオリティから言うと,「カニ蒲鉾 †訳註2)」レベ

ルです。カニをボイルする代わりに,「カニかま」を一本皿に載せました,みたいな。

そして,一つないし複数の「インプット」を取れるマクロ(8.7節の “\linespacing”

みたいなの)は,「おにぎり †訳註3)」型の構造です。TEXはこのおにぎり型のマクロに出会うと,インプット〔おにぎりの「具」〕を,マクロの定義の中に用意してあるス

ロットへと投入するわけです。(これらの食べ物とのアナロジーはもちろん,TEXの専門

用語ではありません.これらはまたしても,私の過剰な想像力の産物であります….)

本章では,これら 3つのマクロの構造を説明するのに,「引用文」マクロを使います。以下で作る引用文マクロは皆,それぞれ異なったやり方を用いながら,同じレイ

アウトを実現しています。また,次章以降の数章では,引用文以外の様々な段落を形

作るのに必要なナットやボルトに当たるコントロールシーケンスについて,いろいろ

と見ていくことにします。

LATEXでは,特別な段落を形作るには「環境」を使っています.したがって,引用文のため LATEX2.09Notes

には,ランポートさんの本に書いてある,“quote”環境か “quotation”環境を使います.本章や次章以降の章で取り上げているテクニックを使った新たな環境を作る場合には,LATEX

のマクロ “\newenvironment”を使ってください.

12.1 カニ蒲鉾型構造

即席型の「カニかま構造」は,シンプルかつ直截的なものです。まず,引用文の上下に

アキを入れる “\displayskip”を作ります。次に,“\quotation”では,“\narrower” \narrower

(これは plain TEXのマクロで,\parindent幅のアキを行の両側に入れるものです)を使っ

て,余白幅を変更します。この \quotationは更に,段落を “\noindent”で始めるようにします:

†訳註1) これは原著でも “sandwich”。†訳註2) 原著では “meat-and-potatoes”。(料理とも言えないくらい)ものすごくシンプルな料理,という意

味かな。いい訳語が思いつかない…。†訳註3) 原著では “jelly-doughnut”。ジャム入りの揚げパンみたいなものらしいです。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

57

Page 66: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

58 第 12 章 基本的なマクロ構造 3 タイプ

1 \def\displayskip{\bigskip}

2 \def\quotation{\narrower\noindent}

出典表示の部分では,前行を終了させるために \eol(10.4節)を使い,また,戯曲

名のフォントを変更するのには \em(6.4節)を使います。

行幅変更を引用文の部分に止めるため,全体をグループの中に入れるようにします:

1 The essence of my life was captured by Oscar

2 Wild a century ago:

3

4 {\displayskip\quotation

5 I can resist everything except temptation.\eol

6 ---{\em Lady Windemere’s Fan}, 1892.

7 \displayskip}

8

9 \noindent With these simple words \dots

The essence of my life was captured by Oscar Wild a century ago:

I can resist everything except temptation.—Lady Windemere’s Fan, 1892.

With these simple words . . .

ディスプレイされるものの上下にはそれぞれひとつずつスキップを入れると良い場合

が,しばしばあります。例えば,TEXはディスプレイ数式の上に“\abovedisplayskip”を,下に “\belowdisplayskip”を挿入します。尤もこの「情報屋さん」の値は両方とも,12pt plus3pt minus9ptなのですが(\abovedisplayskipと \belowdisplaydkip

については 24.3節で扱います)。

スキップを 2つ用意しておくと,他方に影響を及ぼすことなく一方のサイズを変更することが容易になります。また,ディスプレイされるものの下に挿入するアキを

上に挿入するアキより大きくすると,上下にセンタリングされたように見えるので,

デザイナーはよく好んでこのような形にします。しかし,簡単のために,本章及び以

降の章のサンプルでは,同じアキ量の同じスキップしか使っていません。

12.2 おにぎり型構造

いま作った “\quotation”マクロは,確かにその定義の中身をそのまま入力するよりは短くなってはいますが,グループ化するためのブレスとか,2つの \displayskip

と \eol,それにエムダッシュ(---)も入力しなくて済むなら,もっと嬉しいですよ

ね。出来ます。そのために必要なのが,「おにぎり型構造」です。

次に挙げる “\quotethis”マクロは,2つの「インプット〔具〕」を取ります。“#1”が引用文そのもので,“#2”が出典名に当たります。出典は書籍や戯曲とは限らず,雑誌タイトルの場合もあるので,この\quotethisの定義にはフォント変更コマンドは

含めないことにします:

1 \def\quotethis#1#2{{\displayskip\narrower

2 \noindent #1\eol---#2\displayskip}}

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 67: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

12.2 おにぎり型構造 59

1 \dots\ Lewis Carroll’s characters are as vivid

2 and true to life as our next-door neigthbors:

3

4 \quotethis{‘‘If everybody minded their own

5 business,’’ the Duchess said with a hoarse growl,

6 ‘‘the world go round a deal faster than it

7 does.’’}{{\em Alice’s Adventures in Wonderland},

8 1865.}

9

10 \noindent

11 With these few words, the Duchess spring to life.

. . . Lewis Carroll’s characters are as vivid and true to life as ournext-door neigthbors:

“If everybody minded their own business,” the Duchesssaid with a hoarse growl, “the world go round a deal fasterthan it does.”—Alice’s Adventures in Wonderland, 1865.

With these few words, the Duchess spring to life.

マクロ \quotethisの定義は,グループを始めるための開きブレスで始まり,グルー

プを閉じるための閉じブレスで終わります。TEXは,\quotethisの定義の中で,#1の前にあるスペースを無視します。このスペースは,コントロールワード \noindent

の終わりを示すのに使い尽くされてしまうのです。#は英文字ではないので,このス

ペースは本当は要りません。でも,入れておくと定義がずっと読みやすくなります。

この \quotethisを使う際には,そのインプットはブレスで囲まなければなりませ

ん。ブレスは TEXに,インプットがどこから始まり,どこで終わるのかを教えるからです。

長いインプットと “Runaway Arguments”について

短い引用文の場合だと,この \quotethisマクロはうまく働いてくれるのですが,

もしもインプットが複数の段落を含むようなときには,TEXはエラーメッセージを発します。インプットを “{”で始めて,そして “}”で終える前に新たな段落を開始してしまうと,TEXは次のような感じの文句を言うでしょう:

Runaway argument?

severe penalties for early withdrawal.

! Paragraph ended before \quotethis was complete.

<to be read again>

\par

l.69

ここで “argument”というのは「引数」という意味です。プログラマの人たちは,「インプット」ではなくて,この「引数」という専門用語を使います。また,“\par”は,「現在の段落を終了せよ」の意味です。TEXは入力ファイルを処理する際に,空行を \parに変換しています。

したがって,TEXのこの文句を翻訳するなら,「\quotethisというマクロのイン

プットの終端を見つける前に,空行を見つけちゃったんですけど」ということです。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 68: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

60 第 12 章 基本的なマクロ構造 3 タイプ

TEXはいま,入力ファイル中の “severe penalties for early withdrawal.”という文を処理し終えて,そして 69行目に達したところで問題を発見した,というわけです。(<to be read again>というメッセージについては.第 35章で扱います.)

多くの場合,この文句は有益なのですが,それは,このメッセージによって問題箇

所が知らされるからです。でも,2段落からなる引用文がユーザーが意図したものであるならば,ちょっと「イラッ」と来てしまうかも知れません。クヌース先生はちゃ

んとこれに手当てしてくれています。マクロのインプットが複数の段落を含む可能

性がある場合には常に,“\long”というプリミティブを定義の前に置くようにしてく\long

ださい。こんな感じです:

1 \long\def\longquote#1{{\displayskip

2 \narrower\noindent#1\displayskip}}

\longは,当該マクロのインプットは複数の段落を含むことが許されてるんだよ,

というのを TEXに伝えてくれます。これでこの “\longquote”マクロは,引用文全体をひとつのインプットとして取ることが出来るようになります。

ところで,インプットを扱う TEXの能力には限界があって,また,長いインプットは TEXの処理速度を低下させます。すごい長文のインプットを扱うマクロが必要な場合には,おにぎり型構造ではなく,サンドイッチ型構造を使ってください。サン

ドイッチ型構造については,次の節で説明をします。

LATEXのコマンド “\newcommand”には “\long”が組み込まれているので,このコマンドをLATEX2.09Notes

使って作ったマクロのインプットは,複数の段落を含むことが出来ます.

12.3 サンドイッチ型構造

マクロにグループの開始・終了をさせるもうひとつの方法は,上下から挟み込む\begingroup

\endgroup 「サンドイッチ型構造」を使うことです。TEXのプリミティブである “\begingroup”と “\endgroup”とが,まさしくその名前が示唆していることをしてくれます。つまり,グループの開け閉めです。例えば,もしも指の運動をしたいのなら(または,グ

ループをもっとハッキリさせたいのなら),フォントを変更するのに次のようにタイプし

ても構いません:

\begingroup\it This is typeset in italics.\endgroup

\begingroupと \endgroupは,ブレス(“{”と ‘}‘”)に対して大きなアドバンテー

ジを有しています。それは,これらが別々のマクロの中で使えるという点です。「開

きブレス」を含んでいるマクロは,それに対応する「閉じブレス」も一緒に含まな

ければならないのですが,\begingroupと \endgroupの場合には,あるマクロの中

に \begingroupを入れて,それと対応する \endgroupは別のマクロの中に入れる,

ということが可能なのです:

1 \def\beginQuote{\begingroup\displayskip

2 \narrower\noindent}

3 \def\endQuote{\displayskip\endgroup}

使ってみましょう:

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 69: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

12.3 サンドイッチ型構造 61

1 Mark Twain had a keen eye and a sharp wit.

2

3 \beginQuote

4 Soap and education are not as sudden as a

5 massacre, but they are more deadly in the long

6 run.\eol

7 ---‘‘The Facts Concerning the Recent

8 Resignation,’’ 1867.

9 \endQuote

10

11 \noindent

12 They muddy the water as well as the mind.

Mark Twain had a keen eye and a sharp wit.

Soap and education are not as sudden as a massacre, butthey are more deadly in the long run.—“The Facts Concerning the Recent Resignation,” 1867.

They muddy the water as well as the mind.

このマクロのペアでは,“\beginQuote”がグループを開始し,“\endQuote”がグループを閉じています。

サンドイッチ型のマクロは,お望みならば,インプットを取ることも出来ます。こ

の場合のとてもシンプルな例としては,次のように,\endQuoteにインプットをひ

とつ ――ここでは「出典表示」―― を与えることが考えられます:

1 \def\beginReferencedQuote{\begingroup

2 \displayskip \narrower \noindent}

3 \def\endReferencedQuote#1{\eol---#1

4 \displayskip\endgroup}

この「(オマケの)具入りサンドイッチ」の使用例です:

1 Nay, Shakespeare knew well whereof he spoke:

2

3 \beginReferencedQuote

4 The devil can cite Scripture for his purpose.

5 \endReferencedQuote{{\em The Merchant of Venice,

6 Act I, Scene iii}}

7

8 Being a mischievous person, so can I.

Nay, Shakespeare knew well whereof he spoke:

The devil can cite Scripture for his purpose.—The Merchant of Venice, Act I, Scene iii

Being a mischievous person, so can I.

更には,\beginQuoteが出典の情報をインプットとして取れるにように定義して,

その情報に \endQuoteからアクセスする,なんてことも出来ちゃいます。その方法

については,23.5節の “figure”マクロや “figure-caption”マクロのところで説明します。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 70: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

62 第 12 章 基本的なマクロ構造 3 タイプ

LATEXの環境は皆,このサンドイッチ型構造を利用しています.LATEXは自動的に,\begin{environment}LATEX2.09Notes

で \begingroupを実行し,\end{environment}で \endgroupを実行しているのです.LATEXの場合には,新たな環境を定義するには,ランポートさんの本に書いてある\newenvironment

コマンドを使ってください.

12.4 フギャー! 段落の終わりはどこ?

人間とコンピュータとでは,「どこで段落が終わったのか」についての捉え方が,

異なっています。人間は得てして,最後の文の最後の単語に続くピリオドで段落が終

わったと考え勝ちです。これに対して,TEXにとっては,そのようなピリオドの次に空行が見つからない限り,その段落が終わったことが分からないのです。

どこで段落が終了したのかについてのこのような考え方の違いのせいで,まるで

TEXがひとつないしは複数のコントロールシーケンスを無視したかのように見える場合があります。12.1節の “\quotation”マクロの例で,“\displayskip”をブレスの外においてしまったと考えてみましょう。こんな風にです:

1 Life is a series of opportunities for making

2 mistakes.

3

4 \displayskip

5 {\quotation

6 This is one of them. This example is an error.

7 Do not copy this blooper.}

8 \displayskip

9

10 \noindent

11 If you do, it will give you grey hair. (You have

12 been warned.)

Life is a series of opportunities for making mistakes.

This is one of them. This example is an error. Do notcopy this blooper.

If you do, it will give you grey hair. (You have beenwarned.)

ここでは,閉じブレスがグループを閉じています。そしてこの閉じブレスが,段

落の終了前に,“\quotation”による段落形状の変更をストップしてしまっています(最初の例でこの問題がうまく回避されていた理由については,すぐ後で説明します)。これ

だと,引用文の行幅が,地の文の行幅と一緒です。まるでTEXが “\narrower”を無視してるみたいに見えます!

私のコマンド無視したなぁ、というマチガイ

  TEXは段落を作る際には,段落の終わりに辿り着くまで,「情報屋さん」に情報を尋ねません。ですから,まずグループを開始して,次に何か「情報屋さん」

の情報を変更して,そして TEXが段落の終わりを見つける前にグループを閉じてしまうと,TEXが持ってる情報というのは,グループを開始する前に持っていた情報と同じママになってしまうのです。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 71: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

12.5 マクロ同士の間の余分なアキを削る 63

グループの内部で段落の形状を変えるような「情報屋さん」の情報を変更した場合

には,グループを閉じる前にまず,段落を終了させなければなりません。

TEXで段落を終了する方法は,いくつかあります。ひとつには,空行を置くことです。もうひとつの方法は,“\par”というコントロールシーケンスを使うことです。 \par

「私のコマンド無視したなぁ」マチガイを修正するには,グループを閉じる前に\par

とすればよいわけです:

1 Once upon a time, I too agonized about making

2 mistakes. But no more! When Murphy asked me to

3 join his team, he said:

4

5 \displayskip

6 {\quotation

7 I don’t have time to make all the mistakes

8 myself. I need help! And like any other

9 employer, I prefer to hire the best.\par}

10

11 \displayskip\noindent

12 What a relief to be a top-notch mistake-maker

13 instead of a mere klutz!

Once upon a time, I too agonized about making mistakes. But nomore! When Murphy asked me to join his team, he said:

I don’t have time to make all the mistakes myself. I needhelp! And like any other employer, I prefer to hire thebest.

What a relief to be a top-notch mistake-maker instead of a mereklutz!

この「私のコマンド無視したなぁ」マチガイは,段落の形状に影響を与えるような

「情報屋さん」の情報を変更する際にはいつでも生じうるものです。グループを閉じ

る前には,段落を終了させるのを忘れないようにしましょう。

〔plain〕 TEXには,段落を終わらせる方法があと 2つあります。“\endgraf”と \endgraf

いうコントロールシーケンスは,\parと同じ働きをします*原註1)。また,“\vskip”も段落を終了させますが,それは,\vskipが,段落を作る水平モードを終了させて,

ページを作る垂直モードへと TEXを戻らせるからです。12.1節の “\quotation”の例では,段落の最後の “\displayskip”が,最終的には \vskipに展開されます。そ

のお蔭で,あのときには「私のコマンド無視したなぁ」マチガイに陥ることが避けら

れたわけです。

12.5 マクロ同士の間の余分なアキを削る

次章以降では,様々な段落形状用のマクロを定義します。それらは皆,本文の特

定の領域の最初と最後に,“\displayskip”分のスペースを挿入するようにしていま

*原註1) “\endgraf”は plain TEXに含まれるものですが,“\def”ではなく “\let”で作られているので,マクロではありません。\endgrafは “\par”のバックアップコピーのようなものです。段落を終わらせるものを 2 つも用意しておくなんて無駄なように思えるかも知れませんが,TEX はすべての段落の最後で「\parを実行する」ので,時には,\parを再定義して,特別な状況下では別の振る舞いをさせたいという場合があるのです。\endgraf を用意しておけば,仮に \par を再定義した場合であっても,TEX のデフォルトの段落終了方法を使うことが可能となるわけです。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 72: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

64 第 12 章 基本的なマクロ構造 3 タイプ

す。もしも,以降で定義するマクロとマクロとの間に本文が存在しなような場合,こ

れらのマクロの間には \displayskipがひとつで十分なのに,TEXは \displayskip

を 2つ挿入してしまいます。例えば,引用文の次にプログラムリストを置いたりとか,表の次に引用文を置いたりとかという場合にです:

1 \dots\ slings and arrows of outrageous fortune,

2 and by opposing, end them.

3 \endQuote

4

5 \beginCode

6 to piglatin :words

7 if empty? :words [op []]

8 op list change first :words

9 piglatin butfirst :words

10 end

11 \endCode

. . . slings and arrows of outrageous fortune, and by op-posing, end them.

to piglatin :wordsif empty? :words [op []]op list change first :words

piglatin butfirst :wordsend

(“\beginCode”と “\endCode”というマクロは,第 16章で定義するものです.)

ハムレットの台詞と piglatinゲームのプログラムとの間には,\displayskipが 2つ入ってしまっています。この余計なスペースを削るには,\bigskipに代えて,plain

TEXのマクロである “\bigbreak”を使ってください。ここでの簡単な解決法として\bigbreak

\medbreak

\smallbreakは,新たに “\displaybreak”を定義して,そして,作るマクロの中では\displayskip

の代わりにこちらを使うというものがあります:

1 \def\displaybreak{\bigbreak}

\bigbreakの場合なら,これが複数連続した場合であっても,確実に“\bigskipamount”ひとつ分だけの垂直方向のアキが入ります。ですので,入力ファイル中で,特別な段落

用のマクロが,別のマクロの中の \vskipに続くような場合にはいつでも,“\bigbreak”――とか “\medbreak”や “\smallbreak”―― を使うようにしてください。

\bigbreakの仕組み

TEXはページに \vskipを加えるときには,同時に “\lastskip”という名前のプ\lastskip

リミティブの「情報屋さん」にも,そのスキップのサイズを伝えます。TEXがページに加えるものが何か別のもの(テキストとか)のときには,\lastskipは自動的に

“0pt”になります。\bigbreakとその 2人の従兄弟は,ページ上の \lastskipと,自分のスキップ量

の「情報屋さん」とを比較して,それから次の 2つのうちのどちらか一方を実行します:

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 73: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

まとめとこれから 65

▪ もしも自分のスキップ量よりも \lastskipのほうが小さかった場合には,それ

を取り除いてから自分のスキップを加え,更に,そこでページ分割をしても構

わないことを TEXに伝えます.

▪ もしも自分のスキップ量と \lastskipが同じかそれとも \lastskipのほうが

大きかった場合には,その場所にその分のスキップを加えて,それ以上のこと

はしません.

これで,常に大きいほうのスキップだけを得ることが出来,そして,それ以上のこと

は何もされません。

新たな,改良版のサンドイッチ型引用文マクロです:

1 \def\beginQuotation{\begingroup

2 \displaybreak

3 \narower \noindent}

4 \def\endQuotation{\displaybreak\endgroup}

“\bigbreak”,“\medbreak”,“\smallbreak”はまた,TEXにその場所が改ページに適したところであるということも伝えるので,“\endQuotation” のほうにも\displaybreakを使いました。

まとめとこれから

本章では,マクロを作るための基本構造を,3種類説明しました。すなわち:

▪ 直截的な「カニ蒲鉾型」

▪ インプットを取ることが出来る「おにぎり型」

▪ 前後から挟み込むアプローチにより “\begingroup”と “\endgroup”とを使う「サンドイッチ型」

“\long”を使うと,マクロのインプットが複数の段落を含むことが可能となりますが,でも,長文を扱うのなら,サンドイッチ構造のほうが良い方法です。どうやって

段落の終わりを認識するかについての考え方の違いのせいで,「私のコマンド無視し

たなぁ」マチガイのきっかけが生じます。ですので,段落を形成する「情報屋さん」

を変更する際には,グループを閉じる前に,いつも “\par”を使って段落を終了させてください。マクロ “\bigbreak”,“\medbreak”,“\smallbreak”は,TEXが隣り合うマクロ同士の間に 2つの余分な垂直方向スペースを挿入するのを,防いでくれます。

続く数章では,特別な段落形状のための様々なコントロールシーケンスについて,

実演しましょう。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 74: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

66 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 75: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 13章 段落余白を変更する

段落の形状を変更する簡単な方法は,段落余白を変えることです。本章では,

“\raggedright”の使い方と,TEXが各行の左右にどれだけのホワイトスペースを入れるかを記憶している「情報屋さん」である “\leftskip”と “\rightskip”の変更の仕方について説明をします。

本章の説明は,以下について既にお読みになっていることを前提にしています:

▪ グループ(6.2節)

▪ マクロのサンドイッチ型構造(第 12章)

▪ \displaybreak(12.5節)

段落を左寄せ,右寄せ,中央揃えにするには,LATEXの環境の “flushleft”,“flushright”, LATEX2.09Notes

“center”を使ってください.これらについては,ランポートさんの本に記述があります.LATEXの環境は皆,ディスプレイされた段落の上下にアキを入れるので,もしも,段落の形状だけ

を変えたいというときには,環境の代わりに “\raggedright”,“\raggedleft”,“\centering”を使ってください.

13.1 行の右端を不揃いにする

TEXの初期状態では,行の両端はジャスティフィケーションされます。つまり,各行のグルーが伸縮することにより,テキストがピッタリと行の幅に収まるようになっ

ています。“justified”の逆は “ragged”ですが,その意味は,行端を不揃いにするということです(本書は ragged rightにしてあります) †訳註1)。

行の右端を不揃いにする簡単な方法は,plain TEXのマクロである “\raggedright” \raggedright

を使うことです:

1 {\raggedright

2 Raggedy Ann and Raggedy Andy are ragamuffin

3 pair. Their hair is jagged, their clothes are

4 patched. Such tatterdemalion flair!\par}

Raggedy Ann and Raggedy Andy are ragamuffin pair.Their hair is jagged, their clothes are patched. Suchtatterdemalion flair!

グループを閉じる前に “\par”が段落を終了しているので,これで「私のコマンド無視したなぁ」マチガイに陥らずに済みます。

“\raggedright”と “\narrower”を組み合わせると,行の右端が不揃いな引用文マクロが作れます:

†訳註1) Victor Eijkhoutさんが嘆いてらっしゃるように,なぜか原著は “ragged right”になっています。日本語で敢えてそれに倣う必要もないと思いますので,本文書は普通に両端揃えです。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

67

Page 76: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

68 第 13 章 段落余白を変更する

1 \def\beginRaggedQuote{\displaybreak

2 \begingroup

3 \raggedright \narrower}

4 \def\endRaggedQuote{\par\endgroup

5 \displaybreak}

“\beginRaggedQuote”と “\endRaggedQuote”の使用例です:

1 When she awoke, Briar Rose (also known as

2 Sleeping Beauty) might have yawned, stretched her

3 limbs and said,

4

5 \beginRaggedQuote

6 ‘‘Briars and thorns make a pricky bed, especially

7 when one must sleep on them for 100 years, waiting

8 for one’s prince to appear.’’

9 \endRaggedQuote

When she awoke, Briar Rose (also known as SleepingBeauty) might have yawned, stretched her limbs and said,

“Briars and thorns make a pricky bed,especially when one must sleep on them for 100years, waiting for one’s prince to appear.”

フギャー!

2つのコントロールシーケンスのどちらを先にするかというのは,大抵はあまり問題にはなりません。しかし時には,2つの順番を入れ替えると,非常に異なる結果になることがあります。

例えばここで,“\raggedright”の前に “\narrower”としてしまうと,右余白が変化しません:

1 \def\beginRaggedOops{\begingroup

2 \displaybreak \narrower \raggedright}

3 \def\endRaggedOops{\displaybreak\endgroup}

1 Charles Darwin’s words are so mild they seem

2 innocuous. It is hard to beliebe they shook our

3 world so profoundly. He begins:

4

5 \beginRaggedOops

6 When on board H.M.S. ‘Beagle,’ as naturalist, I was

7 much struck with certain facts in the distribution

8 of the organic beings inhabiting South America, and

9 in the geological relations of the present to the

10 past inhabitants of that continent \dots

11 \endRaggedOops

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 77: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

13.1 行の右端を不揃いにする 69

Charles Darwin’s words are so mild they seem innocuous. Itis hard to beliebe they shook our world so profoundly. Hebegins:

When on board H.M.S. ‘Beagle,’ as naturalist, Iwas much struck with certain facts in the distributionof the organic beings inhabiting South America, andin the geological relations of the present to the pastinhabitants of that continent . . .

これは,「馬の前に馬車を繋ぐ」マチガイです。

馬の前に馬車を繋ぐ、というマチガイ

 このマチガイが起こり得るのは,マクロの中の 2つのコントロールシーケンスが同じ「情報屋さん」に影響を及ぼす場合です。もしも一つ目のコントロール

シーケンスが無視されてるように見えるとしたら,それは,二つ目のコントロー

ルシーケンスが,一つ目の動作をキャンセルしたという可能性があります。

「馬の前に馬車を繋ぐ」マチガイに陥ったかも知れない場合には,2つのコントロールシーケンスの順番を入れ替えてみて,それで問題が解消するかどうかを見てみてく

ださい。

上掲の例では,“\narrower”と “\raggedright”はどちらも段落右端のグルーを変更するのですが,しかし,それぞれ違う方法で変更をします。

“\rightskip”というプリミティブの「情報屋さん」が,右余白側のグルーについて \rightskip

\leftskip記憶をしていて,同様に左余白側については “\leftskip”という名前のプリミティブの「情報屋さん」があります。クヌース先生による “\narrower”の定義は以下のようになっています:

1 \def\narrower{\advance\leftskip by\parindent

2 \advance\rightskip by\parindent}

ご覧のように,\narrowerは相対的なものです。\narrowerは現在の \rightskip

を受け取って,それを \parindent分増加させます。

対照的に,\raggedrightは絶対的です。\raggedrightは,\rightskipに一定

量のグルーを記憶するよう指示するのです。クヌース先生の定義の該当箇所は,次の

ようになっています:

1 \def\raggedright{\rightskip=0pt plus2em ...}

(\raggedrightの定義の残り部分では,単語間グルーを取り除いて,単語間が伸縮出来ないようにしています。単語間スペースの調整の仕方については,4.5, 16.8, A.3節で説明をしています。)

次の表は,\narrowerを \raggedrightの前に置いた場合と後ろに置いた場合と

で,“\rightskip”のグルーがどう変化するのかを示しています(\parindentは 20pt

だとします):

 \narrower \raggedright とすると 0pt plus 2em

\raggedright \narrower とすると 20pt plus 2em

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 78: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

70 第 13 章 段落余白を変更する

\narrowerが利かないとき

〔上掲の定義から明らかなように〕\parindentが “0pt”だと,\narrowerは段落の

左右の余白を変化させません。この場合には,\leftskipや \rightskipを明示的

に変更しなくてはなりません:

1 What doubts must lurk in the minds of left-handed

2 persons when the language itself casts aspersions

3 on their nature:

4

5 {\advance\leftskip by 30pt

6 \advance\rightskip by 30pt

7 \noindent

8 Gauche and sinister, what a pair! I’d rather be

9 dextrous, right, and fair.\par}

What doubts must lurk in the minds of left-handed per-sons when the language itself casts aspersions on theirnature:

Gauche and sinister, what a pair! I’drather be dextrous, right, and fair.

“\leftskip”と “\rightskip”はどちらもグルーの「情報屋さん」です。グルーの「情報屋さん」をマクロの末尾で変更する場合で,且つ plusや minusの量を指定し

ない場合には,マクロの次に plus とかminus という語が続いて「plusまたはminus」マチガイ(10.7節)に陥らないように,“\relax”を使うのを忘れないようにしてください:

1 \def\beginIndentedQuote{\displaybreak

2 \begingroup

3 \advance\leftskip by 15pt

4 \advence\rightskip by 15 pt\relax}

5 \def\endIndentedQuote{\par\endgroup

6 \displaybreak}

\rightskipグルーの変更の次に,\noindentとか,何か他のコントロールシーケ

ンスが続くのであれば,\relaxは必要ないです。

13.2 行の左端を不揃いにする

章の冒頭や末尾に引用文を置いているような本は,沢山あります。例えば,Dune†訳註2)とかTEXbookもそうですよね。TEXbookの引用文は,行の左端を不揃いにして,右余白に寄せてタイプセットされています。これを実現するような “\raggedleft”マクロを作るにはどうしたらよいのでしょうか。

先の \raggedrightマクロをコピーして,\rightskipを \leftskipに変えたとし

ても,段落の最後の行が,うまく右余白には寄りません:

†訳註2)「『デューン』は,アメリカの作家フランク・ハーバート(Frank Herbert,1920年 10月 8日–1986年 2 月 11 日)による SF 小説のシリーズ作品。日本では第 1 作の邦題『砂の惑星』というタイトルも広く知られており,一般的には『デューン/砂の惑星』と併記される。」とWikipedia に書いてありました。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 79: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

13.2 行の左端を不揃いにする 71

1 \def\oopsleft{\leftskip=0pt plus2em\relax}

2

3 {\oopsleft

4 Counterclockwise, leftward turning: since

5 cyclones in the northern hemisphere spin

6 ‘‘against the clock,’’ do these storms also skip

7 backward in time?\par}

Counterclockwise, leftward turning: since cyclones in thenorthern hemisphere spin “against the clock,” do these

storms also skip backward in time?

TEXは,各段落の最後の行を “\parfillskip”というグルーで埋めます。TEXの \parfillskip

初期状態では,\parfillskip(プリミティブの「情報屋さん」です)は “0pt plus 1fil”となっているので,このグルーは,上で\leftskipに加えた有限のグルーよりも,無

限に伸びます。この filグルーに打ち勝つには,私たちの \raggedleftマクロには fillのグルーが必要です:

1 \def\raggedleft{\leftskip=0pt plus 1fill\relax}

2

3 {\raggedleft

4 Once upon a time, there was a shaggy dog named

5 Raggs. Raggs thought he was a sheep dog, but

6 there were no sheep in his neighborhood. Raggs

7 had nothing to do, so he slept on the porch all

8 day long and was perfectly content.\par}

Once upon a time, there was a shaggy dog named Raggs.Raggs thought he was a sheep dog, but there were no sheepin his neighborhood. Raggs had nothing to do, so he slept

on the porch all day long and was perfectly content.

この \raggedleftは,段落の左端を不揃いにするようなマクロを書くときに,そ

の部品として使うことが出来ます。例えば,次のマクロ “\beginFlushRight” と“\endFlushRight” のペアは,テキストを右余白に寄せてタイプセットするのに\raggedleftを使っています:

1 \def\beginFlushRight{\begingroup

2 \displaybreak \raggedleft}

3 \def\endFlushRight{\displaybreak\endgroup}

1 \beginFlushRight

2 Many occasional poker players (myself included)

3 cannot remember if a flush beats a straight or

4 the other way around. I always have to look it

5 up, because I never can figure it out.

6 \endFlushRight

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 80: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

72 第 13 章 段落余白を変更する

Many occasional poker players (myself included)cannot remember if a flush beats a straight or the

other way around. I always have to look it up, becauseI never can figure it out.

行の左端を不揃いにする引用文マクロ

もう少し複雑な作業の例として,章の冒頭で,ページの右半分に行の左端を不揃いに

した引用文を置くことを考えてみましょう。行の長さを計って,その半分のディメン

ションを「情報屋さん」の \leftskipに加えるということも出来ますが,TEXに計算してもらったほうが,簡単ですし,より正確です。それでまず,新たに “\textwidth”という「情報屋さん」を作ることから始めましょう:

1 \newdimen\textwidth \textwidth=28pc

2 \hsize=\textwidth

3

4 \def\beginRightQuote{\begingroup\raggedleft

5 \advance\leftskip by 0.5\textwidth\relax}

6 \def\endRightQuote{\vskip 3pc \endgroup}

この “\beginRightQuote” には,注目すべき重要な点が 2 つあります。第一に,\beginRightQuoteには,その冒頭に \vskipがありません。それは,この引用文マ

クロが,その末尾が \vskip であるような「章の見出しマクロ」の次に続けて使う

ことを,計画しているからです。もしもそうではなくて,この引用文マクロを,章

を終わらせるのに使う予定であるならば,\beginRightQuoteは \vfillで始めて,

\endRightQuoteのほうはその末尾に \ejectを入れることになるでしょう。

第二に,\advance は,\leftskip に新たな情報を提供するのに,「情報屋さん」

の \textwidthを使っています。特定のディメンションではなくて “0.5\textwidth”としているので,\beginRightQuoteは,ページの幅が具体的にどれだけなのかを

気にしなくて構わないのです。\textwidthが 5インチであろうが 7インチであろうが,\beginRightQuoteは同じように動作しますから,これでこのマクロはさまざま

な文書で使うことが可能となるわけです。

引用文の幅が現在の \hsizeの幅の半分でありさえすれば良いのならば,0.5\textwidth

ではなく,“0.5\hsize”としても構いません。上掲の例で\hsizeではなく \textwidth

を使っているのは,何かボックスの中で特別の効果を生じさせるために\hsizeを変

更するかも知れないからで,それに対して,文書の \textwidthは不変だからです。

\beginRightQuoteと \endRightQuoteを使うとどうなるのか,見てみましょう:

1 \beginRightQuote

2 The birds and the bees, the ants and the fleas,

3 all live under one roof.

4 \endRightQuote

5

6 \noindent

7 Picnickers often believe that the only good bug

8 is a dead bug, but research has shown \dots

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 81: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

13.3 段落を中央揃えする 73

The birds and the bees, theants and the fleas, all live

under one roof.

Picnickers often believe that the only good bug is a deadbug, but research has shown . . .

新しくマクロを書くときにはいつでも,そのマクロをどのように使う予定なのか

を考えましょう。つまり,そのマクロは ――\raggedrightとか \raggedleftとか

みたいに―― 部品として使うもので,それゆえ出来るだけシンプルなほうがいいの

でしょうか。そのマクロは,段落をディスプレイするもので,地の文との間にはその

上下に \displaybreak分のアキを入れるようなものなんでしょうか。それともそれ

は,特別の用途を特別な方法で充たすようなマクロなのでしょうか。

13.3 段落を中央揃えする

モノを真ん中に置くには,両側に同じ量のグルーが必要です。するとまた,例の問

題が持ち上がります。つまり,どのレベルのグルーを使うべきなのか,ということで

す。\raggedleftには fillのグルーが有効でしたので,私たちの “\centerthis”マクロにもまたそれが利くでしょう。両端のグルーが確実に等しくなるようにするた

めに,\rightskipのための新たな情報には,\leftskipから得られる情報を使いま

しょう:

1 \def\centerthis{\leftskip=0pt plus 1fill

2 \rightskip=\leftskip \relax}

1 {\centerthis\noindent

2 When the epicenter of an earthquake becomes the

3 centerpiece of a discussion, can aftershock be

4 far behind?\par}

When the epicenter of an earthquake becomes thecenterpiece of a discussion, can aftershock be far behind?

どのレベルのグルーが必要?

“\centerthis”には,本当に fillのグルーが必要だったのでしょうか。filのグルーでも,同じように出来たのでしょうか。だって,\parfillskipが含んでいるのは filのグルーなんですから。多分,必要なのはバランスをとることなんですよね。次の

“\offcenter”マクロで,この考えを検証してみましょう:

1 \def\offcenter{\leftskip=0pt plus 1fil

2 \rightskip=\leftskip \relax}

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 82: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

74 第 13 章 段落余白を変更する

すぐ次で分かりますが,これだと,一番上の行と一番下の行がどちらも,中央揃え

されません:

1 {\offcenter

2 The ancients believed the sun went aroung the

3 earth---and that circles were a perfect form.

4 Thus, the motion of bodies in a perfect heaven

5 must surely be perfect as well. This idea turned

6 out to be as off center as the notion of a

7 geocentric univerce.\par}

The ancients believed the sun went aroung theearth—and that circles were a perfect form. Thus, themotion of bodies in a perfect heaven must surely be

perfect as well. This idea turned out to be as off centeras the notion of a geocentric univerce.

一番下の行の左右のスペースを測ってみれば,右には左のちょうど倍のグルーが

入っていることが分かると思います。これは,\rightskipのグルーが \parfillskip

のグルーに加えられたからです。つまりこういうことです:

 \parfillskip 0pt plus 1fil

+ \rightskip 0pt plus 1fil

Total: 0pt plus 2fil

したがって,右のグルーは合わせて 2filの伸張度となり,他方,左のグルーは 1fil

だけなわけです。

\offcenterの例の一番上の行もまたズレていますが,それは行が \parindent分

のホワイスペースで始まるからです。\raggedleftの例ではこれは問題ではなかっ

たのですが,しかし \centerthisの場合には問題です。

したがって,段落を中央揃えするには,さっきの \centerthisマクロでそうしたよう

に,いつも “plus 1fill”のグルーを使ってください。更に,段落の最初で \noindent

とするか,または次の “\beginCenter”でそうしているように,\parindentを 0pt

に変更するか,どちらかにしてください。

段落を中央揃えするサンドイッチ型マクロ

いま作った \centerthisマクロは,\raggedrightや\raggedleftと同じく,部

品です。“\beginCenter”を作るのに使うコントロールシーケンスのひとつです。中央揃えするものの中に複数の段落が入る可能性がありますから,\parindentを 0pt

に変えておきます:

1 \def\beginCenter{\displaybreak

2 \begingroup \parindent=0pt

3 \centerthis}

4 \def\endCenter{\par\endgroup\displaybreak}

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 83: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

まとめと関連事項 75

まとめと関連事項

本章では,“\leftskip”と “\rightskip”を紹介しましたが,これらは,各行の左右にどれだけのホワイトスペースを入れるかを覚えている「情報屋さん」です。

“\raggedright”,“\raggedleft”,“\centerthis”は,段落を左寄せ・右寄せ・中央揃えするサンドイッチ型マクロを作るための部品だといえます。TEXは各段落の最後の行に “\parfillskip”のグルーを入れるので,\raggedleftと \centerthis

には fillのグルーが必要で,それに対して \raggedrightに必要なのは filのグルーです。

2つのコントロールシーケンスが同じ「情報屋さん」に影響を与える場合で,且つその順番が正しくない場合には,「馬の前に馬車を繋ぐ」マチガイが起こります。そ

うなると,1つ目のコントロールシーケンスが無視されたみたいに見えます。また,\parindentが 0ptだと,“\narrower”は余白を変更しません。第 14章では,さまざまな箇条書きについて説明します。黒丸付きの箇条書きとか,

番号付きとか,アルファベット付きとかのものです。第 15章では,用語集や参考文

献リスト用の段落形状の作り方を示します。第 16章では,タイプした行やスペース

に TEXを「従わせる(obey)」仕方について説明しますが,これは詩やプログラムリストを作るのに役立つ TEXniqueです。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 84: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

76 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 85: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 14章 箇条書き用のマクロを作る

みんな箇条書きをします。下に掲げた箇条書きのように黒丸付きの箇条書きもあ

れば,番号とかアルファベット付きのもの,またはテキストの一部で始まる箇条書き

もあります。箇条書き項目をインデントするほうが好きな方もいれば,左余白ぴった

りまでテキストを折り返すほうが好きな方もいます。短い箇条書きもあれば,数ペー

ジに亘るものだってあります。本章では,箇条書きを作るのに必要なコントロール

シーケンスについて,説明をします。

本章の説明は,以下について既にお読みになっていることを前提にしています:

• グループ(6.2節)

• マクロのサンドイッチ型構造(第 12章)

• \displaybreak(12.5節)

LATEXで箇条書きをするには,“itemize”,“enumerate”,“description”環境を使ってく LATEX2.09Notes

ださい.これらについては,ランポートさんの本に記述があります.

14.1 \itemを使う

箇条書きするための一番簡単なコントロールシーケンスは,plain TEXのマクロで

ある “\item”です。このマクロはインプットをひとつ取ります。説明の便宜上,こ \item

のインプットのことを,ランポートさんもそうしているように,「ラベル」と呼ぶこと

にしましょう。\item は箇条書きの各項目の前にこのラベルを置きます。\itemは

また,ラベルの後ろの段落形状も変更します。

次の例で \itemの使い方を示します:

1 I took my shopping list to the mall:

2 \item{1.} light bulbs

3 \item{10.}fly swatter

4

5 \item{ZZZZZ} ice water

6 \item {} ice cream, for all the wonderful people

7 in my family who deserve a tasty treat,

8 \item{*} tennis balls---for the tennis

9 enthusiasts in the house who become glued to the

10 TV whenever Andre Agassi appears, and

11 \item {$\bullet$} amanita mushrooms.

12

13 The sheriff came by later and inquired, politely,

14 about my plans for the mushrooms.

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

77

Page 86: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

78 第 14 章 箇条書き用のマクロを作る

I took my shopping list to the mall:1. light bulbs

10. fly swatterZZZZZ ice water

ice cream, for all the wonderful people in my familywho deserve a tasty treat,

* tennis balls—for the tennis enthusiasts in the housewho become glued to the TV whenever AndreAgassi appears, and

• amanita mushrooms.The sheriff came by later and inquired, politely,

about my plans for the mushrooms.

“\bullet”というのは plain TEXのマクロで,数式モードの中でしか使えません。

この例の左余白は,一行目の “I”と最後の行の “about”とを結ぶラインの左側です。この箇条書きについては,注目すべき点がいくつかあります:

▪ \itemは,ラベルと項目本文との間に,ラベルの幅とは無関係に同じ量のホワ

イトスペースを入れます(このホワイトスペース量は,ここでは 0.5emの幅に設定

されています).

▪ ZZZZZみたいにラベルの幅が広い場合には,ラベルは左余白に突き出ます.

▪ “ice cream”の場合のように,ラベル自体を空にすることも出来ます.

▪ \itemとそのインプットとの間にスペースを入れるか否かとか,インプットと

項目本文との間にスペースを入れるかどうかとかは,結果に影響しません.

▪ 段落間に空行を入れるか否かも,関係しません(最初の \itemの上の行もまた,空

行でも構いません).

▪ 段落内の行は皆インデントされます。このインデント幅は\parindentの幅と

一緒です.

箇条書きをネストするには,“\itemitem”を使うと,\itemと同じように働きま\itemitem

す。インデントは 2\parindentの幅になります:

1 \item{1.} This item is the wrong color.

2 \itemitem{(a)} I wanted a red collar, not blue.

3 \itemitem {$\circ$} My tabby cat insists

4 on having a color-coordinated costume. Since

5 she is very temperamental, I shall have no peace

6 until she is satisfied.

7 \item {2.}Secondly, I wanted bells.

8 \itemitem {(b)}How can my canary know the cat

9 is stalking her unless she hears the bells?

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 87: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

14.2 箇条書きの\parindent をカスタマイズする 79

1. This item is the wrong color.(a) I wanted a red collar, not blue.◦ My tabby cat insists on having a color-coordinated

costume. Since she is very temperamental, I shallhave no peace until she is satisfied.

2. Secondly, I wanted bells.(b) How can my canary know the cat is stalking her

unless she hears the bells?

以上のような \itemの動作で満足,というのでしたらそれで結構です。でも,多

くの方は箇条書きを少し違った風にしたいと考えるものです。本章の残りの部分で

は \itemの変え方について説明をします。

LATEX では “\item” はまったく違っています。ランポートさんは,\item を再定義して, LATEX2.09Notes

“itemize”,“enumerate”,“description”,“list”,“trivlist”という各環境内でのみ使えるようにしています.これらの環境の外では,\itemは存在出来ません.

14.2 箇条書きの\parindentをカスタマイズする

\parindentを変更することで,箇条書きの項目のインデント幅を広く(または狭

く)することが出来ます。変更を箇条書き内部に止めたいので,サンドイッチ構造を

使ってこの変更をグループの内部に閉じ込めることにしましょう:

1 \def\beginItems{\begingroup

2 \displaybreak

3 \advance\parindent by 1em}

4 \def\endItems{\displaybreak \endgroup}

黒丸の幅に,ラベルと箇条書き項目との間のスペースを加えた値は,1emの設定に

なっています。ですので,このように変更をすると,黒丸と通常の段落のインデント

とが揃います:

1 Here is a splendid opportunity for listing clich\’es:

2 \beginItems

3 \item{$\bullet$} bite the bullet

4 \item{$\bullet$} faster than a speeding bullet

5 \item{$\bullet$} insults flying as thick as

6 bullets

7 \item{$\bullet$} ballots or bullets

8 \item{$\bullet$} what a bullethead!

9 \endItems

10

11 And last but not least: about as subtle as a bullet.

Here is a splendid opportunity for listing cliches:

• bite the bullet• faster than a speeding bullet• insults flying as thick as bullets• ballots or bullets• what a bullethead!

And last but not least: about as subtle as a bullet.

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 88: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

80 第 14 章 箇条書き用のマクロを作る

14.3 \itemのラベルをカスタマイズする

\itemの度にラベルをタイプしなくても済むとしたら,ナイスじゃないですか? 解決法はもちろん,そのためのマクロを書けばよいのです。ひとつのやり方としては,

“\bulletitem”(もっと短くなら多分 \bitem)とか何かを作るという手があります:

1 \def\bulletitem{\item{$\bullet$}}

でも,LATEXみたいに,どの箇条書きの中でも \itemをそのまま使えるとしたら,

もっとナイスじゃないですか? そうすれば,あるタイプの箇条書きから別のタイプの箇条書きに変えたとしても,その度に \bitemを今度は例えば \numbitemとかに変更

するという必要がなくなります。

もしかしたら既に予想されてらっしゃるかも知れませんが,TEXはそういうことも出来ます。戦略としては,まず \itemのコピーを作って,それから \itemを再定義

するということになります。そうするには,プリミティブである “\let”を使って,\let

次のようにします:

1 \let\knuthitem=\item

\letは \defに似ていて,これも新たなコントロールシーケンスを作り出します。

しかし,その新たなコントロールシーケンスは,マクロではありません。そうではな

くて,これはいわば「クローン」です。つまり,一種の一卵性双生児で,自分自身の

人生を歩むものです。

マクロは,それをテキストの中で使ったときに展開をされるので,つまりそのマ

クロの意味は,そのマクロが使われた時点での,展開後のマクロの定義ということ

になります。これに対して,\letによって作られたクローンは,\letの 2つ目のインプットが今持っている意味を,受け取ります。ですので,“\knuthitem” は,“\let\knuthitem=\item”とした時点で “\item”が行うことの,まったくのコピーとなります*原註1)。

ここでの “=”は,\knuthitemが「情報屋さん」であって新たな情報を覚えるよう

に指示されている,という意味ではありません。実は,TEXの指示において “=”が現われた場合はいつでもこれは,“=”の左側のコントロールシーケンスに対して,TEXが「新しい意味または値を代入している」ということを意味します。新しい意味また代入

は値の情報源は,“=”の右側の情報です。「情報屋さん」に新たな情報を提供するというのは,TEXにおける「代入」のひとつのタイプに過ぎません。“\let”でクローンを作るというのは,もうひとつの「代入」のタイプです。“\font”でフォントをロードするのは,第 3のタイプです。\font

は,新たなコントロールシーケンス(フォント名)を作り出して,そしてそのコント

ロールシーケンスに意味を代入します。

クローンである “\knuthitem”は,変化をしません。\knuthitemの意味は \item

のオリジナルの定義のママですので,これで,\itemを再定義してちょっと違った振

る舞いをするようにさせることが可能になります。\itemが箇条書き項目の左に黒丸

をタイプセットするようにするには,次の定義を使います:

1 \def\item{\knuthitem{$\bullet$}}

*原註1) “\let”によって作られた新たなコントロールシーケンスのための TEXの専門用語はありません。\let の 2 つ目の引数は「トークン」でないといけません。トークンというのは,コントロールシーケンスか,または一個々々の文字です。業界用語だと,“\let\knuthitem=\item” の意味するところは,“\knuthitem” は “\item” の現在の意味を獲得する,ということになります。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 89: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

14.4 新たな\item をグループに閉じ込める 81

これで,\item{$\bullet$}とか \bulletitemではなくて,ただ “\item”とだけタイプればいいことになります:

1 \item Guillotines were once the cutting edge of

2 the decapitation business.

3 \item To make frog stew, first you have to catch

4 some frogs.

5 \item Whomever fishes for compliments may wind

6 up with snails.

• Guillotines were once the cutting edge of the decapita-tion business.

• To make frog stew, first you have to catch some frogs.• Whomever fishes for compliments may wind up with

snails.

次の表は,種々の指示によって \itemの意味と \knuthitemの意味がどう変化する

のかについて,示しています:

▪ 初期状態では:

 \itemの意味は · · · · · · · · · · · · · · · · · · · · · · · \par\hang\textindent \knuthitemは存在しない

▪ \let\knuthitem=\itemとした後では:

 \itemの意味は · · · · · · · · · · · · · · · · · · · · · · · \par\hang\textindent \knuthitemの意味は · · · · · · · · · · · · · · · · · \par\hang\textindent

▪ \def\item{\knuthitem{$\bullet$}}とした後では:

 \itemの意味は · · · · · · · · · · · · · · · · · · · · · · \knuthitem{$\bullet$} \knuthitemの意味は · · · · · · · · · · · · · · · · · \par\hang\textindent

▪ \def\item{\relax}とした後では:

 \itemの意味は · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · \relax \knuthitemの意味は · · · · · · · · · · · · · · · · · \par\hang\textindent

\itemitemをカスタマイズする場合にはもちろん,“\knuthitemitem”みたいなクローンを同様に作ればいいわけです。

14.4 新たな\itemをグループに閉じ込める

黒丸付きの箇条書きだけでなく,番号付きの箇条書きも多分欲しいでしょうから,

新しい \itemの定義をグループの中に閉じ込めることには意味があります。グルー

プ内で行った他のあらゆる変更の場合と同様に,グループ内でマクロを定義した場

合には,そのマクロの定義はグループを閉じるとそこで終わります。ですので,新た

な \itemはそれが働くべき場所で正しく働いて,そしてグループを閉じると,\item

は再び,クヌース先生が定義したとおりに振舞います:

1 \def\beginBullets{\begingroup

2 \displaybreak

3 \def\item{\knuthitem{$\bullet$}}}

4 \def\endBullets{\displaybreak \endgroup}

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 90: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

82 第 14 章 箇条書き用のマクロを作る

1 According to {\em Webster’s Collegiate Dictionary},

2 the word ‘‘item’’ has several meanings:

3 \beginBullets

4 \item adv: also---used to introduce each article

5 in a list or enumeration.

6 \item n: a separate particular in an

7 enumerateion, account, or series.

8 \item n: a separate piece of news or

9 information.

10 \endBullets

According to Webster’s Collegiate Dictionary, the word“item” has several meanings:

• adv: also—used to introduce each article in a list orenumeration.

• n: a separate particular in an enumerateion, account,or series.

• n: a separate piece of news or information.

もちろん,“\beginBullets”のグループ内では,他にも変更をすることが可能です。余白を \narrowerにしたり,\raggedrightを使ったり,\parindent,\parskip,

\leftskip,\rightskipを変更したり,\toleranceや \hfuzzを変えることだって

出来ます。

これらの変更を \beginBulletsの定義の中に閉じ込めることは,しばしば有意義

です。恐らく,各 \itemの間には \medskipを入れたいのではないでしょうか。そう

するための簡単な方法は,TEXが各 \itemの前に(または,ここでは \knuthitemの前

に)挿入する \parskipグルーを変更することです。

TEXは最初の \itemの前にも \parskipを挿入するので,この「余分なスキップ」

は取り除く必要があります。それで,下にじゃなく上に移動するために,最初の\item

の直前で,\vskipに負のディメンションを指定します:

1 \def\beginSkipBullets{\begingroup

2 \displaybreak

3 \def\item{\knuthitem{$\bullet$}}

4 \parskip=\medskipamount

5 \vskip-\parskip}

6 \def\endSkipBullets{\displaybreak \endgroup}

変更したい箇条書きがひとつだけであるなら,次のように,\parskipを \beginBullets

のグループ内部で直接変更してください:

1 As the bullets fly over the listless crowd, we see that

2

3 \beginBullets

4 \parskip=\medskipamount

5 \vskip -\parskip

6 \item This bulleted list has a medskip between each item.

7 \item The change to the parskip stays inside the group

8 that starts in beginBullets and stops in endBullets.

9 \item There is no extra space at the top of the list.

10 \endBullets

11

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 91: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

14.5 番号付きの箇条書き 83

12 The fusillade ends, the crowd returns to its everyday

13 tasks, and the world becomes mundane once more.

As the bullets fly over the listless crowd, we see that

• This bulleted list has a medskip between each item.

• The change to the parskip stays inside the group thatstarts in beginBullets and stops in endBullets.

• There is no extra space at the top of the list.

The fusillade ends, the crowd returns to its everydaytasks, and the world becomes mundane once more.

\parskipを変更する別の戦略としては,一つ目の\itemと二つ目の \itemとの間

でそれを行うというものもあります。こうすると,\parskipグルーは,最初の itemのときにはまだ通常のサイズで,二番目の itemのときから \medskipamountへと変

わります。

14.5 番号付きの箇条書き

TEXで可能な,もう一つの便利なこととしては,箇条書きに自動的に番号を振ってくれるというものがあります。そうしておけば,最初の項目の次に新たに項目を一

つ追加したような場合でも,2番から 98番までの番号を,3番から 99番に全部書き換えるなんてことをしなくて済むようになります。ここでの戦略は,カウンタを作っ カウンタ

て,それを \advanceする,というものです。

まず,plain TEXのマクロである “\newcount”が,新たな,数値の「情報屋さん」 \newcount

を作り出します。ちょうど,\newdimen が新たなディメンションの「情報屋さん」

を作り出し,\newskipが新たなグルーの「情報屋さん」を作り出すのと一緒です。

\newcountは,新たに作り出した「情報屋さん」に,自動的に数値 “0”を提供します。私たちの新たな「情報屋さん」の名前は,“\listnumber”としましょう:

1 \newcount\listnumber

こうしておいてから,\itemを再定義して,\itemがこのカウンタを使って数値を

タイプセットするようにしましょう:

1 \def\item{\advance\listnumber by 1

2 \knuthitem{\the\listnumber.}}

“\the”というのは,TEXのプリミティブで,「作業屋さん」です。これは,情報を \the

受け取って,そしてそれをタイプセットします。したがって,“\the\listnumber”というのは,「\listnumberからの情報をタイプセットして」という意味です。\the

はどんな「情報屋さん」とでも使えます。(類似のものとして,“\showthe”もまた情報を受け取りますが,しかしその情報は,タイ \showthe

プセットするのではなく,メッセージとしてディスプレイに送ります。これにより,文書のどこにおいてでも,「情報屋さん」の値を見ることが可能になります。)

これで,TEXは \itemを見つける度に,カウンタ \listnumberに 1を加え,それ

から,ラベルを作るときに \listnumberからの情報を使います。ここでも,このカ

スタマイズした \itemの定義をグループに閉じ込めておくのには意味があります:

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 92: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

84 第 14 章 箇条書き用のマクロを作る

1 \def\beginNumbers{\begingroup

2 \displaybreak

3 \def\item{\advance\listnumber by 1

4 \knuthitem{\the\listnumber.}}}

5 \def\endNumbers{\displaybreak \endgroup}

使ってみます:

1 Here we have a numbered list:

2 \beginNumbers

3 \item On the first hand, we have five fingers.

4 \item On the other, five digits.

5 \item And our enumerator has no denomination.

6 \endNumbers

Here we have a numbered list:

1. On the first hand, we have five fingers.2. On the other, five digits.3. And our enumerator has no denomination.

“\endNumbers”がグループを終了すると,\listnumberはゼロへと戻ります。\item

によって行われた \advanceは皆,グループ内部に止まります。

TEXの,数値の「情報屋さん」は,分数や小数を扱うことは出来ず,整数しか扱えません。全体では,0, 1, 2, 3, . . . , 16, 384までと,−1,−2,−3, . . . ,−16, 384までです†訳註1)。数値の「情報屋さん」は,TEXの専門用語では「カウント・レジスタ」といレジスタ

う名前です。他の 2種類の「情報屋さん」は,「ディメンション・レジスタ」と「グルー・レジスタ」といいます。

14.6 アルファベット付きの箇条書き

アルファベット付きの箇条書きを作る戦略は,番号付きのもののときと似ていま

す。\listnumberの情報からの数値をタイプセットする代わりに,asciiコードを

使って,対応する英文字をタイプセットすればいいわけです。またカウンタが必要で

すが,ここでは,その値を文字「A」の直前の asciiコードの数値にセットします:

1 \newcount\asciinum \asciinum=64

Aの asciiコードは 65で,Bは 66,Cは 67…と続きます。これで,\itemが対応するアルファベットをタイプセットするように定義出来,そ

してそれを “\beginABC”マクロの内部で行うことにします。“\the”に代えて,フォントテーブルの文字を取得するプリミティブである “\char”を使います。\char

†訳註1) なぜか±214 の範囲になってますけど,これはホントは±231 の間なんじゃなかったかな(17.4節も同様)。LATEX, concisely に面白い説明が載ってたので引用しておきます:“counters, which holdintegers in the range −2147483647 to +2147483647. The present page number, and thesection number are held in counters, so you will understand that TEX can not easily typesetbooks that have more than 2,147,483,647 pages. This is not much of a restriction—a typical1000 page computer manual on my shelf is 4cm thick, so the smallest book that TEX couldnot handle would be more than 85km thick.” (Adrian Johnstone, LATEX, concisely, pdfversion 2004, p.22).

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 93: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

14.7 左寄せの箇条書き 85

1 \def\beginABC{\begingroup

2 \displaybreak

3 \def\item{\advance\asciinum by 1

4 \knuthitem{\char\asciinum.}}}

5 \def\endABC{\displaybreak \endgroup}

\beginABCによる箇条書きの例です:

1 Alphabet soup is a truncated Greek:

2 \beginABC

3 \item Alpha is the first Greek letter;

4 \item Beta is the second;

5 \item Gamma follows on their heels; and \dots

6 \item Omega completes the set.

7 \endABC

Alphabet soup is a truncated Greek:

A. Alpha is the first Greek letter;B. Beta is the second;C. Gamma follows on their heels; and . . .D. Omega completes the set.

小文字のアルファベット(a, b, c, . . .)を使いたいという場合には,カウンタの値

を asciiコード 64からではなく,96から始めてください。

14.7 左寄せの箇条書き

クヌース先生の \itemの欠点は,ラベルが左寄せにならないことです。代わりに,

ラベルと箇条書き項目本文との間に \enspaceが入っています †訳註2)。左寄せの箇条

書きが必要な場合には,\knuthitemを使わずに,自分用の箇条書きマクロを作らな

いといけません。

この箇条書きが,箇条書き項目本文の 2行目以降が左余白にまで折り返す必要があるなら,各項目は,\parindentの代わりにラベルで始まる,通常の段落というこ

とになります。というわけで,このカスタマイズされた \itemの任務はとてもシン

プルなものです:

▪ ひとつ前の段落を \parで終了させ,

▪ 新しい段落を \noindentで開始し,

▪ ラベルをタイプセットし,

▪ ディメンションで少し \hskipする.

黒丸で始まる左寄せ箇条書きマクロです:

1 \def\beginFlushList{\displaybreak

2 \begingroup

3 \def\item{\par \noindent $\bullet$\enspace}}

4 \def\endFlushlist{\par \endgroup

5 \displaybreak}

†訳註2) …と書いてあるのですけど,これってちょっと混乱してるんじゃないかな? 左寄せにならないのは “\indent” のせいだと思うのだけど。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 94: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

86 第 14 章 箇条書き用のマクロを作る

使ってみましょう:

1 This watery universe has a variety of flushes:

2 \beginFlushList

3 \item Dogs flushed the quails from their nests.

4 \item The shy nudist flushed in embarrassment and wished

5 a fog bank would cover the beach and hide everyone.

6 \item The four-flusher’s bluff was called---and caught!

7 \endFlushList

8

9 You were expecting scatology? Tsk, tsk.

This watery universe has a variety of flushes:

• Dogs flushed the quails from their nests.• The shy nudist flushed in embarrassment and wished afog bank would cover the beach and hide everyone.• The four-flusher’s bluff was called—and caught!

You were expecting scatology? Tsk, tsk.

ラベルには黒丸ではなくて番号がご入用なら,14.5節でやったように,カウンタ

を使ってください。お望みならまた \listnumberを使っても構いませんし,そうで

なければ新しいカウンタを作りましょう:

1 \newcount\flushnumber

2 \def\beginFlushNumbers{\displaybreak

3 \begingroup

4 \def\item{\par \advance\flushnumber by 1

5 \noindent \the\flushnumber.\enspace}}

6 \def\endFlushNumbers{\par \endgroup \displaybreak}

左寄せして、2つ目の段落はインデントする箇条書き

インデントする箇条書きを作るには,箇条書き全体の左余白をインデントし,インデ

ントと同じ幅のラベルを作り,そしてこのラベルをインデントのスペースに置く必要が

あります。それで,私たちの “\beginIndentedFlushList”の定義では,\leftskipを \advanceした後,新たな \itemには次のような任務が必要となります:

▪ 前の段落を終了し,

▪ 新たな段落を開始し,

▪ \leftskipした分 \hskipでバックして,そして,

▪ ラベルをタイプセットする.

次の \beginIndentedFlushListは,ラベルを hbox (horizontal box)の中に入れて

いますが,これは第 29章で説明する TEXniqueです。hboxを使う利点は,そのサイズをコントロール出来るということです:

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 95: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

まとめと関連事項 87

1 \newdimen\labelwidth \labelwidth=1pc

2 \def\beginIndentedFlushList{\displaybreak

3 \begingroup

4 \advance\leftskip by \labelwidth

5 \parindent=\labelwidth

6 \def\item{\par\noindent

7 \hskip -\labelwidth

8 \hbox to \labelwidth{$\bullet$\hfil}}}

9 \def\endIndentedFlushList{\par \endgroup

10 \displaybreak}

この,左寄せして 2つ目の段落はインデントする箇条書きの例です:

1 Ode to the joys of parking a car in Boston:

2 \beginIndentedFlushList

3 \item My car became indented at the parking lot,

4 and I identified the driver as a rotten sot.

5

6 My lawyer is a shark, so the driver got indebted as

7 he tried to pay me off.

8 \item I wish he’d been indentured to a wealthy toff.

9 \endIndentedFlushList

Ode to the joys of parking a car in Boston:

• My car became indented at the parking lot, and Iidentified the driver as a rotten sot.

My lawyer is a shark, so the driver got indebtedas he tried to pay me off.

• I wish he’d been indentured to a wealthy toff.

まとめと関連事項

クヌース先生のマクロ,“\item”と “\itemitem”は,インデントする箇条書きを作ります。どちらもインプットが必要で,何でもお望みのものをラベルとして入れること

が出来ます。\itemや \itemitemは,“\let”を使ってクローンを作れば,オリジナルを再定義してカスタマイズすることが可能です。TEXはカウンタを使って,箇条書きの各項目に自動的に番号を振ったりアルファベットを振ったり出来ます。“\newcount”が新たなカウンタを作り出し,再定義した \itemがカウンタを \advanceし,そして

“\the”や “\char”がカウンタからの情報をタイプセットするのでした。第 13章では,段落の左右にホワイトスペースを入れる方法について説明してます。

第 15章は,用語集や参考文献リスト用に段落の形状を変える方法について扱ってい

ます。第 16章では,タイプした行やスペースに TEXを従わせる (obey)方法について説明していますが,これは詩やプログラムリストのために有用な TEXniqueです。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 96: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

88 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 97: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 15章 ぶら下げインデントする

大抵,参考文献リストや用語集はどちらも,各エントリの一行目が左寄せされた,

インデントされた箇条書きになっています。これを実現するには,「ぶら下げインデ

ント」を使います。この用語は,インデントが通常の場合よりも一行または複数行

「ぶら下がっている」ような段落の形状のことを指しています(plain TEX の “\item”

マクロは,段落全体をインデントするのにぶら下げインデントを使っています)。参考文献

リストのほうが用語集よりも若干シンプルなので,まず参考文献リストから挑戦する

ことにしましょう。

本章の説明は,以下について既にお読みになっていることを前提にしています:

▪ グループ(6.2節)

▪ マクロのサンドイッチ型構造(第 12章)

▪ \displaybreak(12.5節)

参考文献リストを作るには,“thebibliography”環境を使ってください.本文中で出典を LATEX2.09Notes

引用するには “\cite”を使います.\cite及び thebibliography環境の使い方については,ランポートさんの本に記述があります.

LATEXでは,書誌のエントリを作成する方法が 2つあります.エントリを自分で作成するには,ランポートさんの本に書いてある “\bibitem”を使います.もうひとつには,BibTEXを使って,コンピュータにエントリを作ってもらうことも出来ます.BibTEXは,ユーザーが文書内で \citeした出典の情報を書誌のデータベースから検索するプログラムです.BibTEXの使い方については,ランポートさんの本に記述があります.用語集には,LATEXの “\glossary”マクロと “\makeglossary”マクロとを使ってください.

これらは,LATEXの “\index”マクロや “\makeindex”マクロと似たものです.これら索引用のマクロや用語集用のマクロについては,ランポートさんの本に記述があります.

15.1 参考文献リストのためのぶら下げインデント

本節の目標は,本節の後半の例に出てくるような参考文献リストを作ることです。

参考文献リスト用に左余白を変更するには,“\hangindent”という名前の「情報屋 \hangindent

さん」を使います。これはTEXのプリミティブで,ぶら下げインデントの幅がどれくらいかを記憶しているものです。次の例では,左余白と,2行目・3行目・4行目の行頭との間隔が 30ptになっています。\noindentを使って,段落が通常の \parindent

で始まらないようにしています:

1 \hangindent=30pt

2 \noindent

3 The bookworm browsed among the books, deciding

4 which to munch. He wanted here, meandered

5 there, selecting one for lunch. He nibbled pages

6 at his leisure; then he got some punch.

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

89

Page 98: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

90 第 15 章 ぶら下げインデントする

The bookworm browsed among the books, deciding whichto munch. He wanted here, meandered there, se-lecting one for lunch. He nibbled pages at hisleisure; then he got some punch.

\hangindentは,次の段落にしか影響を与えません*原註1)。TEXがその段落をタイプセットし終わると,\hangindentは自動的に 0ptに戻ります。ですので,参考

文献リストの各段落ごとに新たに \hangindentを発する必要があります。そのため

の簡単な方法は,新たなエントリを開始するような “\bibentry”マクロを書くことです。

このぶら下げインデントの幅用に「情報屋さん」を作るのは良いアイデアですの

で,ここではそれも行いましょう。インデント幅は別に 30ptじゃなくても構いませ

んので,お好きなディメンションを指定してください:

1 \newdimen\biblioindent

2 \biblioindent=30pt

3 \def\bibentry{\hangindent=\biblioindent}

この定義では,各エントリの間には,当該段落を終了するための空行が置かれるこ

とを想定しています。各エントリの間に空行を置かないのであれば,\bibentryの

定義の冒頭に \parを入れるようにしてください。

1 \def\betterBibEntry{\par \hangindent=\biblioindent}

このように \parを含めるというのは,いつでも良いアイデアです。\parは現在の

段落を終了せよという意味ですので,これが害を及ぼすことはありません。TEXが「段落の間に」(ページ作成モード/垂直モードに)いるときには,\parには何の効果

もありません。

参考文献リストのエントリは左余白から始まりますから,\parindentを 0ptに変

更しておきましょう(同じ結果を得るための別の方法としては,\bibentryの定義の末尾に

\noindentを入れておくというやり方もあります)。

1 {\parindent=0pt

2

3 \bibentry Frankenstein and Chaney, {\em Our

4 Favorite Monsters From Attila to Zeno, An

5 Annotated Bibliography}, NY: Horrific Press,

6 1984.

7

8 \bibentry Heckle and Jackie, ‘‘The Fine Art of

9 Driving a Speaker Up the Wall,’’ {\em Oration

10 Weekly}, Vol.~2, No.~1, 1215.\par}

*原註1) より正確には,TEX が垂直モードにいるときには,“\hangindent” は次の段落にしか影響を与えず,TEXが水平モードにいるときには,\hangindentはその当該段落にしか影響を及ぼしません。したがって,“\noindent\hangindent=30pt”は,“\hangindent=30pt\noindent”とまったく同じ動作になります。TEXは \hangindentの値を段落の末尾で使用するので,段落の途中で再び \hangindent を変更した場合には,最初の代入は忘れ去られてしまいます。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 99: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

15.1 参考文献リストのためのぶら下げインデント 91

Frankenstein and Chaney, Our Favorite Monsters FromAttila to Zeno, An Annotated Bibliography, NY:Horrific Press, 1984.

Heckle and Jackie, “The Fine Art of Driving a SpeakerUp the Wall,” Oration Weekly, Vol. 2, No. 1, 1215.

\parindentの変更を参考文献リストの内部に閉じ込めるために,これを,参考文

献リストを開始・終了するサンドイッチ型マクロのペアの中に入れることにします:

1 \def\beginBibliography{\begingroup

2 \parindent=0pt}

3 \def\endBibliography{\par \endgroup}

以上は参考文献リストの「骨組み」です。これに \raggedrightその他の特別な特

徴も,同様に含ませることも出来ます。\endBibliographyの中の \parが確実に,

グループを閉じる前に段落を終了させるので,最後のエントリにおいて「私のコマン

ド無視したなぁ」マチガイ(12.4節)に陥らずに済みます。

余白にラベルを置く

この \bibentryは,通常の参考文献リストとしては良い働きをしてくれるもので

すが,各エントリの最初に [1]とか [Knu83]みたいなラベルが要るとしたら,どうしたらよいでしょうか。この場合には,このラベルのためのインプットを取れるマクロ

が必要になります。更に,ラベルの情報がどれだけであっても,それぞれのエントリ

が確実に同じ場所から始まるようにしないといけません。

解決法は,\biblioindentと同じ幅の hbox (horizontal box)の中に,ラベルを入

れることです。“\hbox”はプリミティブの「作業屋さん」で,ひとつのインプットを取ります。それは,このボックスに入れたいもの,です。第 28章から第 30章で,

TEXのボックスの使い方について説明をします。次の “\boxentry” マクロは,インプットをひとつ取ります。それは,エントリ

のラベル用のテキストです。\boxentryマクロは,まず前の段落を終了させるため

に \parで始めて,それから「テキストが孤立する」マチガイ(28.2節)を避けるた

めに,\noindentを使います:

1 \def\boxentry#1{\par\noindent

2 \hangindent=\biblioindent

3 \hbox to \biblioindent{[#1]\hfil}%

4 \ignorespaces}

\hboxの後ろの “to”は「キーワード」です。このキーワードは hboxにその幅を教えるものですが,ここでは,\biblioindentという名前のディメンションにしまし

た。これで,各エントリはそれぞれ,参考文献リストのインデントと同じ幅の hboxで始まることになります。

“\ignorespaces”は,TEXのプリミティブです。これは,スペース以外の文字を \ignorespaces

見つけるまではスペースを無視するように,と TEXに伝えるものです。下の例の場合では,\boxentryのインプットの後にスペースがあっても,TEXはそれをタイプセットしません:

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 100: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

92 第 15 章 ぶら下げインデントする

1 \biblioindent=60pt

2

3 \boxentry{1}Ali, Muhammad, ‘‘Name Changing as a

4 Powerful Pugilistic Tactic,’’ {\em Boxing

5 Tidbits}, June 1980.

6

7 \boxentry{Byr44} Byrd, Nestor, ‘‘Better than

8 Twigs---a Wren’s Eye View of Cardboard,’’ {\em

9 Better Nests and Gardens}, July 1981.

10

11 \boxentry{Jack 1929a}

12 Jack,‘‘An Insider’s Report on the State of the

13 Box,’’ {\em Square-Siders}, August 1982.

[1] Ali, Muhammad, “Name Changing as aPowerful Pugilistic Tactic,” Boxing Tidbits,June 1980.

[Byr44] Byrd, Nestor, “Better than Twigs—aWren’s Eye View of Cardboard,” BetterNests and Gardens, July 1981.

[Jack 1929a] Jack,“An Insider’s Report on the State ofthe Box,” Square-Siders, August 1982.

\igonorespacesを使わないと,TEXは \boxentryのインプットの後に一個ない

し複数のスペースを発見した場合には,そこに単語間スペースをタイプセットしてし

まいます。

カウンタを作れば,参考文献リストに自動的に番号を振ることも出来ます。カウン

タの作り方や使い方の詳細については,14.5節や 17.4節を見てください。

15.2 用語集

用語集は参考文献リストに似ています。各段落は \hangindentし,\parindentは

0ptで,用語集のエントリはそれぞれインプットをひとつ取ります。インプットは,説

明される語句です。次の “\gloss”マクロのようにインプットを取れるようにしておくと,語句を別のフォントでタイプセットしたり,後から別のフォントにしたくなっ

たときに変更したりするのが,容易になります。\itemや \bibentry,\boxentry

が \parで始める必要があったのと同様に,\glossも \parで始めます:

1 \newdimen\glossaryindent

2 \glossaryindent=30pt

3 \def\gloss#1{\par

4 \hangindent=\glossaryindent

5 {\bf #1:}}

6 \def\beginGlossary{\displaybreak

7 \begingroup

8 \parindent=0pt}

9 \def\endGlossary{\par \endgroup \displaybreak}

次の例は,このマクロの働きを示したものです。語句の定義はWebster’s New Col-legiate Dictionary, Springfield, MA: G. & C. Merriamからとりました:

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 101: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

15.2 用語集 93

1 \beginGlossary

2 \gloss{gloss} a brief explanation of a difficult or

3 obscure word or expression; a false and often

4 willfully misleading interpretation (as of a text).

5

6 \gloss{glossary}

7 a collection of textual glosses or of terms

8 limited to a special area of knowledge or usage.

9 \endGlossary

gloss: a brief explanation of a difficult or obscure wordor expression; a false and often willfully misleadinginterpretation (as of a text).

glossary: a collection of textual glosses or of terms lim-ited to a special area of knowledge or usage.

用語集のインプット内のスペースのサイズ

\glossのインプットの中のスペースは,その行の他のスペースと同じ量だけ伸縮

します。次の “\firmgloss”マクロのように,インプットを hboxの中にタイプセットするようにすると,これらのスペースの中のグルーはその自然長に止まり,伸縮し

ません。

次の例では,語句の説明文の部分の単語間スペースは,伸びています。“under thetable”の部分の単語間スペースも同様に伸びていますが,しかし “over the transom”の部分の単語間スペースは伸びていません:

1 \def\firmgloss#1{\par

2 \noindent

3 \hangindent=\glossaryindent

4 \hbox{\bf #1:}}

1 \gloss{under the table} adv.\ describing an illegal

2 payment, sometimes called a kickback, that is given

3 secretly and is not reported to the IRS.

4

5 \firmgloss{over the transom} adv.\ describing

6 unsolicited manu\-scripts sent to a publisher who has

7 not asked to see them.

under the table: adv. describing an illegal payment,sometimes called a kickback, that is given secretlyand is not reported to the IRS.

over the transom: adv. describing unsolicited manu-scripts sent to a publisher who has not asked tosee them.

\firmglossは,TEXを段落作成モード(水平モード)に押し出すために,\parの次に \noindentを必要とします。\firmglossは hboxを使っていますが,\noindentのお蔭で「テキストが孤立する」マチガイに陥らずに済みます(28.2節)。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 102: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

94 第 15 章 ぶら下げインデントする

15.3 ぶら下げインデントはどこから始まるの?

本章のこれまでの例はすべて,段落の 1行目は通常の幅で,2行目からがぶら下げインデントになっています。それは,“\hangafter”という名前の別の「情報屋さん」\hangafter

が通常は “1”になっているからです。でも,この「情報屋さん」も変えることが出来るので,面白い効果を生じさせることが出来ます:

1 \hangindent=20pt

2 \hangafter 2

3 \noindent

4 Bats hang down, coats are hung up. Admirers hang

5 onto your every word. Kids hang around after

6 school, and hang out on the streetcorners.

7 Planes are kept in hangars, and clothes are kept

8 on hangers. Paintings hang on walls, ornaments

9 hang on Christmas trees, and chandeliers hang

10 from ceilings.

Bats hang down, coats are hung up. Admirers hang ontoyour every word. Kids hang around after school, and hang

out on the streetcorners. Planes are kept in hangars,and clothes are kept on hangers. Paintings hang onwalls, ornaments hang on Christmas trees, and chan-deliers hang from ceilings.

ご覧のように,\hangafterは,通常の行とぶら下げインデントされた行との境界

を画するものです。“\hangafter 2”というのは,「2行目より後ろをぶら下げインデントしなさい」という意味です。

もしかしたら読者の中には今,「おぉっと,著者のヤツ “=”を忘れてるじゃん」と思った方がいらっしゃるかも知れません。そうですね,\hangafterという「情報屋

さん」に新しい情報を提供しているのに,“=”はどこに行ったのでしょうか。実は,“=”はオプションなのです*原註2)。“=”は使わなくても構わないのです。人

間が「木を切る(chop wood)」という表現と「白いイス(white chair)」という表現

の違いが分かるのと同じように,TEXは文脈から,“\hangafter 2”という表現が「\hangafterという『情報屋さん』に,新たな情報である 2を提供しなさい」の意

味であるということが分かるのです。

大雑把な類比でいうと,「切る(chop)」は動詞,しかも他動詞です。ちょうどこ

れは,インプットを取るというのと似ています。「木(wood)」は名詞で,切ると

いう動作が適用される対象ということです。それで私たちは,「動詞-名詞」とい

う構造から,「木を切る(chop wood)」の意味が分かるわけです。同様に,「白い

(white)」は形容詞で,「イス(chair)」は名詞です。「白いイス(white chair)」とい

う「形容詞-名詞」構造から,「白い(white)」が「イス(chair)」を修飾している

ということが分かるわけです。

同様にして,TEXには \hskipが「作業屋さん」で,\parindentが「情報屋さん」

であることが分かります。「作業屋さん」である \hskipはインプットを期待し,そし

*原註2) TEX の代入においてはすべて,等号はオプションです。“\let\this=\that” という指示と “\let\this\that” という指示とは,まったく同じことをします。“\parskip=0pt” と“\parskip0pt” についても同様です。しかし,混乱を避けるために,(上の \hangafter の例は別として)本書の中や,私自身が書くコードに関しては,私はいつも等号を使うようにしています。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 103: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

15.4 負の数値と負のディメンション 95

て「情報屋さん」である \parindentはそれを提供することが出来ます。それで,こ

の「作業屋さん-情報屋さん」という構造は TEXにとって,よく知った関係なのです。「情報屋さん-インプット」という構造や「情報屋さん-情報屋さん」という構

造もまた,TEXにとってはお馴染みの関係です。これらのペアの 2番目のものが,1番目のものに新たな情報を提供しているのだということが,TEXには分かるのです。ですので,“=”は,何らかの単語というよりは,句読点に近い存在です。“=”は,

「作業屋さん」でも「情報屋さん」でもありません。“=”の唯一の機能は,指示を人間にとって理解しやすくするというものです。したがって,“\hangafter=5”でも,“\hangafter 5”でも “\hangafter5”でもどれでも,ユーザーが「正しいと感じる」表現を使って構いません。\hangindentと同様に,“\hagnafter”も次の段落にしか影響を及ぼしません。

15.4 負の数値と負のディメンション

読者の中には,\hangindent が(-1in みたいな)負のディメンションだったり,

\hangafterが(-3とかの)負の数値だったりしたら,TEXはどうするんだろうと疑問に思っている方がいるかも知れません。

\hangindentが負の場合には,TEXはそのインデントを段落の左側にではなく,右側に挿入します。\hangafterが負の場合には,TEXはそのインデントを下に向けてではなく,上に向けて挿入します。

\hangafterは,何行目のベースラインが,ぶら下げインデントと通常の行との境

界線を画しているのか,と考えても構いません。そして数値の正負は,この境界線の

どちらの側にぶら下げインデントが現われるかを示しているということです。つま

り †訳註1):

\hangafter= 3 境界線は 3行目のベースラインで,そこから下に向かってぶら下げインデントされます.

\hangafter=-3 境界線はやはり 3行目のベースラインですが,しかしそこから上に向かって,ぶら下げインデント

されます.

まとめと関連事項

本章では TEXのぶら下げインデントの使い方について説明しました。ぶら下げインデントは,参考文献リストや用語集を作るのにとりわけ便利なものです。参考文献

リストのエントリの冒頭にラベルを置くには,ラベルを “\hbox”の中に入れてください。“\ignorespaces”を使うと,ラベルとそれに続くテキストとの間の余分なスペースを TEXがタイプセットしてしまうのを,防ぐことが出来ます。

“\hangindent”は,ぶら下げインデントの幅を特定するものです。\hangindent

が正であれば,インデントは段落の左側に置かれます。\hangindentが負のときは,

インデントは右側になります。“\hangafter”は,どこのベースラインが,インデントされた行と通常幅の行との境界となるのかを示すものです。\hangafterが正であ

†訳註1) この表は,\hangafter が負の場合の例ではないですよ(一見ぶら下げっぽくも見えますが)。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 104: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

96 第 15 章 ぶら下げインデントする

れば,インデントはその境界線より下側に置かれ,\hangafterが負のときは,イン

デントは境界線より上側に置かれます。

第 13章は,段落の左右の余白にホワイトスペースを加える仕方について示してい

ます。第 14章は,黒丸付き・番号付き・アルファベット付きなどの,さまざまな箇

条書きの作り方を説明しています。第 16章では,ユーザーがタイプした行やスペー

スの通りに TEXを従わせる (obey)方法について述べていますが,これは詩やプログ

ラムリストを作るのに有用な TEXniqueです。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 105: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 16章 詩やプログラムリスト用のマクロを作る

詩やプログラムリストをタイプセットするのに理想的な方法は,改行や余分なス

ペースに TEXを従わせる (obey)ことです。そうすれば,wysiwyg(what you seeis what you get)効果を作り出すことが可能になります。TEXを従順にさせるための 2つのコントロール・シーケンスが,“\obeylines”と “\obeyspaces”です。本章ではこれらの使い方について,説明をします。

本章の説明は,以下について既にお読みになっていることを前提にしています:

▪ グループ(6.2節)

▪ マクロのサンドイッチ型構造(第 12章)

▪ \displaybreak(12.5節)

詩のためには,LATEXには “verse”環境があって,ランポートさんの本に記述があります. LATEX2.09Notes

プログラムリストには,LATEX の “verbatim” 環境や “tabbing” 環境を使うか,または本章で説明する “\beginCode”. . . “\endCode”マクロを使うことも出来ます.verbatim環境とtabbing環境については,ランポートさんの本に記述があります.

16.1 \obeylinesを使う

“\obeylines”は plain TEXのマクロで,入力文書中で end-of-line 文字が見つか \obeylines

ると,TEXに段落を終了させるようにするものです。したがって,入力ファイル中の各行は個々の段落として扱われることになり,各々の行が,プリントアウトでは新

たな行を始めることになります。入力文書全部をこのように扱いたいというのでな

い限り,\obeylinesはグループの中にいれましょう:

1 {\obeylines

2 Now these are the Laws of the Jungle:

3 and many and mighty are they;

4 but the head and the hump of the Law

5 and the haunch and the hump is---Obey!

6 ---{\em The Second Jungle Book}, Kipling, 1895.}

Now these are the Laws of the Jungle:and many and mighty are they;but the head and the hump of the Lawand the haunch and the hump is—Obey!—The Second Jungle Book, Kipling, 1895.

この仕事をするのに,\obeylinesは面白い仕掛けを使っています。TEXは,入力ファイルを読み込む際には,通常は end-of-line 文字をスペースへと変換します。

\obeylinesとした後ではしかし,TEXはその代わりに end-of-line 文字を “\par”に変換するのです。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

97

Page 106: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

98 第 16 章 詩やプログラムリスト用のマクロを作る

16.2 \obeylinesを使って詩用のマクロを作る

文書中に詩を引用する場合には,\obeylinesを “\beginVerse”マクロの中に入れましょう。詩の開始と終了のためにサンドイッチ構造を使うのです。各々の行が

新たな段落になるので,各行頭には \parindent幅のスペースが入ってしまいます。

詩を左余白に寄せるには,\parindentを 0ptにしてください:

1 \def\beginVerse{\displaybreak

2 \begingroup

3 \parindent=0pt

4 \obeylines}

5 \def\endVerse{\endgroup \displaybreak}

“\endVerse”の定義の中には “\par”は要りません。詩の最後の行の end-of-line

文字は,TEXが \endVerseに到達する前に既に,\parへと変換されています。

フギャー!

おにぎり型のマクロを書くときに \obeylinesを使うと,「言うこと聞いてくれな

い」マチガイに陥ります。次の “\disobey”マクロがこのマチガイを示しています。マクロを書いた人は,\disobey のインプットが詩としてタイプセットされること

――入力ファイルの各行がプリントアウトで新たな行を始めること―― を望んでい

るのですが,でも,このマクロはそういう風には動作しません:

1 \def\disobey#1{\begingroup

2 \obeylines #1\par \endgroup}

1 \disobey{%

2 Sweet lords, sweet lovers, O! Let us embrace.

3 As true we are as flesh and flood can be:

4 The sea will ebb and flow, heaven show his face;

5 Young blood doth not obey an old decree:

6 We cannot cross the cause why we were born.}

7

8 Shakespeare: {\em Love’s Labour’s Lost}

Sweet lords, sweet lovers, O! Let us embrace. As truewe are as flesh and flood can be: The sea will ebb andflow, heaven show his face; Young blood doth not obey anold decree: We cannot cross the cause why we were born.

Shakespeare: Love’s Labour’s Lost

このマチガイが生じるのは,TEXはマクロを展開するよりも前に,そのマクロのインプットを飲み込んでしまうからです。\disobeyを展開して \obeylinesを見つ

けるまでには TEXはもう, end-of-line 文字をスペースへと変換してしまっている

のです。

言うこと聞いてくれない、というマチガイ

 おにぎり型マクロを使うときで \obeylinesや \obeyspacesを用いる場合は

いつでも,このマチガイに陥ります。それぞれの行やスペースが別々にタイプ

セットされることはなく,TEXは普通の段落を作り,余分なスペースは無視す

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 107: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

16.3 \obeyspaces を使う 99

るという通常のルールに従います。

「言うこと聞いてくれない」マチガイを避けるためには,\obeylinesや \obeyspaces

が必要なときにはいつも,サンドイッチ型構造を使うようにしてください。

詩の中に垂直方向のスペースを入れる

\obeylinesを使っているときに,プリントアウトに空行が必要な場合には,簡単

な方法としては,空行を入れたい行にチルダ(~)だけを置くというものがあります。

TEXは,タイプセットすべき文字かまたは \indentとか \noindentのように明示的

に段落を開始するようなコントロールシーケンスを見つけるまでは,段落を開始する

ことはありません。チルダは段落を開始するように TEXを押し出すので,その段落にあるのは空白だけなのですが,\baselineskip分の垂直方向のスペースがページ

に加えられます。チルダを使うとまた,文書をタイプしている際に,この空行が見つ

けやすくもなります。

詩の行間に別の量のスペースを入れたいという場合には,次のように “\verseskip”だけをその行に置いて,その定義はお好みのサイズにしてみてください:

1 \def\verseskip{\medskip}

1 \begingroup\obeylines

2 While skipping down the alleyways

3 Through verses thick and thin,

4 \verseskip

5 The wine splashed dimly in the haze,

6 And cats yowled in the din.

7 \endgroup

While skipping down the alleywaysThrough verses thick and thin,

The wine splashed dimly in the haze,And cats yowled in the din.

16.3 \obeyspacesを使う

“\obeyspaces”というのも,plain TEXのマクロです。このマクロは,コントロー \obeyspaces

ルシーケンスに続くスペースも含めてすべてのスペースをタイプセットするように,

TEXに伝えるものです。ここでも,文書全体に亘って,TEXがスペースをそのように扱うことを望むのでない限り,\obeyspacesはグループの中に入れましょう:

1 {\obeyspaces

2 \TeX normally ignores extra spaces,

3 and normally does not typeset the

4 spaes after a control sequence. But you can

5 tell \TeX , if you want,

6 to ‘‘obey’’ every space you type.}

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 108: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

100 第 16 章 詩やプログラムリスト用のマクロを作る

TEX normally ignores extra spaces, and normallydoes not typeset the spaes after a control sequence. Butyou can tell TEX , if you want, to “obey” every spaceyou type.

16.4 詩やプログラムリストのためのマクロ

プログラムリストや詩をタイプセットするための簡単な方法は,\obeylines と

\obeyspacesを組み合わせて使うというものです。でも,これは言うほどすんなり

とはいきません。この節では,遭遇すると思われるマチガイについて,説明をしてい

きます。

まず最初に,解答を示しておきますね:

1 \def\codefont{\tt}

2 \def\startline{\par\noindent}

3

4 {\obeylines\obeyspaces%

5 \global\def\beginCode{\displaybreak%

6 \begingroup%

7 \obeylines\obeyspaces%

8 \let^^M=\startline%

9 \codefont}%

10 \global\def\endCode{\endgroup\displaybreak}}

次に,これらの各部分について説明をして,また,どうしてこうする必要があるの

かについても説明します。\obeylinesや \obeyspacesを通常のサンドイッチ型の

マクロの中に入れるというアイデアから始めましょう。

フギャー! 行頭のスペースが消えてる

ご存知のように,プログラムリストの多くは,行頭が正しくスペーシングされる必

要があります。でも,先の “\beginVerse”マクロに \obeyspacesと \codefontを

付け加えて “\beginCode”マクロを作ってみると,「私のスペース無視したなぁ」マチガイに陥ることが分かります。次の “\beginNoSpaceCode”がそれを示しています。行頭のスペースが,プリントアウトには現われません:

1 \def\beginNoSpaceCode{\displaybreak\begingroup

2 \parindent=0pt

3 \obeylines\obeyspaces

4 \codefont}

5 \def\endNoSpaceCode{\endgroup\displaybreak}

次の \beinNoSpaceCodeの例は,Logoで挨拶をプリントアウトするものです:

1 \beginNoSpaceCode

2 to greet :name

3 print sentence [hi,]

4 :name

5 print [how are you?]

6 end

7 \endNoSpaceCode

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 109: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

16.4 詩やプログラムリストのためのマクロ 101

to greet :nameprint sentence [hi,]:nameprint [how are you?]end

この問題に対処するひとつの方法としては,スペースで始まる行の前にチルダ(~)

を置くというやり方があります。でも,それは面倒ですし,他にも方法があるのです。

私のスペース無視したなぁ、というマチガイ

 \obeylinesと \obeyspacesを組み合わせてもなお,TEXは行頭のスペースを無視します。

  TEXがこれらのスペースを無視するのは,各行の冒頭で文字を読み込み始めるときには,TEXは垂直モード(ページ作成モード)にいるからです。TEXは垂直モードにいるときにはいつも,こういうスペースを無視するのです。タイプ

セットすべき文字か,または水平モードを開始するコントロールシーケンスを

発見するまでは,TEXは水平モード(段落作成モード)には移行をしません(TEX

のモードについては第 33章で説明します)。

これを解決するには,TEXが最初のスペースを読み込む前に,新たな段落を開始する(水平モードを開始する)ことです。各行の冒頭で新たな段落を開始するには,

\obeylinesよりもちょっとだけ複雑なものが必要です。各行の末尾を単に “\par”にするのではなくて,“\par\noindent”に変換する必要があります。

end-of-line 文字は,“^^M” です。クヌース先生は,\obeylines の定義の中で

“\let^^M=\par” を使っていますので,同じ戦略に倣いましょう。でもここで,“\let^^M={\par\noindent}”とかとすることは出来ません。それは,\letの 2つ目のインプットは単独のトークンじゃないといけないからで,グループではダメだか

らです(トークンというのは,タイプセットされる個々の文字か,または個々のコントロー

ルシーケンスかの,どちらかです.それで,コントロールシーケンスが 1 個ならよいのです

が,2個はダメなのです.トークンについては,第 33章でもっと説明をします)。ですので,

“\startline”という名前のマクロを新たに作って,これを\parの代わりに,\let

の 2個目のインプットとして使うことにします:

1 \def\startline{\par\noindent}

2 \let^^M=\startline

\startlineの中には \noindentを入れてあるので,\parindentがどれだけかと

いうのは関係ありません。したがって,マクロの定義の中で \parindent=0ptとす

る必要はありません。以上から,\beginCodeマクロを書く試みは,こんな感じにな

るでしょう:

1 \def\beginStubbornCode{\displaybreak

2 \begingroup

3 \obeylines\obeyspaces

4 \let^^M=\startline

5 \codefont}

6 \def\endStubbornCode{\endgroup\displaybreak}

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 110: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

102 第 16 章 詩やプログラムリスト用のマクロを作る

これはかなり良さげに見えます。実際,マクロそのものは,さっき「解答」として

提示したものと同じです。

でも,“\beginStubbornCode”は,私たちが望むようには動いてくれません。行頭のスペースは無視されるし,フォントも変わらないし,各行は\parindentだけイン

デントされます。

これを解決するには,\obeylinesと\obeyspacesのルールが有効な範囲の中で,

“\beginCode”と “\endCode”とを定義します。でも,\obeylinesと\obeyspaces

が文書全体に影響を及ぼしてほしくはないので,マクロはグループの中に入れる必要

があります。通常,グループの内部でマクロを定義した場合には,その当該マクロの

定義は,グループを閉じると消えてしまいます。なので,定義を \globalにする必

要があります:

1 \def\codefont{\tt}

2 \def\startline{\par\noindent}

3

4 {\obeylines\obeyspaces%

5 \global\def\beginCode{\displaybreak%

6 \begingroup%

7 \obeylines\obeyspaces%

8 \let^^M=\startline%

9 \codefont}%

10 \global\def\endCode{\endgroup\displaybreak}}

“\global”は TEXのプリミティブです。これは,コントロールシーケンスの新た\global

な意味を,ローカルではなくて「グローバル」にしたいときは,いつでも使えます。グローバル

グローバルというのは,新たな意味が,グループが終了しても取り去られずに,サ

インボードの一番内側の層にまで到達するということです。コントロールシーケン

スに新たな意味を与えるものの例としては,\defでマクロを定義したり,\letでク

ローンを作ったり,「情報屋さん」に新たな情報を提供したりといったものがありま

す*原註1)。

\beginCode と \endCode を定義したところでは \obeylines と \obeyspaces が

有効になっているので,行頭のスペースは全部取り除いて,あと “%”を使って行末の end-of-line 文字も取り除いています。これでスペースはもうないので,TEXは余計なスペースをタイプセットすることは出来ません。

“\global\def”とタイプするのは指が疲れるという場合には,“\gdef”という名\gdef

前の TEXのプリミティブが,\global\defと同義です。本章の残りの部分では,プ

ログラムリストや詩のためのサンドイッチ型マクロの微調整の仕方について,示すこ

とにします。

16.5 プログラムリスト内の改ページを制御する

プログラムリストの途中でTEXが新しいページを開始するのを防ぎたいとしましょう。その場合には,\startlineに plain TEXのマクロである “\nobreak” †訳註1)を付\nobreak

け加えましょう:

1 \def\startline{\par\nobreak\noindent}

*原註1) “\global”は,代入を,ローカルではなくてグローバルにするのにも,使えます(TEXbook の 275

頁〔邦訳 368 頁〕を参照)。†訳註1) ありゃりゃ。Victor Eijkhout さんっっっ!

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 111: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

16.6 コードの行間の余分なスペースを削る 103

\nobreakというコントロールシーケンスは,TEXが 2つの段落の間に改ページを入れないように強制します。

TEXはこれで,\beginCodeから \endCodeまでの間のものをすべて,そのページ

がどんなに長くなろうとも,同一ページに入れます。でも,プログラムリストが長い

場合には,途中で新たなページを開始したくなって,しかもその開始場所を制御し

たくなるでしょう。簡単な方法は,新たなページを開始したいところで,その行に

“\eject”だけをタイプすることです: \eject

1 \beginCode

2 ...

3 last line on the old page

4 \eject

5 first line on the new page

6 ...

7 \endCode

\ejectは plain TEXのマクロで,TEXに強制的に現在のページを終了させて,新たなページを開始させるものです。\ejectはまた,そのページ上の垂直方向のグルー

を伸ばすことによって,テキストをページ下部へと引き下げます。グルーを引き伸

ばしてほしくなければ,\ejectではなくて,10.4節で作った “\newpage”マクロを使ってください。

16.6 コードの行間の余分なスペースを削る

plain TEXは \parskipのグルーを “0pt plus 1pt”としています。プログラムリストの各行は個々の段落として扱われているので,その行間には \parskipのグルー

が入っていて,これは伸張可能です。ページを埋めるのに十分なだけのテキストがな

い場合には,TEXはそれまでのグルーを 1ポイントを上限に引き伸ばします(その結果,ページの見映えはおかしくなります)。TEXがこのグルーを引き伸ばさないことを確実にするには,\beginCodeの中で \parskipを “0pt”にします:

1 {\obeylines\obeyspaces%

2 \global\def\beginCode{\displaybreak%

3 \begingroup%

4 \parskip=0pt%

5 \obeylines\obeyspaces%

6 \let^^M=\startline%

7 \codefont}}

16.7 プログラムリスト内のフォントを変更する

\beginCodeマクロのナイスな特徴のひとつは,フォントを変えられることです。

落とし穴は,コードに余計なスペースが忍び込まないように気をつけることです。そ

れで,フォント変更マクロがどこで終わるのかを TEXに示すのに,スペースを使うのではなくて,単語の両端をブレスで囲むか,またはインプットを取れるフォント変

更マクロを書くようにします。

次の例は,この両方の TEXniqueを示しています。“\slant”はインプットを取りますが,それは,\slフォントでタイプセットされるべきテキストです:

1 \def\slant#1{{\sl#1}}

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 112: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

104 第 16 章 詩やプログラムリスト用のマクロを作る

1 \beginCode

2 to square {\sl{:side}}

3 repeat 4 [forward \slant{:side} right 90]

4 end

5 \endCode

to square :side

repeat 4 [forward :side right 90]end

16.8 詩の中で単語間スペースのサイズを制御する

\beginCode マクロの中の \obeyspaces による wysiwyg 効果というのは,\tt

フォントの単語間スペースにはグルーが含まれていないという事実に頼っています。

それで,伸縮しないわけです。詩やプログラムリストで,他のフォントを使って同様

の効果を得るには,TEXのスペースから,グルーを取り除きます。TEXのプリミティブである “\spaceskip”と “\xspaceskip’’とが,単語間のスペー\spaceskip

\xspaceskip スのサイズと,センテンス間のスペースのサイズに影響を与える「情報屋さん」です。

TEXの初期状態では,これらはどちらもゼロです(0pt plus 0pt minus 0pt)。これら

がゼロのときには,TEXはスペースをどれだけにすべきかを決めるのに “\tolerance”を使います。でも,これら 2つにゼロでないディメンションやグルーを提供すると,それが TEXの通常の振る舞いよりも優先されます。これらがゼロでないときには,TEXは \spaceskipを単語間スペースに使い,\xspaceskip

をセンテンス間のスペースに使います。これらのスペースは,お好きなように大き

くしたり小さくしたりすることが出来ます。TEXの \rmフォントにおける単語間の

(伸縮なしの)自然なスペースは 0.333emで,センテンス間の(伸縮なしの)自然なス

ペースは普通 0.444emとなっています。比較のために言いますと,\ttフォントの

単語間スペースは 0.525emで,センテンス間スペースはその 2倍の 1.05emです(付

録 Aは,TEXのフォントについて,この特徴を含めた種々の特徴について扱っています)。

次の “\rigidspaces”マクロは,これら 2つの「情報屋さん」に,新たな情報を提供するものです:

1 \def\rigidspaces{\spaceskip=0.3333em

2 \xspaceskip=0.5em\relax}

\rigidspacesは,部品として使うために作りました。次の “\beginRigidVerse”マクロの材料です:

1 {\obeylines\obeyspaces%

2 \global\def\beginRigidVerse{\displaybreak%

3 \begingroup%

4 \obeylines\obeyspaces%

5 \let^^M=\startline%

6 \rigidspaces}%

7 \global\def\endRigidVerse{\endgroup\displaybreak}}

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 113: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

まとめと関連事項 105

まとめと関連事項

“\obeylines”はTEXに,end-of-line 文字を \parへと変換させます。“\obeyspaces”は TEXに,コントロールワードの次のスペースも含めてすべてのスペースをタイプセットするようにさせます。この 2つのマクロによって,wysiwyg効果を作ること

が出来て,それはプログラムリストや詩をタイプセットするのに有用です。

\obeylinesや \obeyspacesは,おにぎり型のマクロの中では使えないのですが,

それは,TEXはマクロを展開して\obeylinesや \obeyspacesを発見するよりも前

に,マクロのインプットを読み込んで,通常のルールを適用してしまうからです。で

すので,詩やプログラムリストのためのマクロを書くには,サンドイッチ型の構造を

使わなければなりません。

同じマクロの中で \obeylinesと \obeyspacesを組み合わせると,予期せぬ副作

用が生じます。本章では,この 2つのマクロを一緒に使った際に遭遇すると思われるマチガイについてと,それを修正する方法とについて,説明をしました。

“\global”を使うと,新たな情報を一番内部の層のサインボードにまで到達させることが出来るので,グループを閉じても,変更がストップしません。

第 13章では,左右の余白にホワイトスペースを付加する方法について示していま

す。第 14章では,黒丸付き・番号付き・アルファベット付きなどさまざまな箇条書

きの作り方を説明しています。第 15章は,用語集や参考文献リストのための段落形

状の作り方について示しています。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 114: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

106 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 115: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 17章 見出し用のマクロを作る

文書にはすべて,少なくとも一つ見出しがあります。それはつまり,何らかの表題

です。多くの文書には,他の種類の見出しもあります。章,節,小節,段落,等々で

す。本章では,さまざまな見出しの作り方について,シンプルなものとちょっとだけ

凝ったものとを説明して,あと,TEXにナンバリングしてもらう方法についても,説明をします。

本章の説明は,以下について既にお読みになっていることを前提にしています:

▪ 情報屋さん(3.10節)

▪ 大きいフォントのロード(第 7章)

▪ スキップの使い方(第 9章と第 10章)

▪ おにぎり型マクロ構造(第 12章)

▪ \bigbreak(12.5節)

LATEXには,見出しのマクロが7種類あります.“\part”,“\chapter”,“\section”,“\subsection”,LATEX2.09Notes

“\subsubsection”,“\paragraph”,“\subparagraph”です.どの文書スタイルでどのマクロが使えるのかについてや,これらのマクロの使い方については,ランポートさんの本に記述があります.違った振る舞いをするような見出しマクロが必要なときには,本章の TEXniqueを使って,

自分用のマクロを書くことが出来ます.

17.1 シンプルな見出し

シンプルな見出しを作るには,おにぎり型のマクロが使えて,少しのスペース分

\vskipして,そしてそのインプットをボールド体でタイプセットするようにしてみ

ます。見出しは左余白に寄せるべきなので,\noindentも使いましょう:

1 \def\heading#1{\bigbreak

2 \noindent{\bf#1}

3 \medskip}

使ってみるとこんな感じです:

1 \dots\ controlling criminal behavior.

2

3 \heading{Decapitation, Then and Now}

4

5 ‘‘Off with their heads’’ is a foolproof (but

6 rather extreme) method of preventing recidivism.

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

107

Page 116: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

108 第 17 章 見出し用のマクロを作る

. . . controlling criminal behavior.

Decapitation, Then and Now

“Off with their heads” is a foolproof (but rather ex-treme) method of preventing recidivism.

大きいフォントを使うのも同じように簡単です。ボールド体に変える前に,サイズ

を変えるようにしてください:

1 \def\largeheading#1{\bigbreak

2 \noindent

3 {\large\bf#1}

4 \medskip}

“\large”を使うと,見出しで異なる書体を使うことが可能になります。\largeマ

クロを作るには,8.6節の \eightpointをモデルに使って,8ポイントのフォントセットを,大きなフォントのセットと置き換えてください。見出しの中で(ギリシア文字と

か数式シンボルなど)数式モードを使う必要がある場合には,27.4節の \twelvepoint

マクロの該当部分をモデルに使ってください。

17.2 章見出し

章は常に新しいページから始まるので,私たちの “\chapter”マクロは,\newpageで始めましょう。見出しをページの上端に置きたいのであれば,これで準備完了で

す。でも,\headingや \largeheadingと同じようなパターンを使って,まず 1インチ \vskipしたいという場合には,「上端だとスキップしない」マチガイに陥りま

す。次の “\WontSkipChapter”の見出しは,ページの上端にタイプセットされてしまい,1インチ下がってはくれません:

1 \def\WontSkipChapter#1{\newpage

2 \vskip 1in

3 \noindent{\Large\bf#1}

4 \bigskip}

上端だとスキップしてくれない、というマチガイ

 ページの上端では,グルーは常に消えてしまいます。

TEXは,改ページをする際に,前のページの最後のテキストと次のページの最初のテキストとの間のグルーを,捨ててしまいます。実質的にはあらゆる状況において,

これは正しい振る舞いなのですが,それは,すべてのページは同じ場所から始まるべ

きだからです。

これを解決するには,\vskipではなくて plain TEXのマクロである “\vglue”を使\vglue

\hglue います。\vglueと,その水平版の “\hglue”は,消えてしまわないスペースを作ります。次が,改良した “\chapter”マクロです。これは,章のタイトルをインプットとして取ります:

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 117: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

17.3 TEX に表題と著者名を覚えておいてもらう 109

1 \def\chapter#1{\newpage

2 \vglue 1in

3 \noindent{\Large\bf#1}

4 \vskip 2\bigskipamount}

17.3 TEXに表題と著者名を覚えておいてもらう

タイトルと著者名をインプットとして取るような “\titlepage”マクロを書くことも出来ます。でも,その際には,著者名をタイトルのスロットに入れてしまった

り,逆にタイトルを著者名のところに入れたりとかしないように,気をつけないとい

けません。どっちがどっちなのかは,TEXに覚えておいてもらったほうが簡単です。次の 2つのマクロはどちらも,インプットを 1つ取って,そのインプットを使って

もうひとつの新たなマクロを定義するものです。“\title”のインプットは文書の表題で,“\author”のインプットは文書の著者名です:

1 \def\title#1{\def\theTitle{#1}}

2 \def\author#1{\def\theAuthor{#1}}

この\titleと\authorは次のように使います:

1 \title{Methods of Spinning Gold}

2 \author{Rumplestiltskin}

これで,テキスト内で \theAuthorとすると,TEXはこのマクロを “Rumplestiltskin”†訳註1)へと展開します。

私たちの “\titlepage”マクロでは,インプットの代わりに,この \theTitleと

\theAuthorとを使います。タイトルページの上端にホワイトスペースを入れるのに,

ここでも \vglueを使いましょう:

1 \def\titlepage{\vglue 1in

2 \beginCenter

3 {\Large\bf\theTitle}

4 \vskip 2\normalbaselineskip

5 {\large\theAuthor}

6 \endCenter

7 \newpage}

(“\beginCenter”. . . “\endCenter”マクロは 13.3節で作ったものです.)

これで,入力ファイルはこんな感じになるでしょう:

1 \input macros

2 \title{Methods of Spinning Gold}

3 \author{Rumplestiltskin}

4 \titlepage

5

6 Spinning flax into gold is as easy as pie, though

7 few ordinary mortals know the secret \dots

フギャー!

“\titlepage”とする前に表題と著者名を特定しておかないと,TEXは,\theTitleと \theAuthorの 2つのコントロールシーケンスが未定義だと文句を言います。

†訳註1) 17.3節にはこの名前が 3回出て来て,どれも “Rumplestiltskin”となってるのですけど,“Rumpel-stiltskin” じゃないのかな。グリム童話の “Rumpelstilzchen” がネタですよね。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 118: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

110 第 17 章 見出し用のマクロを作る

17.4 TEXにナンバリングしてもらう ―― 見出し用のカウンタ

多くの本では章に番号が振られています。節に番号が振られている文書もありま

すし,更には,小節にまでナンバリングがされているものもあります。テキストの一

部を追加したり移動したり書き直したりするたびに,章や節や小節の番号を手作業で

振り直すだなんて,めちゃくちゃ面倒です。

ラッキーなことに,TEXがこの作業をみんなやってくれます。新たなにカウンタを作って,それを \advanceすればよいのです。\newdimenが新しいディメンション

の「情報屋さん」を作り,\newskipが新しいグルーの「情報屋さん」を作るという

のと同じように,“\newcount”が,新しい数値の「情報屋さん」を作り出します。\newcount

次が,新しく作った “\sectionnumber” カウンタと,それを使った番号付きの“\section”マクロです。\sectionのインプットは,節の見出しです:

1 \newcount\sectionnumber

2

3 \def\section#1{\bigbreak

4 \advance\sectionnumber by 1

5 \noindent{\bf\the\sectionnumber. #1}

6 \medskip}

\newcountは,新しく作った「情報屋さん」に,自動的に “0”を提供します。TEXは入力テキストで \sectionを見つける度に \sectionnumberに “1”を加えるので,\sectionnumberがゼロから始まるというのは,お誂え向きなわけです。

“\the”はTEXのプリミティブで,「作業屋さん」です。\theは「情報屋さん」からの情\the

報を受け取って,その情報をタイプセットします。ですので,“\the\sectionnumber”の意味は,「\sectionnumberからの情報をタイプセットして」ということです。

TEXの数値の「情報屋さん」は,整数しか扱えなくて,しかも 0, 1, 2, 3, . . . , 16, 384までと,−1,−2,−3, . . . ,−16, 384までです †訳註2)。分数や小数は扱えません。

複数のカウンタを使う

エンジニアの人たちは数学者と同じくらい数字が好きで,彼らの文書は決まって 4段階のセクション・ナンバリングがしてあります。カウンタは整数しか扱えないの

に,“5.13.8.6”みたいな数値はどうやって作ればよいのでしょうか? 簡単です。カウンタを 4つ使えばいいのです:

1 \newcount\chapternumber

2 \newcount\sectionnumber

3 \newcount\subsectnumber

4 \newcount\subsubsectnumber

“\subsubsection”マクロには沢山のカウンタを詰め込まないといけないので,そのためのマクロも作りましょう:

1 \def\theSubsubsectionnumber{%

2 \the\chapternumber.%

3 \the\sectionnumber.%

4 \the\subsectnumber.%

5 \the\subsubsectnumber}

†訳註2) 14.5節のところにも書きましたけど,カウンタが扱えるのは多分,ホントは±231 の間の整数です。TEXbook(p.118)にも “TEX has 256 registers called \count0 to \count255, each capable ofcontaining integers between −2147483647 and +2147483647, inclusive; i.e., the magnitudesshould be less than 231.” とあります。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 119: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

17.4 TEX にナンバリングしてもらう ―― 見出し用のカウンタ 111

“%”は TEXに,開きブレスの後とピリオドの後の “ end-of-line 文字”を無視させます。TEXは行頭のスペースは無視しますので,これらのカウンタの間には,スペースがタイプセットされることはありません*原註1)。

これで,“\subsubsection”マクロが書けます。このマクロは,自分自身のカウンタを増やして,それから,全部の数字とタイトルとをタイプセットします。\subsubsection

のインプットは,小々節の見出しです:

1 \def\subsubsection#1{\medbreak

2 \advance\subsubsectnumber by 1

3 \noindent

4 {\bf \theSubsubsectionnumber \quad #1}

5 \smallskip}

1 \dots has been established here in

2 Section 5.13.8.5.

3

4 \subsubsection{Extensive Substrata}

5

6 Investigation of the subterranean strata showed

7 conclusively that \dots

. . . has been established here in Section 5.13.8.5.

5.13.8.6 Extensive Substrata

Investigation of the subterranean strata showed con-clusively that . . .

新たに章や節,小節を開始するときには毎回,下位のレベルのセクションカウンタ

を,ゼロにリセットしないといけません。それで,この仕事もマクロの中に入れてお

きましょう:

1 \def\numberedChapter#1{\newpage

2 \advance\chapternumber by 1

3 \sectionnumber=0

4 \subsectnumber=0

5 \subsubsectnumber=0

6 \vglue 1in

7 \beginCenter \Large\bf

8 Chapter \the\chapternumber\break

9 #1

10 \endCenter

11 \vskip 2\bigskipamount}

\sectionマクロでは,subsectionカウンタと subsubsectionカウンタだけをゼロにリセットすればよく,\subsectionマクロでは,subsubsectionのカウンタだけをリセットすれば済みます。

数字の代わりにアルファベットを使う

セクションを表わすのに数字じゃなくてアルファベットを使っているようなスタ

イルもあります。TEXでも同様に,そういうことも出来ます。“\the”の代わりに,

*原註1) TEX は次の 2 つの条件が真でない限り,行頭のスペースを常に無視します。TEX が水平モードにいて,且つ “\obeyspaces” が有効であれば,TEX は行頭のスペースをタイプセットします。TEX が “\subsubsection” を見つけたときにそういう状態だということは,まずありません。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 120: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

112 第 17 章 見出し用のマクロを作る

フォント・テーブルの文字をタイプセットするプリミティブである “\char”を使い\char

ましょう。

\charにはどの文字かを指定するインプットが必要で,私たちが用いるインプット

は,フォント・テーブルにおける文字の位置です。この「位置」は,文字の ascii番

号と同じです。Aは ascii番号が 65で,Bが 66,Cが 67,と続きます。ですので,新たな “\ASCIInumber”カウンタは 64から始めます。次の “\LetteredSection”のインプットは,節の見出しです:

1 \newcount\ASCIInumber \ASCIInumber=64

2

3 \def\LetteredSection#1{\bigbreak

4 \advance\ASCIInumber by 1

5 \noindent{\large\bf

6 \char\ASCIInumber. #1}

7 \medskip}

小文字のアルファベットを使うなら,“\asciinumber”を 96から始めてください。aは ascii番号が 97で,bは 98…,となっています。

17.5 見出しの形状を変える

もちろん,見出しを \raggedrightにすることも出来ます。このコントロールシー

ケンスを,マクロの定義の中に ――しかもグループの中に―― 入れましょう:

1 \def\raggedHeading#1{\bigbreak

2 \noindent

3 {\raggedright\bf#1}

4 \medskip}

長い見出しタイトルの 2行目を,左余白にまで折り返すのではなくて,1行目の 1文字目の真下から始めるには,見出しタイトルを vboxに入れます。第 28章で,vboxの使い方一般については説明をしていて,第 29章で,そのサイズの制御の仕方につ

いて説明しています。

まとめと関連事項

本章では,見出し用のマクロの作り方について説明をしました。シンプルな見出し

では,\noindentしたタイトルをボールド体でタイプセットして,タイトルの上下を

\vskipしました。ちょっとだけ凝った見出しとしては,\largeなフォントにして,

新しいページを開始するようにしました。“\vglue”を使うと,ページ上端でも消えないグルーで “\chapter”マクロや “\section”マクロを始めることが出来ます。

“\title”マクロや “\author”マクロを使うと,TEXにこれらの情報を覚えておいてもらって,それを “\titlepage”の正しい位置に配置することが出来ます。TEXは,カウンタを使って章や節に自動的に番号を振ることも出来ます。お望みならば,

このカウンタを使って,数字ではなくアルファベットを振るようにも出来たのでした。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 121: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 18章 ヘッダやフッタ用のマクロを作る

ほとんどの文書にはページ番号が振られていますが,もしかするとこれをページ

上の別の場所に移動したかったりとか,またはメニューや 1枚ものの手紙,レジュメなんかだったら,取り除きたかったりするかも知れません。多くの文書ではまた,

各々のページの「ヘッダ」や「フッタ」に印刷をして他の文書と見分けるための情報

が,必要になります。

その名前が示唆するように,「ヘッダ」はページ上端の行で,本文よりも上の部分で

す。「フッタ」は下端の行で,本文よりも下の部分になります。ヘッダは時に “runninghead”と呼ばれることもあり,フッタも “running foot”と言われることがあります。本章では,ヘッダやフッタでいろいろなことをする方法について,説明をします。

本章の説明は,以下について既にお読みになっていることを前提にしています:

▪ フォントの変更(第 6章)

▪ “fil”の使い方,特に “\hfil”(第 10章)

▪ 「情報屋さん」と “\the”の使い方(14.5節または 17.4節)

18.1 ヘッダやフッタを変更する

plain TEXの 2つの「情報屋さん」が,ヘッダとフッタの中身を管理しています。それは,“\headline”と “\footline”です。数値とかディメンションとかグルーの情 \headline

\footline報ではなくって,この「情報屋さん」が扱うのは「トークン・リスト」です。「トー

クン」というのは,1個の文字か,または 1個のコントロールシーケンスの,どちらかです。よって,トークン・リストというのは,簡単には,文字やコントロールシー

ケンスの並びのことです。

ヘッダやフッタを作る際には TEX は,\headline や \footline からの情報を,

\hsizeと同じ幅の hbox (horizontal box)へと入れます。ですので,空いているスペー

スをグルーで埋めるのを忘れないようにしないといけません。

ここでは,フッタは空にして,ヘッダには右寄せにしたページ番号を入れること

にしましょう。plain TEXのマクロである “\folio”が,ページ番号をタイプセット \folio

します。TEXはページを分割する際に(またそのページを.dviファイルに送る際に)違

うフォントを使っているかも知れませんから,ページ番号用に使いたいフォントを,

ちゃんと指定しておきましょう:

1 \headline={\hfil \twelverm\folio}

2 \footline={\hfil}

ヘッダやフッタには,テキストを入れることも出来ます。例えば,ヘッダには文書

名を,フッタにはダッシュで挟んだページ番号を入れたいかも知れません(フォント

を指定するのを忘れずに):

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

113

Page 122: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

114 第 18 章 ヘッダやフッタ用のマクロを作る

1 \headline={\twelvebf Making the News\hfil}

2 \footline={\hfil\tenrm---\folio---\hfil}

LATEXには,“\headline”も “\footline”も “\folio”もありません.文書のヘッダやフッLATEX2.09Notes

タを変更するには,ランポートさんの本に書いてある “\pagestyle”宣言を使ってください.

18.2 ローマ数字のページ番号を作る

“\folio”はとりわけ賢いマクロです。このマクロは,アラビア数字のページ番号も,ローマ数字のページ番号も振ることが出来ます。\pageno が負だと \folio は

ローマ数字をタイプセットし,\pagenoが正のときはアラビア数字をタイプセット

します。

plain TEX のページ番号の「情報屋さん」は “\pageno” という名前です。文書に\pageno

ローマ数字のページ番号を振る場合には,本文の前に次のようにタイプします:

1 \pageno = -1

TEXはページ番号をローマ数字でタイプセットするだけでなく,ページ番号の「情報屋さん」を増やす代わりに減じていきます。アラビア数字に戻したい場合には,

“\pageno=0”か “\pageno=1”とタイプします。この TEXniqueはもちろん,通常の方法でページ番号を変更するのにも,同じよう

に動作します。ある文書が(または文書の一部が)第 10ページから始める必要がある場合には,適切な場所で “\pageno=10”とタイプしてください。または,途中の 10ページ分が後から補充されるのであれば,足りないページの前で次のようにタイプし

ます:

1 \advance\pageno by 10

ローマ数字とかアラビア数字とかを特定することなく,単にページ番号そのもの

が必要なときには,“\the\pageno”を使うか,次のようなページ番号マクロを作ります:

1 \def\thePagenumber{\the\pageno}

LATEXでローマ数字のページ番号にするには,“\pagenumbering{roman}”とタイプします.LATEX2.09Notes

アラビア数字のページ番号に戻すには,“\pagenumbering{arabic}”とタイプします.ページ番号を変えるには,“\setcounter”や “\addtocounter”を使います.

18.3 ヘッダやフッタ用のマクロ

時には,ページの進行に合わせてヘッダを変えたくなったりもするでしょう。多く

の文書では,節や章の番号とタイトルとがヘッダに入っています。ほとんどの書籍

は,奇数ページと偶数ページとでヘッダを変えています。この手の変更を実現するに

は,マクロを使います。

まず,“\headingfont”マクロを作ることから始めましょう。このマクロがあれば,特定の文書用にマクロをカスタマイズする際に,ヘッダのフォントだけを変更するの

も,容易になります。また,\headingfontがあると,文書の他の場所でも同じフォ

ントを一貫性を保って使うことが,楽になります。いくつかの \tenbfを \tenrmと

か \twelvebfに変更するためにマクロの中を探し回るなんていうのは,時間の使い

方として,楽しいものではありません:

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 123: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

18.3 ヘッダやフッタ用のマクロ 115

1 \def\headingfont{\tenbf}

こうしてから,\headlineそのもの用のトークン・リストを書きましょう。この

リストは,ページ番号だけでなく,節の番号と節のタイトルをも,ヘッダに入れるも

のです:

1 \headline={\headingfont

2 Section \the\sectionnumber \quad \theSectionTitle

3 \hfil\folio}

“\sectionnumber”は17.4節で作った,数値の「情報屋さん」です。“\theSectionTitle”は,次の “\TitledSection”マクロで定義します。\TitledSectionは,節の見出し

をインプットとして取ります:

1 \def\TitledSection#1{\bigbreak

2 \advance\sectionnumber by 1

3 \def\theSectionTitle{#1}

4 \noindent{\bf \the\sectionnumber. #1}

5 \medskip\nobreak}

\TitledSectionへのインプットが,“\theSectionTitle”の定義となって,そしてそれがヘッダでタイプセットされるわけです。例えば,次のような入力からは,以

下のようなヘッダが作られます:

1 \TitledSection{Boxes for the Peerage}

2 At the races, dukes and earls are eligible for \dots

Section 3 Boxes for the Peerage 115

フギャー!

ここで \headlineは \theSectionTitleという名前のマクロを使っているので,

TEXが最初のページを完成させる前に確実に,このマクロを定義しておかないといけません。2つの可能性があり得ます:

▪ 文書の最初の節が,第 1 ページから始まるのであれば,\TitledSection が

\theSectionTitleを定義してくれます.

▪ 最初の節が始まるのが第1ページよりも後の場合には,最初の\theSectionTitle

はユーザーが定義しておかないといけません(こうしておけば,\theSectionTitle

が未定義のせいで TEXが第 1ページでしゃっくりするのを防げます)。

お望みであれば,この定義は空っぽでも構いませんが,でも,とにかく存在してな

いとダメです。文書の最初のほうの,本文よりも前に,次の定義を置いといてくだ

さい:

1 \def\theSectionTitle{}

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 124: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

116 第 18 章 ヘッダやフッタ用のマクロを作る

18.4 ヘッダと本文との間隔を変える

TEXの初期状態では,“headline”とページ本文の第 1行目との間の,ベースライン間の間隔は 24ptになっています。言い換えると,ヘッダのベースラインは,ペー

ジ本文の第 1行目のベースラインの,24pt上にあります。この距離を変更するには,プリミティブのグルーである “\topskip”という名前の「情報屋さん」を変更します。\topskip

TEXがページを組み立てる際には,ページは 3つの部分から成ります。ヘッダ,本文領域,フッタです(第 11 章参照)。TEXはこれらの部分のそれぞれをボックスに入れて,上から下へと積んでいき,ヘッダと本文領域の間には余分なスペースを入れ

ます。

\topskipグルーは,本文領域の上端に入ります。より正確には,\topskipが指

定しているのは,本文領域の上端と,本文第 1行目ベースラインとの距離です(第 1

行目の高さが \topskipよりも大きい場合には,本文領域に収まるまで TEXは第 1行目を押

し下げます)。

plain TEX は,“\topskip=10pt” にセットしています。この意味は,それぞれのページの 1行目のベースラインは同じ場所から始まるということです。つまり,本文領域の vboxの上端から 10pt下から始まる,ということです。TEXは本文領域のvboxの上端のグルーを調整して,1行目のベースラインが正しい位置に来るようにします。

以上から,ヘッダと本文領域との間にもっとスペースを入れるには,\topskipを

変更すればよいわけです:

1 \topskip=2\baselineskip

これに対応するような “\footskip”といった「情報屋さん」は存在しないのですが,plain TEXのマクロである “\makefootline”の中の \baselineskipを変えるこ\makefootline

とが出来ます。クヌース先生による \makefootlineの定義はこうです:

1 \def\makefootline{\baselineskip=24pt

2 \line{\the\footline}}

“\topskip”の変更はプリアンブルでのみ行ってください.LATEXには,“\footskip”,“\footheight”,LATEX2.09Notes

“\headsep”,“\headheight”という名前の「情報屋さん」もありますが(ランポートさんの本に記述があります),これらの変更はプリアンブルでのみ行ってください.これらの「情報屋さん」を変える際には,LATEXの \setlengthを使ってください.

フギャー!

テキストを \vbox に入れるようなマクロを使うと,ページの最初に来るのがそ

の \vboxだった場合には,\topskipが消えてしまったように見えます(第 28章から

第 30章で,TEXのボックスについてとその使い方について説明をしています)。

topskipが消えちゃった、というマチガイ

  TEXはいつでも \topskipグルーを調整しています。ページの第 1行目が通常よりも高かった場合には,\topskipグルーはそれに応じて縮みます。\vbox

のベースラインは,そのボックスの中のテキストの一番下の行にあるので,2行以上入っている \vboxは \topskipグルーとオーバーラップして見えることにな

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 125: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

18.5 ページ番号の偶奇でヘッダを変える 117

ります。ですので,\vboxがページの最初に来て,それが 1行以上の行を含む場合(普通はそうです)には,\topskipグルーが縮むか消えるかします。

解決法は簡単です。“\vbox”を “\vtop”に代えてください。第 28章で,この 2つのボックスの高さの違いについて説明しています。「ベースラインが潰れちゃう」マ

チガイに陥らないように,\vtopボックスのテキストの最後には “\strut”を入れて \strut

ください。

18.5 ページ番号の偶奇でヘッダを変える

出版業界では,右ページは “recto”で,左ページは “verso”と言います。レクトは奇数ページに,ヴェルソは偶数ページになります。レクトとヴェルソで異なるヘッダ

を入れるには,条件文(conditional)を使う必要があります。

条件文は第 3のタイプの「便利屋さん」です。条件文の指示のパターンは,4つの部分から成ります。第 1に,真か偽かのどちらかで回答が出来るテストの部分があります。例えば,

\ifodd\pageno

としたとすると,\pagenoの情報が奇数であれば真で,その情報が偶数であれば

偽,ということになります。

第 2に,条件文は,回答が真であれば何かをします。第 3に,回答が偽の場合も,何かをすることが出来ます。そして第 4に,“\fi”が,条件文がどこで終わったかを示します。よって,全体のパターンは次のようになります:

\ifodd\pageno これやってよ\else あれやってね\fi

“\ifodd”,“\else”,“\fi”は皆,条件文の「便利屋さん」です。\ifoddはテス

トをするものなので,これを「テスト屋さん †訳註1)」と呼ぶことにしましょう。TEX テスト屋さん

には 17の「テスト屋さん」がいます。それらは全部プリミティブです。“\newif”を \newif

使うと,新たな「テスト屋さん」を作ることも出来ます。

“\else”と “\fi”は,補佐の「便利屋さん」です。\elseは,テストの回答が「偽」 \else

\fiのときに何をするかを示します。\fiは,条件文の指示がどこで終わるかを示してい

ます。\elseはオプションですが,どこで条件文が終わるのかは,いつも\fiを使っ

て明示しないといけません。\elseと \fiは,どちらもプリミティブです。

奇数ページと偶数ページとで異なるヘッダを作るのに,“\ifodd”を使いましょう。 \ifodd

次の \headlineの意味を翻訳すると,以下のようになります。「ページ番号が奇数な

ら,\RightHeadを実行して,そうでなければ,\LeftHeadを実行してね」:

1 \headline={\headingfont

2 \ifodd\pageno \RightHead

3 \else \LeftHead

4 \fi}

“\RightHead”と “\LeftHead”は普通に定義されたマクロです。テクニカルレポートのヘッダならば,こんな感じに指定されてるでしょう:

†訳註1) 原著でも “tester”。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 126: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

118 第 18 章 ヘッダやフッタ用のマクロを作る

1 \def\LeftHead{\folio \hfil Section \the\sectionnumber}

2 \def\RightHead{\theSectionTitle \hfil \folio}

すべてのページが \LeftHeadか \RightHeadを使うので,マクロをパッケージに

する際には忘れずに,これら 2つのマクロの初期設定をしておくようにします(たとえ空っぽ〔{ }〕にしておくとしても)。

LATEXには,LATEXの通常のヘッダを変更するのに使う “\markright”と “\markboth”といLATEX2.09Notes

う名前のマクロがあります.これらについては,ランポートさんの本に記述があります.

18.6 表題ページのヘッダを空にする

表題ページのヘッダを空にするには,そのページをグループの中に入れて,

“\headline={\hfil}”とします。次に,グループを閉じる前にTEXが確実に改ページするようにします。TEXはページを組み立ててそれを.dviファイルに送る際に,

\headlineからの,現在の情報を使います。ですので,グループを閉じる前に\eject

か \newpageかを使って明示的に改ページをするか,または TEXが確実に次のページに行くのを待つか,どちらかにしてください*原註1)。

18.7 複数行に亘るヘッダやフッタ

ヘッダやフッタで複数の行が必要な場合には,\headlineや \footlineの内部で

vboxをネストします。vboxの上部に “\vss”グルーを置いて,それから,必要な数の “\line”を vboxの内部にネストさせます。30.4節で,ボックスの内部にボック\line

スをネストさせる方法について,説明をします。

まとめと関連事項

本章では,ヘッダやフッタを作るのに “\headline”と “\footline”を使う方法について示しました。ヘッダやフッタで使うフォントはいつも,TEXに指定してください。大抵のヘッダないしフッタにはページ番号が含まれますが,これは “\folio”か “\the\pageno”で得られます。ページ番号は,ローマ数字かアラビア数字のどちらかで,振ることが出来ます。

ヘッダにはしばしば,章や節のタイトルを含ませる必要があります。本章で作っ

た “\TitledSection”マクロは,自動的に “\theSectionTitle”を定義して,それをヘッダで現在の節のタイトルへと展開してくれます。

“\topskip”という「情報屋さん」が,ヘッダと本文領域との間のスペースを管理しています。\topskipグルーが消えてしまったように見えるときには,“\vbox”ではなくて “\vtop”というボックスを使ってください。レクトとヴェルソとでヘッダを変えるには,“\ifodd”という「テスト屋さん」を使います。表題ページでヘッダやフッタを空にするには,そのページと空の \headline

ないし \footlineとを,グループの中に入れてください。

次の章では,脚註の作り方について,説明をします。

*原註1) 表題ページのヘッダを空にするには,条件文を使うことも出来ます。“\newif”を使って,新たに“\iftitlepage”という「情報屋さん〔ママ〕」を作ります。\ifodd\pagenoを使ったのと同じように,\headlineの中で \iftitlepageを使います。それから,\titlepageマクロか \chapter

マクロの中に “\titlepagetrue” を入れて,フッタに “\titlepagefalse” を入れます〔ママ〕。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 127: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 19章 脚註用のマクロを作る

多くの文書には,何らかの脚註がついています。番号が振られている脚註もありま

すし,アスタリスクやダガーがついてる脚註もあります。本章では,脚註に関するさ

まざまな作業やスタイルの扱い方について,説明をします。

本章の説明は,以下について既にお読みになっていることを前提にしています:

▪ フォントサイズの変更,特に “\eightpoint”(8.6節)

▪ カウンタの作り方,進め方,使い方(14.5節または 17.4節)

▪ クローンの作り方(14.3節)

ランポートさんの本に書いてある,LATEXの “\footnote”マクロを使ってください.LATEX LATEX2.09Notes

の \footnoteマクロは,〔plain〕TEXの \footnoteマクロとは別のものです.

19.1 \footnoteを使う

“\footnote”は,plain TEXのマクロです。このマクロは,インプットを 2つ取り \footnote

ます。つまり,「参照符(reference mark)」(読者に,「ここに脚註があるよ」と教える,

数字や記号のこと)と,脚註のテキストとです。参照符を上付にするには,“^”を使って上添字にして,上添字全体を数式モードに入れてください:

1 Writing notes with the foot is a challenging

2 task, but people with no hands become quite

3 skillfull.\footnote{$^{*}$}{This feat boggles

4 the mind.}

Writing notes with the foot is a challenging task, butpeople with no hands become quite skillfull.∗

∗ This feat boggles the mind.

アスタリスクの他にあと 2つ,参照符として使われる記号があります。それは,ダガーとダブル・ダガーです。更にもう 2つ可能で,それは,パラグラフ・マークと,セクション・マークです:

† \dag

‡ \ddag

¶ \P

§ \S

これらのコントロールシーケンスのうちの必要な記号を,\footnoteの最初のイ

ンプットに使ってください(ここでも,記号を上付にするには,それを上添字にしてくだ

さい):

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

119

Page 128: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

120 第 19 章 脚註用のマクロを作る

1 \dots\ more bad jokes.\footnote{$^\dag$}{Which is

2 more likely to prick the ear: a sharp note or a

3 dagger’s point?}

. . . more bad jokes.†

† Which is more likely to prick the ear: a sharp note ora dagger’s point?

文書中で,脚註ごとにいちいち参照符をタイプしたい,というのでしたら,このア

プローチでもよいでしょう。でも,脚註に番号を振る場合には,このやり方はすぐに

面倒くさくなります。番号が重複してないかとか,飛ばしてないかとかを確認しない

といけませんし,更には,番号を途中で追加したり削除したりしたら,それもちゃん

と覚えとかなきゃならないですし。

19.2 TEXに計算してもらう ―― 脚註用のカウンタ

見出しとか番号付きの箇条書きとかで,カウンタを作ってそれを\advanceしたの

と同じように,脚註用にもカウンタを作ることが出来ます。まず,数値の「情報屋さ

ん」が必要です:

1 \newcount\notenumber

次いで,この “\notenumber”という「情報屋さん」を使って参照符を作るようなマクロを書きます。次の “\numberedFootnote”マクロは,インプットをひとつ取りますが,それは脚註のテキストです:

1 \def\numberedFootnote#1{%

2 \global\advance\notenumber by 1

3 \footnote{$^{\the\notenumber}$}{#1}}

“\global”を使って,脚註がグループの中に入る場合でも確実に\notenumberが

増加するようにしています。例えば,サンドイッチ型マクロで作られた引用文の中

とか,フォント変更のためのグループの中とかに,脚註が入るようなことがあり得

ます。

フギャー!

フォントの変更は,「脚註のフォントが違ってる」マチガイが起こる最適なチャン

スを,〔「マーフィーの法則」の〕マーフィーさんに進呈します。

脚註のフォントが違ってる、というマチガイ

 文書中で,別のフォントでタイプセットする部分に脚註が含まれると,脚註を

タイプセットするのにも,そのフォントが使われてしまいます。

1 {\sl People with a slanted view of life often

2 compensate by leaning to one side or the

3 other.\numberedFootnote{Tower, Lena: Getting the

4 Right Slant on Things.} This is called skew.}

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 129: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

19.3 脚註のフォントを変更する 121

People with a slanted view of life often compensate byleaning to one side or the other.1 This is called skew.

1 Tower, Lena: Getting the Right Slant on Things.

これを解決するには,脚註マクロ自体の中で,フォントを指定します。次の節で,

その方法を示します。

19.3 脚註のフォントを変更する

脚註はしばしば,本文よりも小さな字体でタイプセットされます。サイズは本文と

同じで構わないという場合であっても,「脚註のフォントが違ってる」マチガイは避

けたいでしょう。これはどちらも,簡単です。脚註マクロ自身の中に,フォントの指

定を入れればよいのです。次の “\fontedFootnote”もまた,脚註のテキストをインプットとして取ります:

1 \def\fontedFootnote#1{%

2 \global\advance\notenumber by 1

3 \footnote{$^{\the\notenumber}$}{\eightpoint#1\par}}

脚註の文字サイズを本文と同じにするのでしたら,“\eightpoint”の代わりに,例えば “\rm”とでもしてください。定義の中で “#1”の後ろにちゃんと “\par”を置いているので,「私のコマンド無視したなぁ」マチガイ(12.4節)に陥らずに済みます。

19.4 \footnoteのクローンを作る

新しく作った脚註マクロの名前を覚えておかなきゃいけないというのも,煩わしい

ですよね(えーっと,あれは “\ftnote”だっけ,それとも “\numfoot”,いやいや “\newnote”

だったかな?)。参照符をいちいちタイプすることなしに,単に \footnoteとするだ

けでよかったら,ナイスじゃないですか? 出来ます。まず,14.3節で “\item”についてそうしたみたいに,\footnoteのクローンを作

ります:

1 \let\knuthnote=\footnote

これで,この “\knuthnote”というクローンを使えば,\footnoteを再定義して

望み通りに動作させることが出来ます。再定義する \footnoteも,脚註テキストを

インプットとして取ります:

1 \def\footnote#1{%

2 \global\advance\notenumber by 1

3 \knuthnote{$^{\the\notenumber}$}{\rm#1}}

19.5 フギャー! 脚註が消えちゃった

脚註は,「インサート」であって,つまり,TEXがページ上のどこか別の地点にフ インサート

ロートとして挿入するものです。TEXは脚註を見つけると,ページを完成する準備

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 130: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

122 第 19 章 脚註用のマクロを作る

が出来るまで,その中身をメモリの特別な場所に置いておきます。それからTEXは,脚註をページの下部に挿入するのです。

脚註は,インサートの一類型です。他の種類のインサートは,表や図のようなモノ

のために作られていて,それについては第 23章で説明します。

インサートには,ちょっとした欠点がひとつあります。つまり,インサートは時

折,消えてしまうことがあるのです。ラッキーなことに,この点について TEXにはかなりの予見可能性がありますので,「脚註が消えちゃった」マチガイを避ける方法

は,すぐに身につけることが出来ます。

脚註が消えちゃった、というマチガイ

 インサートが消えてしまう場所が,4つあります:

▪ 別のインサートの内部

▪ \vboxとか \vtopとかのボックスの内部

▪ \hboxの中にネストされた \hboxの内部

▪ 数式要素(?)の内部(inside a subformula of a math formula)

(第 28章で,\hbox,\vbox,\vtopといったボックスの使い方について説明をします.)

  TEXは,段落の各行を “hbox (horizontal box)”の中に入れます。段落の内部に意図的に追加の hboxを入れて,そしてこの 2つ目の hboxの中に脚註を入れると,脚註は消えてしまいます。例えば,次の脚註は,プリントアウトには現わ

れません:

 

The magician waved his wand and said \hbox{\slabra-cadabra,\footnote{The meaning of this ancient

phrase has been lost.} shazaam.}, and the box

desappeared!

シンプルな解決策は,こういう場所には脚註は置かないということです。でも,人

生は思うようにはいかないものです。こういう場所に脚註を置かなければならない

ときには,代わりに “\vfootnote”を使ってください。\vfootnote

\vfootnoteもインプットを 2つ取ります。それは,参照符と,脚註のテキストとです。でも,\vfootnoteは,本文中には参照符を置きません。本文中の参照符は,

ボックスやインサートや数式要素の内部で,ユーザーが自分で直接置かないといけま

せん。それから,ボックスやインサート,数式要素の外部の地点で,近くの場所に,

\vfootnoteを置いてください:

1 Since my example macros use a vbox, I had to

2 use a vfootnote to get this note at the bottom

3 of this page.$^{\ddag}$

4

5 \dots\ Later, after the example:

6 \vfootnote{$^{\ddag}$}{\eightpoint

7 Then I checked my printout to make sure the

8 footnote was on the correct page!}

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 131: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

まとめと関連事項 123

Since my example macros use a vbox, I had to use a vfoot-note to get this note at the bottom of this page.‡

. . . Later, after the example:

\vfootnoteは,\vfootnote自身と同じページに脚註を置きますが,そうすると,

参照符があるページとは違うページになってしまう可能性があります。ですので,正

しいページに脚註が置かれるようにするには,\vfootnoteを,上のほうとか下のほ

うとかに移動させなければならない場合があります。

LATEX には,“\vfootnote” はありません.でも,LATEX で同じ目的を実現するには,つま LATEX2.09Notes

り,普通に \footnote を置くと消えてしまう場所に脚註を置くには,“\footnotemark” と“\footnotetext”とを使ってください.これらについてはランポートさんの本に記述があります.

まとめと関連事項

本章では,“\footnote”の使い方と,カスタマイズした\footnoteマクロの作り

方とを,示しました。“\numberedFootnote”マクロは,脚註に自動的に番号を振ってくれます。“\fontedFootnote”は,脚註が確実に正しいフォントになるようにします。

ボックスの内部や他のインサートの内部に入れると,脚註は消えてしまいます。こ

ういう場所に脚註を置かねばならないような場合には,“\vfootnote”が問題を解決してくれます。

別のタイプのインサートは,表や図が,ページ上の違う地点や,続くページへのフ

ロートになることが出来るようにします。第 23章で,その方法について説明をして

います。

‡Then I checked my printout to make sure the footnote was on the correct page!

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 132: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

124 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 133: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 20章 Alignment: Making Tables

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

125

Page 134: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

126 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 135: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 21章 Putting Headings in Your Tables

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

127

Page 136: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

128 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 137: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 22章 Drawing Lines (Rules) in Your Tables

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

129

Page 138: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

130 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 139: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 23章 表や図(静止・フロート両方)用のマクロを作る

表や図は,その上下にアキを入れて,本文から離す必要があります。表や図の多く

にはまた,キャプションが必要で,更にはしばしば,節や章または文書全体で,通し

番号が振られています。特定の表や図が,文中の特定の場所になければならないとい

う場合もあります。そうではなくて,表や図を「フロート」にしたほうがよい場合も

あります。つまり,同一ページの上部に置くとか,または次のページの上部にすると

か,あるいは,表や図のみのページにしてしまうとかです。本章では,これらの作業

を実現する方法について,説明をします。

本章の説明は,以下について既にお読みになっていることを前提にしています:

▪ フォントサイズの変更(第 7章)

▪ サンドイッチ型のマクロと “\displaybreak”(第 12章)

▪ カウンタの作り方,進め方,使い方(14.5節または 17.4節)

LATEXでは,ランポートさんの本に書いてある “table”環境や “figure”環境を使ってくだ LATEX2.09Notes

さい.LATEXの “\caption”マクロは,両方の環境で同じように使えます.

23.1 表や図のためのシンプルなマクロ

とてもシンプルな表マクロや図マクロなら,まずグループを開始して,テキストと

表・図との間に\displayskipを入れて,それからグループを閉じればよいでしょう。

表や図は,\displayskipで終わるマクロに続く場合がありますから,\displayskip

の代わりに\displaybreakを使いましょう:

1 \def\beginTable{\begingroup\displaybreak}

2 \def\endTable{\displaybreak\endgroup}

1 \def\beginFigure{\begingroup\displaybreak}

2 \def\endFiture{\displaybreak\endgroup}

\displaybreakにしておけば,文書中で“\beginTable”や“\beginFigure”が別の\displayskipに直接続くような場合でも,\displayskipが 1個分よりも広いスペースは,入りません。12.5節で,\displaybreakの動作については説明をしました。

キャプションや説明文

多くの人は,表のキャプションは表の上に置くほうが好きで,図のキャプション

は図の下に置くほうを好みます。シンプルなキャプション用のマクロなら,キャプ

ションのための段落を \noindentで始めて,適当な量のスペースを上か下に加えれ

ばよいでしょう。次の “\aboveCaption”マクロと “\belowCaption”マクロはどちらも,キャプションのテキストをインプットとして取ります:

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

131

Page 140: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

132 第 23 章 表や図(静止・フロート両方)用のマクロを作る

1 \def\aboveCaption#1{\noindent #1\medskip}

2 \def\belowCaption#1{\medskip \noindent #1}

表の説明文や図の説明文についても,同様の一般的アイデアがうまく動作してくれ

ます。説明文が長い場合には,次の “\beginTablenotes”と “\endTablenotes”のペアのように,サンドイッチ構造にしたほうがいいです。表の説明文が複数になるよ

うな場合には恐らく,\parskipや \parindentを変更する必要が出てくるでしょう:

1 \def\beginTablenotes{\begingroup

2 \medskip

3 \parindent=0pt

4 \parskip=\medskipamount

5 \noindent}

6 \def\endTablenotes{\par\endgroup}

このアプローチでは,説明文全体を \beginTablenotesと \endTablenotesの間に

入れることになります。説明文は,それぞれを段落にするようにします。

もしもお望みならば,それぞれの説明文のテキストを個別の “\figurenote”マクロのインプットにすることも可能です。この場合には,図の下に好きなだけ\figurenote

を置くことが出来ます:

1 \def\figurenote#1{\smallskip\noindent#1\par}

表や図に罫線を引きたいというときには,第 22章で表に罫線を引くやり方を説明

していて,あと第 31章では一般的な罫線の引き方について,説明をしています。

23.2 表や図にTEXにナンバリングしてもらう

表や図というのはしばしば,文書と共に発展していくものです。一つの図が,二つ

になることもあります。一夜にして新たな図が現われるかも ――または古い図が消

え去るかも―― 知れません。表についても同じことが言えます。この移り行く景色

に手作業で番号を振っていくなんていうのは,めちゃくちゃ面倒です。ラッキーなこ

とに,TEXがこれを皆やってくれます。14.5節と 17.4節で,カウンタの作り方とそれを \advanceする方法とについて,

説明をしました。それと同じ TEXniqueをここで使いましょう:

1 \newcount\tablenumber

2 \newcount\figurenumber

キャプションがグループの中に入ることもあり得るので,“\global”というプリミティブを使って,グループの外でも確実にカウンタが増えるようにします。\global

は,新しい情報をサインボードの一番内側のレベルにまで到達させるように,TEXに伝えます。

次の 2つのキャプションマクロは,番号の振り方と,あと表や図の上に置くか下に置くかという点がちょっとだけ違っています。“\TableNumberedCaption”は,シンプルで直截的です。これは,キャプションテキストをインプットに取ります †訳註1):

1 \def\TableNumberedCaption#{%

2 \global\advance\tablenumber by 1

3 \noindent{\bf Table \the\tablenumber}\quad #1

4 \medskip\nobreak}

†訳註1) 表組み関係の章は今回全く訳してないので,“\halign” が唐突ですよね…。すいません。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 141: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

23.3 インサートを使ってフロートにする 133

1 \TableNumberedCaption{Effects of Captioning on

2 a Captive Audience}

3 \halign{#\hfil& \qquad\hfil#& #\hfil\cr

4 Rapt& 18.5& \%\cr

5 Interested& 32.7\cr

6 Bored& 43.8\cr

7 No response& 5.0\cr}

Table 1 Effects of Captioning on a Captive Audience

Rapt 18.5%Interested 32.7Bored 43.8No response 5.0

次の “\FigureNumberedCaption”のキャプションでは,改行をして,また図番号には章番号を含めるようにしています。\FigureNumberedCaptionのインプットも,

キャプションテキストです:

1 \def\theFigureNumber{%

2 \the\chapternumber.\the\figurenumber}

3

4 \def\FigureNumberedCaption#1{%

5 \global\advance\figurenumber by 1

6 \medskip\nobreak

7 \noindent{\bf Figure \theFigureNumber}\eol

8 #1\par}

1 \FigureNumberedCaption{Figure Eights in Skating}

Figure 23.1Figure Eights in Skating

フギャー!

\tablenumberや \figurenumberが,表や図と一緒に増えて行かないとしたら,そ

れは,カウンタをグループの内部で増加させてしまっているからです。\advanceの

前に,\globalを置いてください。

23.3 インサートを使ってフロートにする

長い表や大きな図の場合にはいつでも,それをどこに配置すべきかというのは大問 \midinsert

\topinsert

\pageinsert題です。表や図を,――途中に大きな空白を入れることなく―― それと対応する本

文の近くに置くには,かなりの努力が必要になります。次の plain TEXのマクロ 3種を使うと,モノを「フロート」にして,近くの場所に配置出来ます。こうすれば,表

や図の配置という作業がずっと楽チンになります。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 142: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

134 第 23 章 表や図(静止・フロート両方)用のマクロを作る

\midinsert 可能であれば,モノをそこに挿入します.不可能な場合には,次に利用可能なページの上部にフロートさせます.

\topinsert 可能であれば,モノを当該ページの上部に挿入します.不可能な場合には,次に利用可能なページの上部にフロートさせます.

\pageinsert 次に利用可能なページに,モノだけを挿入します.

「次に利用可能なページ」という言葉が意味しているのは,TEXは同時に複数のインサートを処理している可能性があるということです。そういう場合には,TEXは,(まるでバスを待って並んでいるみたいに)列の順にインサートを処理するので,文書に

出てくるのと同じ順に,インサートをフロートにしていきます。

3つのインサートマクロはすべて,“\par\begingroup”を含んでいるので,サンドイッチ型マクロの 1枚目のパンの役目を果たします。2枚目のパンに相当するマクロは 3つとも同じで,“\endinsert”です:

\midinsert \topinsert \pageinsert...

...... ←ここにフロートを入れます.

\endinsert \endinsert \endinsert

これらのインサートマクロはどれも,フロートを \vboxへと入れます。TEXのボックスについては,第 28章で説明をしています。ここで大事なことは,TEXは vboxの中では新しいページを開始することが出来ないということと,vboxの中には脚註を入れることが出来ないということです(フロートにする表や図に脚註が必要なときに

は,19.5節で説明している “\vfootnote”を使ってください)。

フロートがページの途中にあると,TEXは自動的に \bigskipをその上下に挿入し

ます。フロートがページ上部に現われると,TEXはその下に \bigskipを入れます。

フロートだけでページが占められる場合には,\vsizeと同じ大きさの vboxの中で垂直方向にセンタリングされます。つまり,TEXはフロートの上下にグルーを入れるわけです。

これらのインサートの中には \bigskipが入っているということはつまり,私たち

がさっき作った “\beginTable”マクロや “\beginFigure”マクロはインサートマクロと一緒には使えないということです。とりあえず使ってみたとしても,フロートの

中か本文中かに,余計なスペースが入るだけです。それで,表や図をフロートにする

ためのサンドイッチ型マクロを,新たに作らないといけません。

23.4 表をフロートにするためのマクロ

表をフロートにするマクロを作る第一歩としてまず,\topinsertを使いましょう。

もしも表が皆ページ上部にあればよいのであれば,次の “\beginTopTable”はまさに理想的なマクロです。

\beginTopTableには,垂直方向のスペースを加える必要はないのですが,それ

は,\topinsertがそれをやってくれるからです。でも,\tablenumberはちゃんと

\advanceする必要がありますし,\beginTopTableには表のキャプションテキスト

をインプットとして与える必要があります。このようなマクロを作れば,すべての表

の見た目をどれも同じに出来ます。

“\TableCaption”と “\beginTopTable”はどちらも,キャプションテキストをインプットとして取ります:

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 143: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

23.4 表をフロートにするためのマクロ 135

1 \def\TabelCaption#1{\noindent

2 {\bf Table \the\tablenumber}\quad #1}

3

4 \def\beginTopTable#1{%

5 \topinsert

6 \global\advance\tablenumber by 1

7 \Tablecaption{#1}\medskip}

8 \def\endTopTable{\endinsert}

このサンドイッチ型マクロを \halignの表と一緒に使うと,こんな感じになりま

す(実際には,ページ上部に配置されます):

1 \beginTopTable{Spinning one’s wheels}

2 \halign{#\hfil& \qquad#\hfil& \qquad#\hfil\cr

3 \bf Wheel& \bf Radius& \bf Weight\cr

4 Gotchall 60R13& 13 inches& 19 lbs.\cr

5 Tigertooth 75R15& 15 inches& 26 lbs.\cr}

6 \endTopTable

Table 2 Spinning one’s wheels

Wheel Radius WeightGotchall 60R13 13 inches 19 lbs.Tigertooth 75R15 15 inches 26 lbs.

ところで,この戦略だと,マクロが3種類必要になりますよね。つまり,“\beginMidTable”,“\beginTopTable”,“\beginPageTable”みたいな。“mid”,“top”,“page”といったインプットを取れるような “\beginFloatTable”マクロひとつで済むとしたら,人生はもっとシンプルになることでしょう。TEXにはこれも出来ます。

“\csname”と “\endcsname”というプリミティブは,文字列を取って,それをコン \csname

\endcsnameトロールシーケンスへと変換します*原註1)。次の二つの指示は,同じ効果を生じます:

\TeX

\csname TeX\endcsname

\endcsnameはTEXに,文字列がどこで終わるのかを示します。\csnameは“control-sequence name”の略で,\endcsnameは “end control-sequence name”の略です。表をフロートにするマクロで \csnameと \endcsnameとを使って,どのタイプのイ

ンサートにするかを決めることが出来ます。以下が “\beginFloatTable”の定義です。“\beginTopTable”との主な違いは,“#1”というインプットを使ってインサートを特定している点です。2つ目のインプットは,キャプションテキストです:

1 \def\beginFloatTable#1#2{%

2 % #1 is type of insert

3 % #2 is caption text

4 \csname #1insert\endcsname

5 \global\advance\tablenumber by 1

6 \Tablecaption{#2}\medskip}

7 \def\endFloatTable{\endinsert}

\beginFloatTableを使うと,特定の表についてどのフロートにするかを簡単に指

定することが出来ますし,途中でそれを変更することも容易になります。

*原註1) より正確には,“\csname” は,「トークン・リスト」をコントロールシーケンスへと変換します。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 144: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

136 第 23 章 表や図(静止・フロート両方)用のマクロを作る

1 \beginFloatTable{mid}{Drifting along; sinking fast}

2 \halign{#\hfil& \qquad\hfil& #\hfil\cr

3 \tabletoprule

4 \bf Matrerial& \bf Specific gravity\hidewidth\cr

5 \tablerule

6 Styrofoam& 0.02& \hskip 55pt\cr

7 Cork& 0.15\cr

8 Maple& 0.49\cr

9 Oak& 0.77\cr

10 Quartz& 2.65\cr

11 Lead& 11.34\cr

12 Gold& 19.30\cr

13 \tablebottomrule}

14 \endFloatTable

Table 3 Drifting along; sinking fast

Matrerial Specific gravityStyrofoam 0.02Cork 0.15Maple 0.49Oak 0.77Quartz 2.65Lead 11.34Gold 19.30

23.5 図をフロートにするためのマクロ

図をフロートにするマクロを書くのは,表のときとはちょっと違っているのです

が,それは,図のキャプションは普通,図の上ではなくて下に配置する必要があるか

らです。でも,キャプションを “\endFloatFigure”のインプットにするというのは不便ですよね。キャプションは “\beginFloatFigure”のインプットにしといたほうが,分かり易いし読み易いものです。

このジレンマを解消するのに,“\theCaption”というマクロを作りましょう。このマクロは,\beginFloatFiguteによって定義されて,\endFloatFigureによって

使われるものです。また,“\FigureCaption”はキャプションテキストをインプットに取るマクロです。次の “\beginFloatFigure”は,インサートの種類とキャプションテキストとを,インプットに取ります:

1 \def\FigureCaption#1{\noindent

2 {\bf Figure \theFigureNumber}\eol #1}

3

4 \def\beginFloatFigure#1#2{%

5 \global\advance\figurenumber by 1

6 \def\theCaption{#2}

7 \csname #1insert\endcsname}

8

9 \def\endFloatFigure{\displayskip

10 \FigureCaption{\theCaption}\par

11 \endinsert}

“#2”というインプットの動きは,以下のようになります。まず,入力ファイルは次のようになっているとしましょう:

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 145: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

23.5 図をフロートにするためのマクロ 137

\beginFloatFigure{top}{Typical flotsam shapes}

\beginFloatFigre を展開する際に,TEX は \theCaption を “Typical flotsamshapes” と定義します。\endFloatFigure に到達すると,TEX は \theCaption も

展開します。ですので,\FigureCaption{\theCaption}は,次のように展開され

ます:

\noindent{\bf Figure 23.2}\hfil\break

Typical flotsam shapes

次が,私たちの floating-figureマクロの使用例です(ここでも,実際には図はペー

ジの上部に配置をされます):

1 \beginFloatFigure{top}{A variety of ‘big-o’s}

2 \noindent$\displaystyle

3 \bigoplus \qquad \bigodot \qquad \bigotimes$

4 \endFloatFigure

⊕ ⊙ ⊗Figure 23.3A variety of ‘big-o’s

文書中の図は,手作業でプリントアウトに糊付けするという場合には,図のサイズ

を測って,適切な \vskipをそれぞれの図領域に加えてください。もしも図はすべて

糊で貼るのであれば,figureマクロもそれに応じた定義にすることも出来ます。次

の “\makefigure”マクロは,\vskipのためのグルーと,\FigureCaptionのためのテキストとを,インプットに取ります:

1 \def\makefigure#1#2{\topinsert

2 \vskip #1

3 \displayskip

4 \FigureCaption{#2}\endinsert}

1 \makefigure{3.25in}{Busts of Julius Caesar}

文書中の図を,TEXでないもの(PostScriptとかMacDrawとか Lispとか)で作る場

合には,“\special”を使って図を取り込むことも可能です。\specialはプリミティ \special

ブで,ドライバ用の指示を “.dvi”ファイルへと書き込みます。\specialについて

説明するのは,本書の範囲を超えています。お近くの TEXのウイザードさんに聞いてください。

フギャー!

\topinsertや \midinsertがページよりも長い場合には,TEXはそれを文書末までずーっとフロートし続けます。フロートが沢山あると,TEXのメモリはあっという間に一杯になってしまいます。TEXは “capacity exceeded, sorry”と言って,止まっちゃいます。\topinsertや \midinsertをより小さな部分へと切り分けるこ

とが出来ない場合には,\pageinsertへと変更してください。

TEXが \pageinsertの vboxがアンダーフルだと文句を言う際には,フロートさせるモノと \endinsertとの間に,\vfilを入れてください。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 146: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

138 第 23 章 表や図(静止・フロート両方)用のマクロを作る

まとめと関連事項

本章では,表や図のためのシンプルなサンドイッチ型のマクロから始めて,いろい

ろなキャプションマクロについても説明しました。TEXは,カウンタを使って表や図に自動的にナンバリングすることも出来ました。

“\midinsert”,“\topinsert”,“\pageinsert”を使うと,表や図をフロートにして,TEXに文書中の別の場所に配置するようにしてもらうことも出来るのでした。フロートの表や図に脚註を付けるには “\vfootnote”が入用で,よって,ちゃんと正しい場所に脚註が現われているか,プリントアウトをチェックする必要があります。

第 20章では,“\halign”を使った作表について説明をしています。第 21章は表

に見出しを付ける方法について示しています。第 22章では,表に罫線を引くやり方

について述べています。

第 28章は TEXのボックス,つまり “\hbox”,“\vbox”,“\vtop”の扱い方について説明しています。これらのボックスはそれぞれ TEXのモードを変更するので,第33章についても読んでみたくなるかも知れません。

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 147: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 24章 Using Math Mode

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

139

Page 148: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

140 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 149: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 25章 Math Mode Symbols

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

141

Page 150: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

142 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 151: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 26章 Fractions and Multiline Math Displays

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

143

Page 152: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

144 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 153: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 27章 Fonts for Math Mode

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

145

Page 154: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

146 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 155: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 IV部 Steeper Slopes

Page 156: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i
Page 157: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 28章 Boxes

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

149

Page 158: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

150 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 159: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 29章 Controlling the Size of Your Boxes

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

151

Page 160: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

152 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 161: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 30章 Moving Your Boxes

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

153

Page 162: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

154 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 163: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 31章 Drawing Lines (Rules) in Your Text

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

155

Page 164: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

156 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 165: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 32章 Adjusting Awkward Page Breaks

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

157

Page 166: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

158 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 167: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 33章 How to TEX Works:

Modes, Tokens, Mouth, and Stomach

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

159

Page 168: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

160 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 169: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第V部 Back at the Lodge

Page 170: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i
Page 171: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 34章 Bug Diagnosis:

Tips and Strategies

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

163

Page 172: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

164 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 173: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

第 35章 Bug Diagnosis:

Symptom and Error Messages

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

165

Page 174: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

166 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 175: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

Appendix

Page 176: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i
Page 177: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

付 録A Font Tables

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

169

Page 178: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

170 TEX for the Beginner

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

Page 179: LATEX LATEX î ; TEX Ö ó w Ö ó ¤ ¥ - GeoCities0201547996,00.html ² q % s LATEX â ² U ` o h s LATEX â ² w h w î ;TEX Ö ó w Ö ó ¤ ¥ /ÅLATEX w ® ã F j ¯ j l q i

付 録B TEX’s Reporters

[Wynter Snow, TEX for the Beginner, 1992]

Translated from TEX FOR THE BEGINNER by Wynter Snowc⃝ 1992 by Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.ALL RIGHTS RESERVED. NO FURTHER COPYING OR DISTRIBUTION ALLOWED.

171