はじめに

素粒子理論分野で論文を書くときには、多くの場合LaTeXが使われます。LaTeXは現在の基準ではお世辞にも使いやすいソフトとは言えませんが「みんなが使っている」ということと「代替品が無い」という理由で、現在でもこの分野の論文はほぼすべてLaTeXで書かれています。この状況はおそらく今後も長く変わらないでしょう。

LaTeXの環境としては、2024年現在ではWebアプリであるOverleafを使うのが一番楽で安定しているようです。なので、とりあえずLaTeXを使ってみようという人はOverleafを使うことをおすすめします。ただOverleafは、無料版だと履歴が1日分くらいしか残せないとか、コンパイルが遅い等々不満点もあるようです。また共同研究などでGithubを使って共同で論文を書く場合には無料版だとできない(未確認)ので共同研究者がOverleafを使ってくれない場合にはローカルにインストールする必要があると思います。

ここでは、そういう必要にせまられてローカルでLaTeXの環境を構築する人のために、なるべく最短で使えるようになるようにインストールや設定のしかたなどを説明します。念頭においているのは、科学分野の学生や研究者で英語の論文をLaTeXで書くし、日本語の書類もLaTeXで書く場合もあり、共同執筆することもある人です。OSはMacで説明しています。あと、この手の情報はすぐに古くなるので注意してください。以下2024年12月の情報です。

VSCode

インストールと基本的な設定

まずはVSCodeをインストールします。 Visual Studio Code - Code Editing. Redefinedに行ってダウンロードしてきて、指示にしたがってインストールします。

起動したらお好みにより日本語化します。VSCodeで絶対に覚えるべきショートカットは ⌘+⇧+P です。ここからすべてのメニューに行くことができます。さて、⌘+⇧+Pを押して“display”と打ってみるとメニューで“Configure display language”というのが出てくるので、それを選びます。そこから日本語を選ぶと拡張機能をダウンロードしてメニューなどを日本語に設定してくれます。

他の設定は⌘+,(コンマ)を押すことで行けます。おそらくこの段階で設定したいと思うことの一つはフォントの大きさでしょう。検索するなどしてEditor:Font Sizeを見つけて、お好みの値に設定してください。

ターミナル

LaTeXなどを用いる場合、ターミナルを使うことは避けることが難しいです。なのでここでは最低限の使い方を説明します。ターミナルを使うことに慣れている方はここは読み飛ばしてください。

VSCodeにはターミナルが内蔵されています。⌘+j で下部にターミナルのタブが開きます。下部にターミナルではないものが開いている場合には、その枠の上のところの「ターミナル」と書いてあるところを押してください。

ターミナルの使い方の基本は、コマンドを打ち込んで↵キーを押すとそのコマンドを実行するというものです。カレントディレクトリ(カレントフォルダー)という概念があって、ファイル名だけを指定すると、カレントディレクトリにあるその名前のファイルに対して操作を行うことになります。また、入力の際にコマンドやファイル名を途中まで入力してtabキーを押すと補完されます。

いくつか有用なコマンドを紹介します。

TeX Live

TeXの「本体」とライブラリ等すべてまとめたものはTeX Liveと呼ばれて配布されているので、これをインストールします。Macの場合は、TeX Liveに他に有用なソフトをまとめてMacTeXという名前で配布されています。MacTeX - TeX Wikiにインストールや設定のしかたの説明があります。

以下はhomebrewを用いたインストールを説明します。

Homebrew

Homebrewをインストールします。すでにHomebrewがインストールされている方は、ここは飛ばしてください。インストールされているかどうかは、ターミナルでbrewと入力してみると分かります。使い方が表示されればインストールされています。「コマンドがない」という趣旨のエラーが出たらインストールされていません。

インストールの仕方はHomebrew — The missing package manager for OS Xに行って、その指示に従ってください。基本的にコマンドをターミナルにコピペして入力することでインストールされます。

MacTeX

Homebrewが準備できたらMacTeXのインストールを行います。次のようにターミナルに入力していくことで、インストールできます。

  1. MacTeXのインストールをします。これは非常に長い時間(2時間くらい?)かかります。途中でパスワードを求められることもあります。

    brew install --cask mactex
    

    ここで一旦ターミナルを再起動する必要があるらしいです。

  2. アップデートをします。これも時間がかかる場合があります。

    sudo tlmgr update --self --all
    
  3. デフォルトの紙をA4にします。

    sudo tlmgr paper a4
    

必要な設定

latexmk

TeXで必要な回数texをかけてくれたり、必要ならbibtexなども自動的にやってくれるツールです。基本的に下で説明するlatex-workshopの中から使います。

latexmkを使うためには、設定ファイルを書く必要があります。一番良く使うであろうものを ~/.latexmkrc に書きます。VSCodeのメニューのファイル>新しいテキストファイルを選びます。そして次の設定をコピペします。

$texoption = ' %O -interaction=nonstopmode -file-line-error -synctex=1 %S';
$latex = 'uplatex'.$texoption;
$pdflatex = 'pdflatex'.$texoption;
$lualatex = 'lualatex'.$texoption;
$biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B';
$bibtex = 'pbibtex %O %B';
$makeindex = 'mendex %O -o %D %S';
$dvipdf = 'dvipdfmx %O -o %D %S';
$pdf_mode = 3;

