Kile を開いて最初に気づくのは、打っている感触がテキストエディタ Kate とそっくり だということです。錯覚ではありません。Kile は KDE が育てている LaTeX 統合環境ですが、文字を入力する面そのものが Kate の編集部品 KatePart をまるごと埋め込んで作られていて、ハンドブックもはっきりそう書いています。同じ理屈で、PDF を映しているのも Kile 自身ではなく、埋め込まれた Okular です。このページでは、その KDE 流の「部品を組み合わせる」作りが プロジェクト、%source で始まる置換記号を持つ ツールとビルドの仕組み、そして選択範囲だけを組んで見せる QuickPreview にどう表れているかを見ていきます。
なぜ Kile の編集面は Kate に似ているのか
ハンドブックの一文がすべてを説明します——「Kile is based on the Kate editor component, i.e. a lot of its editing capabilities stem from the Kate editor component itself.」 KDE には KParts という仕掛けがあり、あるアプリの部品を別のアプリの中へまるごと埋め込めます。Kile はこれを使って、Kate の編集エンジンを自分の窓の中心に据えました。だから構文ハイライトの定義、検索と置換、行番号、ブロック選択、Vi 入力モードといった編集まわりの挙動は、Kile が独自に書いたものではなく Kate 由来です。Kate の設定に慣れているなら、そのまま持ち込めます。逆に言えば、編集面の癖に不満があるとき直すべきは Kile 側ではなく KatePart 側の設定です。
その上に Kile 自身が載せているのが、LaTeX を知っている側の道具立てです。\begin{...}…\end{...} の対を一度に入れる 環境の自動補完、記号やタグをクリックで挿し込むパレット、\documentclass と用紙サイズをひとつの対話で決める QuickStart ウィザード と定型のテンプレート、そして左側の 構造ビュー(Structure View)。構造ビューは見出しとラベル、取り込まれているファイルを一本の木に並べ、Jump to Structure Element でその場所へ跳べます。Kate から受け継いだ「文字を扱う力」と、Kile が足した「LaTeX を知っている力」——この二層構造が Kile の設計そのものです。
この構成になったのは 2003 年ごろの交代劇がきっかけでした。Kile を立ち上げたのは Pascal Brachet——のちに Texmaker を書く人物です。機能を足したくて連絡してきた Jeroen Wijnhout に、ブラシェはプロジェクトごと譲ります。ウェインハウトの手で出た次の節目が バージョン 1.6 で、その変更履歴の「major(大きな変更)」欄には二行しかありません。「new editor (katepart)」と「project management」 です。つまり Kile の性格を決めている二本柱——Kate 由来の編集面と、複数ファイルをまとめるプロジェクト——は、同じ一回のリリースで同時に入りました。その後の保守は Michel Ludwig を中心とするチームが引き継いでいます。ちなみに名前の kile はノルウェー語で「くさび」「くすぐる」の意味で、英語名の Kyle ではなく /kiːlə/ に近く読みます。
いまの Kile がどういう状態にあるかは、正直に見ておく価値があります。開発は続いていて、KDE Frameworks 6 と Qt 6 への移植はすでに済んでいます——現在の開発版のビルド要件は Qt 6・KDE Frameworks 6・Okular 6 です。一方で リリースの間隔はとても長く、安定版として最後に出た 2.1.3 は 2012 年、次世代の 3.0 系はいまも beta で、beta 1 が 2017 年、beta 4 が 2024 年 3 月です。要するに「枯れて動く道具」であって、毎月変わるエディタではありません。配布ライセンスは GPL v2。主な舞台は Linux の KDE デスクトップですが、Qt と KDE のライブラリが移植されているため macOS・BSD・Windows でも動きます(Windows 版は Microsoft Store でも配布されています)。
プロジェクトとマスター文書——章を増やしても迷わない仕組み
複数の .tex を一つのプロジェクトにまとめると、Kile はどのファイルが マスター文書 かを覚えます。 マスター文書とは \documentclass を持つ親のことで、これを登録しておけば、子ファイルを開いた状態でビルドしても起点は常にマスターです。標準の LaTeX ツールには checkForRoot=yes という設定が入っていて、そもそも文書の根でないファイルを組もうとしたときに Kile が気づける仕組みになっています。プロジェクトの効き目は組版だけではありません。\ref や \cite の補完がプロジェクト内の全ファイルを横断するので、第 7 章を書きながら第 2 章で付けたラベルを呼び出せます。章ごとにファイルを分けた論文や書籍が、分けたせいで不便になる——という事態を防ぐのがこの単位です。
ツールと QuickBuild——Kile のビルドはどう組み立てられているか
Kile のビルドは「ツール(Tools)」という一種類の部品だけでできています。 pdflatex も dvipdfmx も PDF ビューアも、ぜんぶ同じ形のツールで、それぞれが class(種別)、command(実行するコマンド)、options(引数)、from/to(入力と出力の拡張子)を持ちます。メニューでは種別ごとに Build → Compile/Convert/View に振り分けられ、実体の編集は Settings → Configure Kile... → Tools+Build で行います。この均質さが Kile の強みで、新しい変換を足したいときも「新しいツールを一つ作る」だけで済みます。
出荷時の PDFLaTeX ツールは、コマンドが pdflatex、オプションが -interaction=nonstopmode %source です。-synctex=1 は既定では入っていません ので、前方・後方検索を使うつもりなら自分で足す必要があります——「設定したはずなのに同期しない」の原因はたいていここです。同じツールには checkForRoot=yes(根でないファイルを組もうとしていないか確かめる)、jumpToFirstError=yes(最初のエラー箇所へ跳ぶ)、autoRun=yes(BibTeX・makeindex・Asymptote などの補助処理が要るかを自分で判断して走らせる)が付いています。この autoRun があるので、単純な文書なら再実行を意識せずに済みます。
-interaction=nonstopmode -synctex=1 %sourceオプション欄に書ける % で始まる記号は Kile の置換記号で、ツールを起動する直前に実際の値へ差し替えられます。よく使うのは処理対象そのものを指す %source と、拡張子を落とした %S の二つですが、変換ツールや外部ビューアを呼ぶときは出力側を指す記号も要ります。
| 置換記号 | 展開されるもの |
|---|---|
%source | 処理対象のファイル名(拡張子つき) |
%S | 同じファイルの、拡張子を除いたベース名。%S.dvi のように書き換えに使う |
%dir_base | 入力ファイルのあるディレクトリの絶対パス |
%target | 出力ファイル名。表示ツール(View)が開く相手 |
%dir_target | 出力ファイルのあるディレクトリの絶対パス |
%absolute_target | 出力 PDF に「いま何行目にいるか」を添えた前方検索用の指定。Okular に渡す |
%options | 実行時に追加で渡すオプション |
そのうえに載るのが QuickBuild です。これは単独のプログラムではなく ツールを順に呼び出す「並び(Sequence)」 で、中身は sequence=PDFLaTeX,ViewPDF のようにツール名を並べただけの一行です。出荷時に選ばれているのは PDFLaTeX+ViewPDF、つまり「pdfLaTeX で組んで、そのまま表示する」。用意されている並びは次のとおりで、ForwardPDF を末尾に置いた版はコンパイルのたびにビューアがカーソル位置のページを開いてくれます。もちろん自分で並べ替えても、新しい並びを足しても構いません。
PDFLaTeX+ViewPDF— pdfLaTeX で直接 PDF にして表示。出荷時の既定です。LaTeX+DVItoPDF+ViewPDF— DVI を経由し、dvipdfmx で PDF にして表示。日本語の定番経路です。LaTeX+DVItoPS+ViewPSとLaTeX+DVItoPS+PStoPDF+ViewPDF— PostScript を挟む経路。LuaLaTeX+ViewPDF— LuaLaTeX で直接 PDF にして表示。PDFLaTeX+ForwardPDFとLuaLaTeX+ForwardPDF— 表示のかわりに前方検索つきで開く版。
日本語のためのツール設定(upLaTeX と dvipdfmx)
日本語で長く定番の upLaTeX + dvipdfmx は、Kile では二つのツールを直して一つの並びにまとめる、という形になります。 まず LaTeX 系のツールで、コマンドを uplatex に、オプションを次のようにします。-synctex=1 をここで入れておくのを忘れないでください。
-synctex=1 -interaction=nonstopmode %source次に、DVI を PDF へ変換する DVItoPDF ツールです。出荷時からコマンドは dvipdfmx、オプションは %S.dvi になっていて、from=dvi / to=pdf という宣言によって「DVI を受け取って PDF を出す」役だと Kile に伝わっています。%S.dvi と書くのは、元が chapter1.tex でも渡すべき相手は chapter1.dvi だからです——拡張子を落として付け替えるために %S が要ります。あとはこの二つを LaTeX+DVItoPDF+ViewPDF の並びに載せれば、日本語文書も一手でビルドできます。参考文献と索引のツールも、日本語対応の upbibtex と upmendex を指すように差し替えておくと万全です。
%S.dvi再実行の回数や依存関係をもっと確実に面倒みてほしければ、latexmk を呼ぶツールを一つ足して、QuickBuild をそれだけにする のが定番です。新しいツールを作り、コマンドに latexmk、オプションに次を入れます。ひとつ注意があります。latexmk にも %S という記号がありますが、意味は Kile のものとは別です。 ツール設定の欄に書く % 記号は Kile が展開し、.latexmkrc の中に書く % 記号は latexmk が展開します。二つは別の言語だと思って混ぜないでください。latexmk 自体の設定は別ページの主題です。
-pdf -synctex=1 -interaction=nonstopmode %sourceOkular との連携——前方検索と後方検索の設定
編集面に KatePart を埋め込んだのと同じ理屈で、PDF を映しているのも KDE 標準の文書ビューア Okular の部品です。表示系ツールの出荷時の既定はどれも Document Viewer——つまり Kile の窓の中に同居する Okular で、別窓の okular コマンドを呼ぶ設定も選べます。ソースと PDF が同じ窓に並ぶのはこの埋め込みのおかげで、往復が滑らかに感じられるのもここから来ています。
前方検索と単なる表示は別のツールです。ここを取り違えると、設定を写しても動きません。 表示だけの ViewPDF は Okular に %target(あるいは --unique %target)を渡すだけですが、前方検索用の ForwardPDF は --unique %absolute_target を渡します。この %absolute_target に「出力 PDF のどの行に対応する位置か」までが載っているので、Okular はカーソルのある段落を開けるのです。逆に、ViewPDF の欄に %target を書いたまま「前方検索が効かない」と悩むのはよくある行き違いで、直すべきは ForwardPDF 側の設定と、QuickBuild の末尾を ForwardPDF にすることです。
後方検索(逆検索)は Kile ではなく Okular 側で設定します。 Okular の設定でエディタを Kile にし、その起動コマンドを kile --line %l としておけば、PDF 上で Shift を押しながらクリックした箇所から Kile の該当行へ戻れます。前方検索が Kile → Okular、後方検索が Okular → Kile という向きなので、設定する場所も別々になる、と覚えておくと迷いません。同期の仕組みそのもの——.synctex.gz に何が入っているのか——は別ページで扱います。
QuickPreview——選んだところだけを組んで見る
長い文書のなかで数式を一つ直しただけなのに全体を組み直す、という無駄を省くのが QuickPreview です。 選択範囲だけを小さな仮の文書に包んで処理し、その結果を見せてくれます。範囲の取り方は四通りあって、選択範囲そのもの、カーソルがいる 環境ひとつ(\begin{...}…\end{...} の中身)、\input で取り込まれている 部分文書ひとつ、そしてカーソルがいる 数式ひとまとまり を選べます。結果は別窓ではなく 画面下のバー に出すこともできるので、表組みや長い数式の見た目を詰めていく作業では、ビルド一回ぶんの待ち時間が丸ごと消えます。専用の Preview 系ツール(class=LaTeXpreview)が裏で走っているので、本番のビルド設定を汚さないのも安心なところです。
Kile を使い始めた日に決めておくこと
最初に決めるべきは、ボタンの意味ではなく「QuickBuild に何を載せるか」です。 欧文中心なら既定の PDFLaTeX+ViewPDF のまま、日本語の upLaTeX 文書なら LaTeX+DVItoPDF+ViewPDF、参考文献と索引を確実に含めたいなら latexmk のツール一つだけ。これを先に片づけておくと、あとから章ファイルをプロジェクトに足しても、子ファイルから起動して常にマスター文書が組まれる流れが崩れません。ハンドブックによれば、ソースをコンパイルするキーボードショートカットは Alt+2 で、QuickBuild を走らせると Okular が自動で立ち上がるはずだ、とも書かれています。
設定が固まったら、短い main.tex をプロジェクトに登録して、子ファイルからビルドしてもマスターが組まれることを一度確かめてください。エラーが出たときは、View logfile で .log を開き、Next error で次のエラーへ送る——jumpToFirstError=yes のおかげで最初のエラー箇所には自動で跳びます。そこから Okular の前方検索が動くところまでを一続きで確認できれば、あとは章を増やしていくだけです。