TeXworks

TeXworks(テックワークス)は、TeX Live と MiKTeX に同梱されている、軽量でクロスプラットフォームな LaTeX エディタです。Mac の定番 TeXShop を手本に「TeX を始めるときの敷居を下げる」ことを目的に作られ、最初の一本として最適。このページでは、タイプセットの設定、複数ファイルを束ねるルートファイル、そして PDF プレビューと連動する SyncTeX を順に見ていきます。

TeXworks とは

TeXworks は ジョナサン・キュー(XeTeX の作者でもあります)が開発したエディタです。当時の Windows 向け統合環境が初学者には大げさで近寄りがたいと感じた彼は、Mac で評価の高かった リチャード・コッホの TeXShop を意図的に手本にし、その簡潔な使い勝手を Windows・Linux にも持ち込みました。狙いははっきりしていて、「TeX を始めるときの敷居を下げる」 こと。多機能を競うのではなく、迷う場所を減らすことを優先した設計です。

最大の利点は 入手の手間がいらない ことです。TeX Live と MiKTeX のどちらにも標準で同梱 されているため、ディストリビューションを入れればそのまま使えます。中身は Qt という GUI ツールキットで作られていて、Windows・macOS・Linux で同じように動きます。エディタ部分は Unicode(標準は UTF-8) に対応し、命令の補完や入力支援、スペルチェックといった最低限の道具立ては備えています。物足りなくなったら Lua や Python のスクリプトプラグイン を有効にして、独自の機能を足すこともできます(ビルド時のオプション)。

その簡潔さの裏返しとして、多段の凝ったビルドや高度なプロジェクト管理は得意ではありません。そうした処理は初学者には複雑すぎるとして、あえて前面に出していないのです。本格的に込み入った構成へ進む段階になったら、TeXstudioVS Code(LaTeX Workshop) などへ乗り換えるとよいでしょう。それでも「まず一本コンパイルできるようになる」までの道のりは、TeXworks がいちばん短いはずです。

タイプセットの設定

TeXworks の中心は、ツールバー左側にある タイプセット用のドロップダウン です。ここで使うエンジン(pdfLaTeXLuaLaTeXXeLaTeX・ConTeXt など)を選び、隣の緑の三角ボタン(あるいは Ctrl/Cmd-T)で実行すると、現在の文書がコンパイルされて PDF プレビューが開きます。pdfLaTeX・XeLaTeX・ConTeXt(MkII)に加え、BibTeX・MakeIndex といった補助ツールが あらかじめ登録 されています。

このドロップダウンの中身は自分で増やせます。Edit → Preferences(設定)→ Typesetting(タイプセット) タブを開くと、下部の Processing tools(処理ツール) にツールの一覧があり、+ で新規追加、- で削除、Edit... で編集できます。各ツールには Name(名前。ドロップダウンに出る表示名)Program(実行するコマンド名)Arguments(引数。1 行に 1 つずつ)、そして View PDF after running(実行後に PDF を表示) のチェックがあります。引数には変数が使え、$fullname は処理対象ファイル、$synctexoption は SyncTeX 用のオプション(後述)に展開されます。

一例として、ビルドを latexmk に任せる pdfLaTeX 用ツールは次のように登録します。latexmk は相互参照や文献処理に必要な回数を自分で判断して繰り返してくれるので、TeXworks 側の設定が一段すっきりします。Program に latexmk、Arguments を 1 行ずつ次のように入れ、View PDF after running にチェックを入れます。

terminal
-e
$pdflatex=q/pdflatex $synctexoption %O %S/
-pdf
$fullname

日本語では、upLaTeX で組んで dvipdfmx で PDF にする のが定番です。TeX Live 同梱の TeXworks には日本語用のツールが最初から入っていますが、自分で登録する場合は、両処理をまとめた ptex2pdf を使うのが簡単です。Program を ptex2pdf、Arguments を次のようにします(-u は upLaTeX、-l は LaTeX 系、-ot は TeX への追加オプションの指定)。

terminal
-l
-u
-ot
-kanji=utf8 -no-guess-input-enc $synctexoption
$fullname

よく使うものを Preferences の上部にあるデフォルトのタイプセットエンジン に指定しておけば、新しく開いた文書はそのエンジンで処理されます。文書ごとに切り替えたいときは、次節のマジックコメントで上書きできます。