できたら⌘+sを押して保存します。保存場所とファイル名を選ぶので次のようにしてください。

latex-workshopのインストール

VSCodeのパッケージlatex-workshopをインストールします。やり方は、次のとおりです。

テスト

ここまでで最低限必要な設定が終わったので、動くかどうかテストしてみましょう。

  \documentclass{jlreq}
  \begin{document}
  こんにちは世界!
  \end{document}

さらに設定

ここまでで、とりあえず使えるようになりました。ここから先は便利に使ったり、arXivや論文雑誌に投稿したり、他の人との共著を視野に入れた設定をします。

注意:Webで情報を調べると多くのサイトでsetting.jsonを書いて設定するやり方が出てきます。VSCodeを初めて使う人がこれをやるのはあまりおすすめできないです。よく分からないで、いろんなサイトのsetting.jsonをつぎはぎして、動かなくて泥沼になっている人を何人か見たことがあります。多くの必要な設定は設定画面からできます。ある程度慣れてきて細かい設定をやりたくなって、設定画面からできないようなことをやりたくなってからsetting.jsonを書き始めた方が良いと思います。

ショートカット

コンパイルする際に、いちいちメニューからやっていると面倒くさいです。なのでショートカットから正しくコンパイルできるようにします。

これで、⌘+⌥+bでコンパイルできるようになります。

この他にも、次のようなショートカットはよく使います。

他にも⌘+⇧+Pでコマンドパレットが開いてlatexで検索すると関係するコマンドが出てきます。ここにはショートカットも表示されるので、よく使いそうなものは覚えると便利です。

latexmkrc

latexmkの設定ファイルは上で書いた~/.latexmkrcの他にtexファイルと同じフォルダにあるlatexmkrcのファイルに書くこともできます。ファイル名の先頭のピリオドのあるなしに注意してください。texファイルと同じフォルダにある方が優先されます。

これを利用して、texの文書ごとに異なるコンパイルの仕方を設定することができます。むしろ、デフォルトに頼らず、文書ごとにlatexmkrcを書くべきだと思います。これは誰かにtexのソースを渡したり、共同執筆したりするときに、必ず書いた人が意図した方法でコンパイルされるようにするためです。また、arXivに投稿する論文はpdflatexでコンパイルされますが、そのような論文はpdflatexでコンパイルして表示を確かめるべきです。

以下にいくつか設定ファイルの例を示します(2024年12月ちょくちょく変えてます)。

  1. 日本語でuplatexを使用する場合:

    $texoption = ' %O -interaction=nonstopmode -file-line-error -synctex=1 %S';
    $latex = 'uplatex'.$texoption;
    $pdflatex = 'pdflatex'.$texoption;
    $lualatex = 'lualatex'.$texoption;
    $biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B';
    $bibtex = 'pbibtex %O %B';
    $makeindex = 'upmendex %O -o %D %S';
    $dvipdf = 'dvipdfmx %O -o %D %S';
    $pdf_mode = 3;
    
  2. 英語でpdflatexを使用する場合

    $texoption = ' %O -interaction=nonstopmode -file-line-error -synctex=1 %S';
    $latex = 'uplatex'.$texoption;
    $pdflatex = 'pdflatex'.$texoption;
    $lualatex = 'lualatex'.$texoption;
    $biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B';
    $bibtex = 'pbibtex %O %B';
    $makeindex = 'upmendex %O -o %D %S';
    $dvipdf = 'dvipdfmx %O -o %D %S';
    $pdf_mode = 1;
    
  3. 日本語か英語でlualatexを使用する場合

    $texoption = ' %O -interaction=nonstopmode -file-line-error -synctex=1 %S';
    $latex = 'uplatex'.$texoption;
    $pdflatex = 'pdflatex'.$texoption;
    $lualatex = 'lualatex'.$texoption;
    $biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B';
    $bibtex = 'pbibtex %O %B';
    $makeindex = 'upmendex %O -o %D %S';
    $dvipdf = 'dvipdfmx %O -o %D %S';
    $pdf_mode = 4;
    

上の3つの例では、$pdfmode だけが異なります。platexの設定は書いていませんが、uplatexでもよいならuplatexを使うべきです。不幸にしてスタイルファイルを強制されているなどの理由でplatexを使わなければならない場合にはuplatexの設定の中の"uplatex"を"platex"に書き換えればよいはずです。

pdflatexのテスト

arXivに投稿する論文はpdflatexで正しくコンパイルされるようにtexファイルを準備すべきです。これまで設定してきた環境でpdflatexで正しくコンパイルできるかどうかテストしてみましょう。

  \documentclass{article}
  \begin{document}
  Hello world!
  \end{document}

Git と Github

ある程度ちゃんとした文書を書く場合、特に共同執筆する場合にはGitやGithubを用いると便利です。これらを用いるもう少し詳しい動機等はバージョン管理ツールを使おうを見てください。

Gitの設定

