土屋勝●著/CUTT/ • TEXはAmerican Mathematical Societyの商標です。 • METAFONTはAddison-Wesley Publishing Companyの商標です。 • その他，本文中に記載した製品名，システム名，会社名等は，一般に各社の商標または登録商標です。本書では©マーク，TMマーク，®マークなどの表記は省略しています。 •本書に掲載している製品についての情報,インターネット上のサイトおよびURLについての情報は，2022年9月に確認したものです。これらの情報は予告無しに変更される場合があります。
本書では，大学生や大学院生が日本語でのレポートや論文を執筆する上で，基本的に必要だと思われる項目に絞って、コンパクトにまとめてみました。あれも書きたい、これも必要だという情報や技術もあるのですがそこは抑えて。日本語LATEX処理系の定番であるpLATEXと最新のLuaIATEXを取り上げ，分かりやすい入門書を目指しました。 1章から順番に読んでいかれてもいいですし，インストールや基礎が分かっている方は、必要な項目を直接読まれてもいいでしょう。 LATEXはたいへん多機能なソフトであり，詳しく解説しようとするとどうしてもページ数が増えてしまいます。書店に並んでいるLATEXの解説書には500ページを越える大作も珍しくありません。リファレンスとしては，１冊で全機能が紹介されている方がうれしいのですが、あまりに分厚い本は手に取るところから勇気が要ります。最近，本書の出版元であるカットシステムの石塚社長が主催されているNPO法人未来デザイン会議の無料オンラインセミナーで，私も『LaTeXはじめの一歩』という講座を受け持っています。90分間でレポート・論文執筆に最低限必要な知識を習得していただく。若い受講生からのフィードバックを受けて，本書にも反映させました。プレゼンテーション用スライド作成のためのクラスファイル「Beamer」,描画パッケージである「TiKZ」を今回取り上げたのもその一つです。この4年間、学会論文誌の編集に関わり、pIがTFXをずっと使ってきました。現役のLATFXユーザーと思っていましたが、井の中の蛙、浦島太郎でした。今回本書を執筆するにあたってあらためて最新のLATEXに関して調べてみると，大きく様変わりしていることに気がつきました。考えてみれば当たり前なのですが，L*TEXも毎年進化していたのです。 pLATEXはすでにレガシー IATEXとなり，LuaIATEXなど次世代のモダンLaTEXがどんどん広まってきているのです。前版では「ようやくVersion 1.0がリリースされたところなので，まだ不安定なところやpL*TeXとの非互換なところがあります」と様子見だったLuaIATEXがいつの間にか主流に取って代わりそうです。過去からの蓄積がある学会論文誌などは，自前のクラスファイルを作成・配布しており，そう簡単にpLがTEXからモダンLがTEXへ切り替えることができないでしょうが，基本的なL'TFXの書き方はレガシー L'TFXでもモダンL'TFXでも大きく変わるものではありません。本書は基本的にpLやTEXとLuaIATEXでの動作を確認しています。クラスファイルとしてはjsbook，jlreqで確認し，最終的に旧版との紙面デザインを統一するためにltjsbookを使いました。本文のフォントはアドピシステムズとGoogleが開発し，TEXLiveに標準で搭載されているオープンソースフォント原の味フォントを埋め込んで印刷会社に入稿しました。最後に，本書を上梓するにあたり多くの方々にご協力をいただきましたことを，この場をお借りしてお礼申し上げます。TEXを開発されたKnuth教授，IATEXを開発されたLamport氏，多くのIKTEX用環境・ソフトを開発された方々。そしてなにより遅れに遅れた執筆におつきあいいただいたカットシステムの皆様には本当に感謝いたします。本書によって，多くの方がIATEXを使っていただければ幸いです。 2022年9月
V
vii
ix
茶引IATEXとは
1.1  TFXの誕生
高性能組版言語であるLATEXは、もともとStanford大学のDonald E. Knuth教授が開発し，無料で公開したTEXにはじまります。TEXは「テフ」もしくは「テック」と呼びます。 Knuth教授は数学とコンピューターサイエンスが専門で，70年代の中ごろに『The Art of Computer Programming』という本を出版しようとしました。当時は活版印刷からコンピューター組版に移り変わる時期でした。熟練した組版職人を確保することができず，かといってコンピューター組版の質は低く，教授はその仕上がりに満足できませんでした。そこでKnuth教授は本の刊行をいったんストップし、美しい組版ができるレイアウトソフトウェアの開発に取り掛かりました。こうしてできあがったのがTEXです。教授は単に組版ソフトウェアを作るだけでなく，フォントを自分で作るためのMETAFONT も開発し，Computer Modernというフォント集をリリースするなど，印刷に必要な環境を自分で用意しました。 Knuth教授が開発し,『The TEXbook』や『The Art of Computer Programming』の出版に使ったのはオリジナルのTEX，裸のTEXに基本的なマクロ集であるplain TEXマクロパッケージを組み合わせたものでした。plain TEXは高度な基本機能を備えているものの，あまり直感的とはいえず，一般の人が使うには敷居が高いものでした。そこでTEXをもっと使いやすいものにするため，コンピューター技術者のLeslie Lamport氏がLATEX（「ラテフ」または「ラテック」と呼びます）というマクロパッケージを開発し，公開しました。LATEXには通常のレポートや本，手紙などを作るのに必要な命令が用意されており，簡単にレイアウトすることができます。現在ではTEXといえばIATEXを指すことが多くなっています。元のTFXは1990年、Knuth教授によって最終版であるTFX第3.1版がリリースされて機能がフィックスしました。
1.2   TFXの発展
その後，レジスタ（変数）の数を256個から32,768個に増やし，アラビア語など右から左に組む機能などを追加したε−TEX拡張がリリースされました。今ではほとんどのシステムがε−TEX拡張を取り込んでいます。一方，LATEXは1993年，大幅な改良を加えられたLATEX2eへと発展しました。 2007年にはpLATEXの内部文字コードをUTF-8対応に修正したupLATEXが公開されました。upLATEXはpLATEXと高い互換性を持ちながら，ソースコードをUTF-8で記述でき，森鷗外，高島屋，草薙剛といったUnicodeまでの文字がそのまま使えるようになりました。 IATEXの大きな問題点としてレイアウトを調整しようとすると，さまざまなパッケージを読み込んだり，自分で難解なTEXプログラミングに取り組まないといけないということがあります。複数のパッケージを読み込むと，パッケージどうしが衝突して予期せぬ動きをしたり、エラーになってタイプセットが止まってしまうこともあります。TFX言語はチューリング完全，つまりれっきとしたプログラミング言語ですが，複雑な計算や処理を記述するのには適していません。そのため文書マークアップ言語とレイアウト設計言語，さらにプログラミング言語の3階層に分離し、独立性や開発性を高める次世代LATFX3プロジェクトが動いています。ここでは文書クラスとしてjlreq,プログラミング言語としてexp13が採用されています.今後、L*TEXカーネルの大規模改修が進められるとL*TEXの日本語化、つまりpL*TEX化，upL*TEX化ができなくなる危険性が指摘されています.現行バージョンのpLATFXを残しておけば当分は対処できますが、いずれ破綻してしまうでしょう．これから新たにLATEXを始めようとする人にとっては、何の解決策にもなりません.対策としてはモダンIATFXであるLuaLATFXなどへの移行を進めることがあります.本書ではこれまでpLATEXを基本として書いてきましたが，できる限りLuaLATEXについての知見を取り入れて改訂します.
1.3    LATFXの得意なこと，不得意なこと
LATEXは文字テキスト中に制御命令を埋め込んでレイアウトしていくマークアップ方式の組版言語です。マークアップ言語というとWebページの記述に使われるHTML (Hyper Text Markup Language)がよく知られています。それと同様にLATEXもソースファイルはテキストと削御命令が入り混じった状態になっており、これをLATEXプログラムで処理し，画面やプリンターに出力してはじめてレイアウト結果が分かります。 Microsoft Wordや一太郎，Illustrator，InDesignといったワードプロセッサやレイアウトソフトのように，画面上で文字やグラフィックをマウスで動かしてレイアウトし，それがそのまま出力になるWYSIWYG*¹とはかなり毛色が違っています。画面上でレイアウトを確認しながら直感的に操作することができないため、一般の人にはとっつきにくいところがあります。ビジュアル雑誌のように，写真と文字が複雑に組み合わさったものをレイアウトするのは不得意です。しかし、IがTFXには他の組版ソフトにない優れた機能があります。 1.文書の論理構造とレイアウトを切り離して執筆できる2.数式や表組みが容易にできる3.章番号や図版番号との自動対応、脚注、参考文献リスト、索引などを自動的に処理できる4.多様な言語に対応しており、伝統的な組版の規則を実現している5.各種のフォントが利用できる6. Linux/UNIX, Windows, macOSなどさまざまな環境で利用できる7.ソースファイル、出力ファイルとも機種を問わず互換性がある8.インクジェットプリンターから写植機まで、同じレイアウトで出力できる9.無料か、安価に入手できる
といったものがあげられます。
特に1～4などは科学技術系の文書を書くのに特に便利な機能でしょう。文章を書いているとき、現在の見出しが第何章であるか、図版や表の番号が何番であるかといったことをいちいち考える必要はありません。見出しのサイズやフォントをどうしようかということも悩まなくていいのです。とにかく文書としての論理的な流れだけをしっかりと組み立て，それに従って書き進めていけばいいのです。L*TEXが自動的に管理してくれます。章の順番、図版の順番を入れ替えても，勝手に番号が振られます。また，数学者であるKnuth教授が自らの著書を組版するために開発した言語ですから， IATFXによって組まれる数式の美しさは群を抜いています。
このような数式が簡単に書けてしまいます。 L*TEXの数式表記方法はWikipedia,  WordPress,  note,  moodle,  Microsoft Office, Adobe inDesignなどのCMSやアプリでも採用されており，事実上の業界標準となっています（プラグインが必要なものもあります）。 AMS  (American Mathematical Society：アメリカ数学会）ではTEXを標準の組版システムとして採用し，AMSTEXやAMS-LATEXといった数式処理を強化したマクロパッケージ，ドイツ文字203Cなどを含む数学用フォントを集めたAMSFontsを提供しています。 AMSに限らず，国内・海外の多くの学会でISTEXを論文投稿の標準フォーマットとしています。学会によっては専用のスタイルファイルというのを用意してあるところもあります。その場合は専用スタイルファイルをWebサイトからダウンロードするなどして入手し，使うようにしましょう。
1.4    LATFXと英文組版
組版という言葉は一般の人には馴染みがないかもしれませんが、文字や図版をきれいに，読みやすく，指定したフォントやスペースで配置して紙面を作る作業のことです。それぞれの言語において、独自の組版ルールが存在します。英文には英文の、和文には和文の組版ルールがあります。これはもともと活字印刷の世界で作られてきたルールで，今でも美しく、読みやすい文字の並べ方として使われています。IATEXはそのルールに従って組版してくれます。 IATEXが準拠する英文組版ルールは以下のようなものです。 •カーニング（kerning：字詰め）アルファベットは1文字ごとに横幅が異なっています。文字の上と下でも幅が違うものもあります。たとえばAという文字は下が広く，上が狭くなっています。逆にWという文字は上が広く，下が狭くなっています。これをそのままAWと並べると美しくありません。AWというように間を調整してやるのがカーニングです。この他，ToとTo，YiとYiなどでカーニングが行われます。L*TFXはこのカーニングを自動的に処理してくれます。 •リガチャ（ligature：合字） いくつかの小文字については，次にくる文字によってひとかたまりにくっつけた字体を使うものがあります。たとえばfi,  ff,  fi,  fiなどはfi、ff、ffi、flとなります。iの上の点がなくなったり、fの横棒がつながっています。これがリガチャで、IがTFXはリガチャに対応しています。 •ハイフネーション　欧文で文章を書いていると，単語の途中で改行しなければならないことが出てきます。基本的には文字間、単語間のスペースを調整してハイフネーションを避けるのですが，逆に空白が多くなりすぎたりしてハイフネーションしなければ収まらないこともあります。欧文単語は歴史的にハイフネーションをしていい場所というのが決まっています。ハイフネーションの場所によって意味が違ってしまうことすらあるのです。 『The TEXBook』には，’therapists who preached on weeknights’「週末の夜に伝道するセラピスト」が’the-rapists who pre-ached onweek-nights’になると「騎士にウーと強姦者」という意味になってしまうというジョークが載っています。また, recordという単語は名詞の場合はrec-ordとハイフネーシされますが、動詞の場合はre-cordとなります。まったくもってややこしい話です。L*TFXは強力なハイフネーション辞書を搭載しており、かなり正確にハイフネーションしてくれます。また，ハイフネーション規則は米語と英語で違いがあり，複数のハイフネーション辞書を切り替えることもできます。
1.5  TFXと日本語
もともとTEXは英語用に開発されましたが，ソースコードが公開されていたこともあり，かなり早い時期から日本語に対応したものが開発されました。主なものとしては株式会社アスキーのpTEX（日本語TEX）とNTTの斉藤康己さんによるNTT jTEXがあります。pTEXのL*TEX対応がpL*TEXです。現在，日本語TeX開発コミュニティ*²がpTEX，pLATEXの開発を引き継いでいます。 pIATEX最新版のバージョンはplatex --version e-pTeX 3.141592653-p4.0.0-220214-2.6 (utf8.sjis) (TeX Live 2022) kpathsea version 6.3.4 ptexenc version 1.4.0 Copyright 2022 D.E. Knuth. There is NO warranty.  Redistribution of this software is covered by the terms of both the e-pTeX copyright and the Lesser GNU General Public License. For more information about these matters, see the file named COPYING and the e-pTeX source. Primary author of e-pTeX: Peter Breitenlohner.となっています。日本語対応といった場合，単に日本語が表示できるというだけでは役に立ちません。日本語には日本語特有の組版規則があります。 •行頭禁則 促音：っ  拗音：ぁぃぅぇおやゅょ 長音：ー   閉じ括弧類：）    」 』など　中黒：・　疑問符：？　などが行頭に来てはいけない。 •行末禁則 開き括弧類：（   「    『  などが行末に来てはいけない。また，段落の最後の行が「だ。」のように1文字だけで終わるのは見苦しいし，促音や拗音が続いた時には多少間隔を詰めたほうが見栄えがよくなります。 pLATEXのpはpublishingのpです。出版社であるアスキーが自社の出版物に使えるものを目指して開発しただけあり，I*TEXの英文組版機能はそのままに，日本語特有の禁則処理を盛り込み，縦書きにも対応しています。縦書きの例を示します。技政法
12みゅ浦歌の歌の音楽壇は「みるせいと思、あこ織らい・やこ部や問題みみみみ部ん晋治四川・・職部9班外刊書の外部や細り醤油へ岩り苗や雑器メス皮彩かなな味や現在地などともど異な用のはいいから、温華のかいいからしたほんより股めが増え)+税て医学数も公用 , #2いやすみ音楽
周辺
な天
人は
廃ま節遵修機造や「しては難、グヨン版固みよう加み物Sり認うか言語。つまつ、第二の分冊等等であると言われる論考の方風へをあいな職者志のサポート神岡みへ賃貸報店みみ入画像像影響。各本本本本著書や編編の画像像譜。なんを音楽画像,�領事の報告り孤岸外｜みご萬さ華新聞 ,�계事海購入りやここかぶへ音楽へ筆送過ぎまらー 。誰のの出版だから歌や藩主玄関政治現場
日をいみんんみみ飲クオ困りみ以上つみ国中の漂念用s
間はかいうけどね»み予つめ歌物系商崎の三盤いは皮肪か勢群馬やイヘ津艦隊とへ端ってきたい米の用った戦い7
1.6  TFXLive
TEXは実際には膨大なプログラム・ファイルの集合体です。単体で配布するのは面倒なので，必要なファイルをまとめたディストリビューションパッケージが作られてきました。本書ではTEXLiveを採用することにしました。TEXLiveは1996年からTEXUsers Groupメンバーを中心に開発が始まったディストリピューションパッケージです。当初はLinux向けに提供されてきましたが，現在ではWindowsおよびmacOSにも対応しています。 TEXLiveは毎年新しいパッケージがリリースされています。原稿執筆時点で最新版は2022年4月3日にリリースされたTEXLive 2022です。日本語対応のpTEX，pLATEX， upLATEX,  LuaIATEX,  IPAフォント,  IPAexフォント, 原ノ味フォント,  OTFパッケージ，多言語対応のbabel japaneseパッケージ，統合環境TEXWorksなどが含まれており，TEXLiveだけでpLATEX，upLATEX，luaLATEXが使えるようになっています。
1.7  LATFXの仕組み
LSTEXは制御命令が組み込まれたIATEXソースファイルをタイプセットし，dviファイルまたはPDFファイルに出力します。ユーザーは，まずエディタなどでLATEXソースファイルを作ります。LATEXソースファイルは本文に制御命令が埋め込まれた状態であり，テキストファイルです。dviとはDeVice Independentの略で出力機器に依存しないという意味です。dviファイルはWindowsで作ったものでもmacOSで作ったものでもLinuxで作ったものでも，必要なフォントさえあればどれも基本的に同じレイアウトで表示，印刷することができます。またソースファイルを処理したとき，dviファイルと同時に処理過程を記録したlogファイル，索引を作るためのidxファイル，参照を行うためのauxファイルなども出力されます（どのファイルが出力されるかは設定によって異なります）。
1.8    LATFXのプログラム
LSTEXはいくつかのプログラムやクラスファイル、フォントファイルなどから構成されています。基本的に必要なのは以下のようなものです。 • LATEX本体。pLATEX, upLATEX, LuaLATEXなどがあります。それぞれLinux用, Windows用，macOS用などがあります。また欧文用，日本語用などもあります。 •クラスファイル。版面サイズ，使用するフォント，ノンプルや柱の位置・表示，行間，上下左右の余白など紙面の体裁に関するすべての情報を定義しているファイルです。 •  DVIドライバ。pL*TEX，upL*TEXが出力したdviファイルをPDFファイルに変換するソフトウェアです。dvipdfmxなどがあります。 •フォントファイル。文字の形そのものの情報を持っているファイルです。 •フォントメトリックファイル。文字と文字の問隔など，文字をどう並べるかという情報を持ったファイルです。 •その他のプログラム。衆引を作るためのmendex，参考文献リストを作るためのpBibTEX，フォントを作るためのMETAFONTなどの周辺プログラムがあります。 •エディタ。L*TEXを構成するプログラムではありませんが，きわめて重要なプログラムです。ワープロなどと違ってIATEXは制御命令が埋め込まれたソースファイルを処理するだけで，実際に文字を入力する機能はありません。そこで，文字入力や制御命令の入力はエディタを使います。環境に応じてさまざまなエディタがあります。TEXLiveをインストールすると自動的にセットされるTEXWorksはエディタとPDFビュワーを兼ねた統合開発環境です。