ルートファイルとマジックコメント

文書が大きくなると、章ごとにファイルを分け、\input\include で親ファイルから読み込む構成がよく使われます。このとき困るのが、子ファイル(chapter1.tex など)を開いたままタイプセットしてしまうこと。子ファイルには \documentclass\begin{document} もないので、そのままではコンパイルできません。

これを解決するのが マジックコメント です。TeX からはただのコメント(% 以降)に見えますが、TeXworks はファイル冒頭にある特定の行を読み取って動作を変えます。子ファイルの先頭に % !TeX root = ... で親ファイルを指しておけば、子ファイルを編集中にタイプセットしても、TeXworks は 代わりに親(ルート)ファイルをコンパイル します。パスは子ファイルから見た相対パスで書けます。

latex
% !TeX root = main.tex

\chapter{はじめに}
本文をここに書きます。

マジックコメントは他にもあります。% !TeX program = ... は、その文書を処理するエンジンを指定します(値は実行ファイル名ではなく、Preferences に登録した ツールの名前)。日本語文書の先頭に書いておけば、ドロップダウンを切り替え忘れても正しいエンジンで処理されます。% !TeX encoding = ... はファイルの文字コードを指定します。TeXworks の標準は UTF-8 なので、UTF-8 で書いていれば通常は不要です。(% !TeX program は、古い表記の % !TeX TS-program でも同じ意味になります。)

latex
% !TeX program = upLaTeX (ptex2pdf)
% !TeX encoding = UTF-8
\documentclass{ujarticle}
\begin{document}
\input{chapter1}
\end{document}

最初の一枚から分割原稿へ

TeXworks は軽いエディタなので、最初は一つの .tex で始めるのが向いています。PDF が出るようになってから章ごとにファイルを分け、子ファイルへルート指定を入れると、設定を複雑にせず長い文書へ育てられます。

  • まず main.tex だけで表紙・節見出し・短い本文を組む。
  • タイプセットのドロップダウンを一つ選び、同じツールで毎回 PDF が出ることを確認する。
  • 章を分けたら、子ファイルの先頭に % !TeX root = main.tex を置く。
  • 日本語文書では、% !TeX program = ... と UTF-8 の方針をプロジェクト内で統一する。

ログと中間ファイルを味方にする

TeXworks は画面が軽いので、ログを読む習慣も身につけやすいエディタです。タイプセット後に出るメッセージは、PDF ができたかどうかだけでなく、参照未解決、パッケージ不足、画像の読み込み失敗を教えてくれます。中間ファイルをむやみに嫌わず、調子が悪いときだけ掃除して組み直す、という距離感がちょうどよいです。

  • 参照が ?? のままなら、同じツールで 2 回以上タイプセットして .aux を更新する。
  • 目次や参考文献を大きく変えた後だけ、.aux.toc を削除して作り直す。
  • 画像が出ないときは、ログに出るファイル名と実際のパスを比べる。日本語や空白を含む名前は避ける。
  • 設定が複雑になりすぎたら、TeXworks 内に全部抱え込まず .latexmkrc や別エディタへの移行を考える。

SyncTeX(前方・後方検索)

TeXworks には Qt(Poppler)製の PDF プレビューが内蔵 されています。Acrobat などの外部ビューアに切り替える必要がなく、編集と確認を同じウィンドウで行き来できます。そして SyncTeX によって、ソースとプレビューの位置が双方向に対応づけられます。これは XeTeX の作者でもあるジェローム・ローランスらが整備した仕組みです。

使い方は直感的です。ソース上の場所から PDF の対応箇所へ飛ぶ(前方検索) には、ソースで Ctrl/Cmd-クリック します。逆に PDF の場所からソースの該当行へ戻る(後方・逆検索) には、プレビュー上で Ctrl/Cmd-クリック します。「いま直したい段落が、PDF のどこか」「この行はソースのどこか」をすぐ往復できるので、推敲が一気に楽になります。

うれしいことに、これは 設定なしで最初から動きます。SyncTeX の対応づけはコンパイル時に .synctex.gz という対応表を作ることで実現しますが、TeXworks は標準ツールでこれを有効にする --synctex=1 相当のオプション(前節の $synctexoption)を自動的に渡しているからです。自作ツールでも、引数に $synctexoption を含めておけば同じように同期が効きます。