GitそのものはMacなら最初から入っています。確認するためにVSCodeからターミナルを開いて次を入力してみてください。

  git version

バージョン情報などが出力されれば成功です。

最初にやることは、ユーザー名とemailアドレスを設定することです。あなたが作成している文書を改変したときに、ここで設定した名前とメールアドレスが記録されます。ターミナルで次を入力してください。Your Nameのところにあなたの名前、yourname@example.comにあなたのメールアドレスを入れてください

  git config --global user.name "Your Name"
  git config --global user.email yourname@example.com

次のように入力すると、現在のconfigが表示されます。

  git config --list

この出力の中のuser.nameuser.emailが正しく設定されていることを確認してください。

Gitを使ってみる

ここで、試しにGitを使ってみましょう。上で作ったpdflatextestのフォルダを例にして説明します。

さて、ファイルが増えてくるとバージョン管理したいファイルをいちいち選ぶのが面倒になります。だいたいバージョン管理したいファイルは決まっています。実はバージョン管理したくないファイルを最初から変更のところに表示させない方法があります。次のようにします。

  *.aux
  *.dvi
  *.log
  *.out
  *.toc
  *.synctex.gz
  *.fdb_latexmk
  *.bbl
  *.blg
  *.fls
  test.pdf

実際の執筆ではファイルを変更していって、適当なところでコミットするというのを繰り返します。今のpdflatextestのところにあるファイルは何してもいいものでしょうから、ここでいろいろ試してみてどういうことができるのかを確かめておくと良いと思います。特に、コミットを取り消す方法とか、差分を見る方法は大事かと思います。

Githubの設定

さて共同執筆したりする場合には変更の履歴などをリモートで共有する必要があります。このときに用いるのがGithubというサイトです。一人で書く場合にもここに上げておくとバックアップにもなって良いです。まずは GitHubに行ってアカウントを作っておきます。ここから先、VSCodeと連携するのは最初のリポジトリをあげる際についでに行います。

Githubを使ってみる

さて、上で作ったpdflatextestのフォルダの履歴をGithubにあげてみます。ここは連携の設定を兼ねています。

有用なツール

スペルチェック

スペルチェックがあると便利です。私はVSCodeの拡張機能のLTeX+というパッケージを使っています。これは簡単な文法チェックもやってくれるものです。

Github Copilot

Github CopilotとはAIで補完等してくれるものです。LaTeXで論文を書くときにも補完してくれます。ある程度まで無料で使えます。どの程度便利かはまあ書く内容にもよると思います。VSCodeの拡張機能で導入することができます。

Inkscape

Inkscapeは、ドロー系のお絵かきソフトで論文などに入れる図を書くのに使います。Macでもだいぶ使いやすくなりました。Homebrewでinstallできます。

  brew install --cask inkscape

数式を貼りたい場合、以下のような方法が可能です。

その他のメモ

pdfファイルをバージョン管理すべきか

LaTeXのプロジェクトで出来上がったpdfファイルは機械が作るものなので、原則に従えば.gitignoreに加えてバージョン管理から外すべきです。しかし、次のようなことはよくあります。

こういう場合、github上で(コンパイルすることなく)pdfファイルが見れるというのは便利です。なのでpdfファイルもバージョン管理に加えておく方が良いのかもしれません。

Windowsの場合

Windowsのコマンドラインでtexのプログラムやその他のコマンドラインプログラムを動かすと何故か非常に遅いです。なのでWindows Subsystem for Linux(WSL)を使うと良いと思います。Windows側でインストールしたVSCodeを使ってWSLのファイルを編集したりプログラムを動かしたりターミナルを使ったりできます。

Bibtex

LaTeXで文献リストを入れる場合、bibtexを用います。自動的に並べ替えてくれます。以下素粒子理論分野(あるいはhep-th分野)特有の慣習を含めた情報です。

Bibtexを用いるには、まず文献ファイル(bibファイル)を作る必要があります。〇〇.bibというテキストファイルを作り、文献の情報をフォーマットに従って書いていきます。これはINSPIREで検索して出てくる文献の場合には簡単で、出てきた文献のciteというところを押して出てくるダイアログボックスで右下のプルダウンメニューをBibtexにしてCopy to Clipboard押してコピペすれば良いです。INSPIREに無い文献の場合には、Google Scholarを調べるか、がんばって情報を手で書く必要があります。

bibtexを使うには文献スタイルファイル(bstファイル)も必要です。標準で用意されているスタイルにはなかなか素粒子理論分野の習慣に合っているものがありません。私はJacques Distler氏が作られた utphys.bstを使っています。これはhep-th分野で標準的に用いられる形式にしたがっていて、しかもarxivやdoiに自動的にリンクが貼られるという便利なものです。texファイルと同じディレクトリにutphys.bstを置いて、texファイルの中で\bibliographystyle{utphys}と書けば読み込ませることができます。

テンプレを作るスクリプト

LaTeXを最初に書き始める場合、いつも同じような作業をする必要があります。私はこれをスクリプトを書いてやっています。このまま人様に使ってもらえるような代物でもないですが、ご参考のために公開します。