素粒子理論分野で論文を書くときには、多くの場合LaTeXが使われます。LaTeXは現在の基準ではお世辞にも使いやすいソフトとは言えませんが「みんなが使っている」ということと「代替品が無い」という理由で、現在でもこの分野の論文はほぼすべてLaTeXで書かれています。この状況はおそらく今後も長く変わらないでしょう。
LaTeXの環境としては、2024年現在ではWebアプリであるOverleafを使うのが一番楽で安定しているようです。なので、とりあえずLaTeXを使ってみようという人はOverleafを使うことをおすすめします。ただOverleafは、無料版だと履歴が1日分くらいしか残せないとか、コンパイルが遅い等々不満点もあるようです。また共同研究などでGithubを使って共同で論文を書く場合には無料版だとできない(未確認)ので共同研究者がOverleafを使ってくれない場合にはローカルにインストールする必要があると思います。
ここでは、そういう必要にせまられてローカルでLaTeXの環境を構築する人のために、なるべく最短で使えるようになるようにインストールや設定のしかたなどを説明します。念頭においているのは、科学分野の学生や研究者で英語の論文をLaTeXで書くし、日本語の書類もLaTeXで書く場合もあり、共同執筆することもある人です。OSはMacで説明しています。あと、この手の情報はすぐに古くなるので注意してください。以下2024年12月の情報です。
まずはVSCodeをインストールします。 Visual Studio Code - Code Editing. Redefinedに行ってダウンロードしてきて、指示にしたがってインストールします。
起動したらお好みにより日本語化します。VSCodeで絶対に覚えるべきショートカットは ⌘+⇧+P です。ここからすべてのメニューに行くことができます。さて、⌘+⇧+Pを押して“display”と打ってみるとメニューで“Configure display language”というのが出てくるので、それを選びます。そこから日本語を選ぶと拡張機能をダウンロードしてメニューなどを日本語に設定してくれます。
他の設定は⌘+,(コンマ)を押すことで行けます。おそらくこの段階で設定したいと思うことの一つはフォントの大きさでしょう。検索するなどしてEditor:Font Sizeを見つけて、お好みの値に設定してください。
LaTeXなどを用いる場合、ターミナルを使うことは避けることが難しいです。なのでここでは最低限の使い方を説明します。ターミナルを使うことに慣れている方はここは読み飛ばしてください。
VSCodeにはターミナルが内蔵されています。⌘+j で下部にターミナルのタブが開きます。下部にターミナルではないものが開いている場合には、その枠の上のところの「ターミナル」と書いてあるところを押してください。
ターミナルの使い方の基本は、コマンドを打ち込んで↵キーを押すとそのコマンドを実行するというものです。カレントディレクトリ(カレントフォルダー)という概念があって、ファイル名だけを指定すると、カレントディレクトリにあるその名前のファイルに対して操作を行うことになります。また、入力の際にコマンドやファイル名を途中まで入力してtabキーを押すと補完されます。
いくつか有用なコマンドを紹介します。
pwd
: カレントディレクトリを出力します。cd (ディレクトリ名)
:ディレクトリ名で表される。
cd
: ディレクトリ名を入れずにcd
だけ入力するとホームディレクトリに移動します。cd ..
: 一つ上のディレクトリに移動しますls
: カレントディレクトリにあるファイルとディレクトリのリストを表示します。open (ファイル名)
: そのファイルを関連付けされたアプリで開きます。
open (ディレクトリ名)
: そのディレクトリをfinderで開きます。特にopen .
とするとカレントディレクトリをfinderで開きます。TeXの「本体」とライブラリ等すべてまとめたものはTeX Liveと呼ばれて配布されているので、これをインストールします。Macの場合は、TeX Liveに他に有用なソフトをまとめてMacTeXという名前で配布されています。MacTeX - TeX Wikiにインストールや設定のしかたの説明があります。
以下はhomebrewを用いたインストールを説明します。
Homebrewをインストールします。すでにHomebrewがインストールされている方は、ここは飛ばしてください。インストールされているかどうかは、ターミナルでbrew
と入力してみると分かります。使い方が表示されればインストールされています。「コマンドがない」という趣旨のエラーが出たらインストールされていません。
インストールの仕方はHomebrew — The missing package manager for OS Xに行って、その指示に従ってください。基本的にコマンドをターミナルにコピペして入力することでインストールされます。
Homebrewが準備できたらMacTeXのインストールを行います。次のようにターミナルに入力していくことで、インストールできます。
MacTeXのインストールをします。これは非常に長い時間(2時間くらい?)かかります。途中でパスワードを求められることもあります。
brew install --cask mactex
ここで一旦ターミナルを再起動する必要があるらしいです。
アップデートをします。これも時間がかかる場合があります。
sudo tlmgr update --self --all
デフォルトの紙をA4にします。
sudo tlmgr paper a4
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を押して保存します。保存場所とファイル名を選ぶので次のようにしてください。
VSCodeのパッケージlatex-workshopをインストールします。やり方は、次のとおりです。
ここまでで最低限必要な設定が終わったので、動くかどうかテストしてみましょう。
\documentclass{jlreq}
\begin{document}
こんにちは世界!
\end{document}
ここまでで、とりあえず使えるようになりました。ここから先は便利に使ったり、arXivや論文雑誌に投稿したり、他の人との共著を視野に入れた設定をします。
注意:Webで情報を調べると多くのサイトでsetting.jsonを書いて設定するやり方が出てきます。VSCodeを初めて使う人がこれをやるのはあまりおすすめできないです。よく分からないで、いろんなサイトのsetting.jsonをつぎはぎして、動かなくて泥沼になっている人を何人か見たことがあります。多くの必要な設定は設定画面からできます。ある程度慣れてきて細かい設定をやりたくなって、設定画面からできないようなことをやりたくなってからsetting.jsonを書き始めた方が良いと思います。
コンパイルする際に、いちいちメニューからやっていると面倒くさいです。なのでショートカットから正しくコンパイルできるようにします。
latexmk (latexmkrc)
に書き換えます。これで、⌘+⌥+bでコンパイルできるようになります。
この他にも、次のようなショートカットはよく使います。
他にも⌘+⇧+Pでコマンドパレットが開いてlatexで検索すると関係するコマンドが出てきます。ここにはショートカットも表示されるので、よく使いそうなものは覚えると便利です。
latexmkの設定ファイルは上で書いた~/.latexmkrcの他にtexファイルと同じフォルダにあるlatexmkrcのファイルに書くこともできます。ファイル名の先頭のピリオドのあるなしに注意してください。texファイルと同じフォルダにある方が優先されます。
これを利用して、texの文書ごとに異なるコンパイルの仕方を設定することができます。むしろ、デフォルトに頼らず、文書ごとにlatexmkrcを書くべきだと思います。これは誰かにtexのソースを渡したり、共同執筆したりするときに、必ず書いた人が意図した方法でコンパイルされるようにするためです。また、arXivに投稿する論文はpdflatexでコンパイルされますが、そのような論文はpdflatexでコンパイルして表示を確かめるべきです。
以下にいくつか設定ファイルの例を示します(2024年12月ちょくちょく変えてます)。
日本語で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;
英語で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;
日本語か英語で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"に書き換えればよいはずです。
arXivに投稿する論文はpdflatexで正しくコンパイルされるようにtexファイルを準備すべきです。これまで設定してきた環境でpdflatexで正しくコンパイルできるかどうかテストしてみましょう。
\documentclass{article}
\begin{document}
Hello world!
\end{document}
ある程度ちゃんとした文書を書く場合、特に共同執筆する場合にはGitやGithubを用いると便利です。これらを用いるもう少し詳しい動機等はバージョン管理ツールを使おうを見てください。
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.name
とuser.email
が正しく設定されていることを確認してください。
ここで、試しにGitを使ってみましょう。上で作ったpdflatextestのフォルダを例にして説明します。
test.tex
の上にマウスカーソルを持っていくと横に3つのアイコン(紙と曲った矢印と+)が現れるので、+を押します。するとtext.tex
が「ステージされている変更」というところに移動します。同様にlatexmkrc
もステージされている変更のところに移動します。ここでステージされている変更に移動したファイルは変更されたファイルのうちバージョン管理したいファイルです。原則として手で書いたファイルをバージョン管理し、自動的に生成されたファイルはしません。これはあくまで原則なので臨機応変に便利なようにしたほうがいいと思います。さて、ファイルが増えてくるとバージョン管理したいファイルをいちいち選ぶのが面倒になります。だいたいバージョン管理したいファイルは決まっています。実はバージョン管理したくないファイルを最初から変更のところに表示させない方法があります。次のようにします。
pdflatextest
の下に新しいファイルを作って.gitignore
という名前にします。.gitignore
の中に次をコピペして保存します。これは無視するファイルを並べたものです。*
はワイルドカードと呼ばれていて任意の文字列が入ります。 *.aux
*.dvi
*.log
*.out
*.toc
*.synctex.gz
*.fdb_latexmk
*.bbl
*.blg
*.fls
test.pdf
.gitignore
だけになっているでしょうか?他にファイルが表示されている場合、それがあなたが作った覚えのないファイルなら、.gitignore
の中にそのファイル名を書くと「変更」のところから消えるはずです。作った覚えがあってバージョン管理したいならそのままにします。実際の執筆ではファイルを変更していって、適当なところでコミットするというのを繰り返します。今のpdflatextest
のところにあるファイルは何してもいいものでしょうから、ここでいろいろ試してみてどういうことができるのかを確かめておくと良いと思います。特に、コミットを取り消す方法とか、差分を見る方法は大事かと思います。
さて共同執筆したりする場合には変更の履歴などをリモートで共有する必要があります。このときに用いるのがGithubというサイトです。一人で書く場合にもここに上げておくとバックアップにもなって良いです。まずは GitHubに行ってアカウントを作っておきます。ここから先、VSCodeと連携するのは最初のリポジトリをあげる際についでに行います。
さて、上で作ったpdflatextest
のフォルダの履歴をGithubにあげてみます。ここは連携の設定を兼ねています。
pdflatextest
のフォルダを開きます。GitHub
がGitHubを使用してサインインしようとしています。」というメッセージが出ます。ここで連携の設定をしますので「許可」のボタンを押してください。
Signed in as (Githubのユーザー名)
と出ていると思うので、continueを押してください。pdflatextest
というのが出ています。これはリモートリポジトリに付けられる名前です。pdflatextest
のリポジトリを確認してみてください。スペルチェックがあると便利です。私はVSCodeの拡張機能のLTeX+というパッケージを使っています。これは簡単な文法チェックもやってくれるものです。
Github CopilotとはAIで補完等してくれるものです。LaTeXで論文を書くときにも補完してくれます。ある程度まで無料で使えます。どの程度便利かはまあ書く内容にもよると思います。VSCodeの拡張機能で導入することができます。
Inkscapeは、ドロー系のお絵かきソフトで論文などに入れる図を書くのに使います。Macでもだいぶ使いやすくなりました。Homebrewでinstallできます。
brew install --cask inkscape
数式を貼りたい場合、以下のような方法が可能です。
inkscape &
と入力してリターンを押すとinkscapeが起動します。そしてInkscapeのメニューのエクステンション>テキスト>公式(pdflatex)を選ぶとダイアログが出てきてlatexの書式で数式が書けます。LaTeXのプロジェクトで出来上がったpdfファイルは機械が作るものなので、原則に従えば.gitignoreに加えてバージョン管理から外すべきです。しかし、次のようなことはよくあります。
こういう場合、github上で(コンパイルすることなく)pdfファイルが見れるというのは便利です。なのでpdfファイルもバージョン管理に加えておく方が良いのかもしれません。
Windowsのコマンドラインでtexのプログラムやその他のコマンドラインプログラムを動かすと何故か非常に遅いです。なのでWindows Subsystem for Linux(WSL)を使うと良いと思います。Windows側でインストールしたVSCodeを使ってWSLのファイルを編集したりプログラムを動かしたりターミナルを使ったりできます。
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を最初に書き始める場合、いつも同じような作業をする必要があります。私はこれをスクリプトを書いてやっています。このまま人様に使ってもらえるような代物でもないですが、ご参考のために公開します。