レポートを頻繁に書く理系大学生の中には、Wordによる文書作成で体裁の調整に苦労した経験を持つ人も多いのではないでしょうか。しかし、LaTeXの利用を考えると敷居が高く感じるかもしれません。この記事では、LaTeXを導入するための基本的なステップを解説します。めんどくささから開放されたいのに、LaTeXの導入につまづいている人、そんな人のためのガイドとして、この記事が役立つことを願っています。
私自身、Latexを導入して以降、レポート作成の効率が格段に上がり、よりレポートの内容に集中できるようになりました。多少の手間はかかりますが、LaTeXの導入は大きなメリットがあります。それでははじめましょう!
実行環境
- Windows 11 Home
- バージョン: 22H2
- ビルド: 22621.1992
- WSL2
- Ubuntu 20.04 LTS
- Visual Studio Code
WSL2の導入方法については、以下の記事を参照してください。
筆者はAIによるコード補完ツールであるGithub Copilot
を利用しています。学生の方は学生証による認証を行うことで、無料で利用できます。詳しくは以下の記事を参照してください。
登場人物
- ケン: LaTeX初心者。物理学を専攻しており、Wordでレポートを書く際の体裁に不満を持っている。
- リサ: LaTeX経験者。ケンの先輩で、数学専攻。高度な数式の処理やレポート作成の経験が豊富で、LaTeXの実用的な使い方をケンに教える。
LaTeXの導入
LaTeXとは
ケン「ねえリサ、最近大学のレポートをWordで書いてたんだけど、、」
リサ「うん、どしたの?」
ケン「体裁の調整が面倒くさいんだよね」
リサ「そうだよね、Wordは体裁を調整するのに時間がかかるよね」
ケン「そうなんだよね、でも、LaTeXっていうのがあるらしいんだよ」
リサ「あー、LaTeXね、数学科ではよく使うよ」
リサ「LaTeXは、数式を含む文書を作成するためのソフトウェアだよ」
ケン「設定とか難しそうだから、敬遠してたんだけど、使い方教えてくれない?」
リサ「いいよ~、使い方は簡単だから、一緒に設定していこうか」
ケン「ありがとう!」
LaTeXのインストール
リサ「私はWSL2でLaTeXを使ってるんだけど、ケンはどうする?」
ケン「WSL2ってなに?」
リサ「Windows上でLinuxを動かすことができるようになる機能だよ」
ケン「なるほど、とりあえずそれでやってみるか」
ここからはWSL2の環境が構築されていることを前提として進めていきます。
WSL2の導入方法については、以下の記事を参照してください。
https://dev.classmethod.jp/articles/how-to-setup-wsl2-for-windows11/
リサ「じゃあ、LaTeXのインストールを始めるよ」
リサ「Tex Wikiを参考にやっていくね」
wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
tar xvf install-tl-unx.tar.gz
ケン「これでLaTeXがインストールできたの?」
リサ「いや、これはインストーラーのダウンロードだよ」
ケン「そうなんだ、じゃあこれを実行すればいいの?」
リサ「そう!じゃあやってみて👍」
cd install-tl-2*
sudo ./install-tl -no-gui -repository http://mirror.ctan.org/systems/texlive/tlnet/
ケン「わ、なにこれ、なんか出てきた」
> [sudo] password for ken:
リサ「これはパスワードを入力するところだよ」
ケン「パスワード?」
リサ「WSL2のパスワードだよ」
リサ「入力しても文字が表示されないけど、入力してEnter
を押してみて」
ケン「わかった!」
ケン「またなにか出てきたけど、これは何かを選べばいいの?」
> ...
> Actions:
> <I> start installation to hard disk
> <P> save installation profile to 'texlive.profile' and exit
> <Q> quit
> Enter command:
リサ「これはインストーラーが何をすればいいか聞いてるんだよ」
ケン「じゃぁ、インストールを始めるから<I>
だね」
ケン「でも、どうやって選ぶの?」
リサ「キーボードでI
を押してEnter
を押せばいいよ」
ケン「わかった!」
> Enter command: I
> Installing to: /usr/local/texlive/2023
> Installing [1/4, time/total: ??:??/??:??]: hyphen-base [22k]
> Installing [2/4, time/total: 00:00/00:00]: kpathsea [1048k]
> Installing [3/4, time/total: 00:00/00:00]: texlive-scripts [530k]
> Installing [4/4, time/total: 00:00/00:00]: texlive.infra [547k]
> Time used for installing the packages: 00:00
> Installing [0001/4561, time/total: ??:??/??:??]: 12many [376k]
> Installing [0002/4561, time/total: 00:01/02:58:04]: 2up [56k]
> Installing [0003/4561, time/total: 00:01/02:35:10]: a0poster [119k]
> ...
ケン「お、なんか始まったぞ」
ケン「え、ちょっと待って、0001/4561
ってなんだよ」
リサ「これはインストールするパッケージの数だよ」
ケン「4561個もあるの?」
リサ「そうだよ、あとで追加でインストールするのだるいでしょ」
リサ「だから、最初から全部入れておくよ👍」
ケン「そうだったのか、たしかにめんどくさいね」
ケン「でも、これ結構時間かかりそうだな」
リサ「そうだね、00:01/02:35:10
って書いてあるから、2時間はかかりそうだね」
ケン「そうなんだ、だいぶ暇だね」
リサ「そうだね、暇だから、VSCode側の設定をしていこうか」
まじで2時間くらいかかるので、暇なときにやってください。
ケンとリサのように、この時間でVSCodeの設定をしていくとちょうどよいと思います。
VSCodeの設定
ターミナルからVSCodeを開く
ケン「VSCodeの設定ってなにするの?」
リサ「VSCodeでLaTeXを書くための拡張機能を入れるよ」
ケン「拡張機能ってなに?」
リサ「VSCodeに外部の機能を追加するための機能だよ」
リサ「LaTeXを編集しやすいように、VSCodeにLaTeXの機能を追加するんだ」
ケン「なるほど、じゃあやってみるか」
リサ「じゃあ、ターミナルからVSCodeを起動してみようか」
ケン「でも今、ターミナルでLaTeXのインストールしてるんだけど」
リサ「そしたら、新しいウィンドウでターミナルを開いてみようか」
ケン「新しいウィンドウ?」
リサ「さっきと同じようにターミナルを開くだけでいいよ」
ケン「わかった!」
リサ「そしたら作業ディレクトリを作って、VSCodeを起動してみようか」
※すでにWSL2でVSCodeを起動している場合はこの操作は不要です。
mkdir ~/workspace # 作業ディレクトリを作成
code ~/workspace # VSCodeを起動
ケン「code
コマンドで起動できるんだ!」
※初回起動時は以下のようにVSCode Serverのインストールが始まります。
> Installing VS Code Server for x64 (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
> Downloading: 55%
> ...
リサ「VSCodeのインストールが始まったね」
ケン「お、VCCodeが起動した」
リサ「じゃあ、拡張機能をインストールしていこうか」
拡張機能のインストール
リサ「このURLを開いて、LaTeX Workshop
をインストールしてみて」
ケン「わかった!」
ケン「ブラウザで開いたら、Install
を押せばいいのね」
リサ「そうだよ、押してみて」
ケン「お、VSCodeが自動で開いて、インストールが始まった」
リサ「そうだね、インストールが終わったら、VSCodeを再起動してみて」
ケン「おっけー!」
リサ「次は、VSCodeの編集機能の設定をしていこうか」
VSCodeの編集機能の設定(settings.json
)
リサ「VSCodeの編集機能の設定は、settings.json
っていうファイルに書くんだ」
ケン「settings.json
ってどこにあるの?」
リサ「今回は作業ディレクトリの中に作るよ」
ケン「作業ディレクトリって、~/workspace
のこと?」
リサ「こんなかんじで.vscode
っていうディレクトリを作って、」
リサ「その中にsettings.json
っていうファイルを作るんだ」
~/workspace
└── .vscode
└── settings.json
ケン「なるほど、」
ケン「よしできた!」
リサ「そしたらsettings.json
を開いて設定していこうか」
ケン「どうやって設定するの?」
リサ「これをコピペすればいいよ」
ケン「なるほど、これをコピペすればいいのね」
リサ「私が使い始めたときに、いろいろ調べて設定したものだよ」
リサ「あんまわかんないところもあると思うけど、意外と気が利く設定だと思う!」
※
settings.json
は一部、以下の記事を参考にしています。
https://qiita.com/rainbartown/items/d7718f12d71e688f3573
なお、ビルドに関する設定は私の方で変更したものを記載しています。
{
// 言語それぞれの設定
"[tex]": {
"editor.suggest.snippetsPreventQuickSuggestions": false,
"editor.formatOnSave": false
},
"[latex]": {
"editor.wordWrap": "on",
"editor.wordSeparators": "./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}`~?。.、,()「」『』[]{}《》てにをはがのともへでや ",
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.detectIndentation": false,
"editor.suggestSelection": "recentlyUsedByPrefix",
"editor.suggest.snippetsPreventQuickSuggestions": false,
"editor.quickSuggestions": {
"other": true,
"comments": false,
"strings": false
},
"editor.bracketPairColorization.enabled": true,
"editor.unicodeHighlight.invisibleCharacters": true,
"editor.unicodeHighlight.allowedCharacters": {
",": true,
".": true,
"!": true,
"?": true,
"[": true,
"]": true,
"{": true,
"}": true,
"<": true,
">": true,
},
"editor.stickyScroll.enabled": true,
},
// 使用パッケージのコマンドや環境の補完を有効にする
"latex-workshop.intellisense.package.enabled": true,
// 生成ファイルを削除するときに対象とするファイル
"latex-workshop.latex.clean.fileTypes": [
"*.aux",
"*.bbl",
"*.blg",
"*.idx",
"*.ind",
"*.lof",
"*.lot",
"*.out",
"*.toc",
"*.acn",
"*.acr",
"*.alg",
"*.glg",
"*.glo",
"*.gls",
"*.ist",
"*.fls",
"*.log",
"*.fdb_latexmk",
"*.snm",
"*.nav",
"*.dvi",
"*.synctex.gz"
],
// 生成ファイルを"out"ディレクトリに吐き出す
"latex-workshop.latex.outDir": "out",
// ビルドのレシピ
"latex-workshop.latex.recipes": [
{
"name": "latexmk-uplatex",
"tools": [
"latexmk-uplatex"
]
}
],
// ビルドのツール(latexmk-uplatexを使用)
"latex-workshop.latex.tools": [
{
"name": "latexmk-uplatex",
"command": "latexmk",
"args": [
"-e",
"$latex=q/uplatex %O -synctex=1 -interaction=nonstopmode -file-line-error %S/",
"-e",
"$bibtex=q/upbibtex %O %B/",
"-e",
"$biber=q/biber %O --bblencoding=utf8 -u -U --output_safechars %B/",
"-e",
"$makeindex=q/upmendex %O -o %D %S/",
"-e",
"$dvipdf=q/dvipdfmx %O -o %D %S/",
"-f",
"-norc",
"-gg",
"-pdfdvi",
"-outdir=%OUTDIR%",
"%DOC%"
],
"env": {}
}
],
// 自動整形の設定
"latex-workshop.latexindent.args": [
"-c",
"%DIR%/",
"%TMPFILE%",
"-y=defaultIndent: '%INDENT%'"
],
"latex-workshop.latexindent.path": "latexindent"
}
ケン「結構長いね」
リサ「いろいろ設定しているからね」
リサ「便利なもの集めたら、こんなになっちゃった」
ケン「よし、これで設定は完了だね」
リサ「一旦、LaTeXのインストールが終わったかみてみようか」
インストールの確認
リサ「ターミナルで確認してみよう」
ケン「最初に開いたターミナルを見ればいいのかな?」
リサ「そうだね」
> ...
> Logfile: /usr/local/texlive/2023/install-tl.log
ケン「これでインストールが終わったのか」
リサ「そうみたい」
リサ「そしたら、実際に.tex
ファイルを作ってみよう」
ケン「よし、やってみよう!」
実際に.tex
ファイルを作ってみる
リサ「まずはこんなかんじでファイルを作ろう」
~/workspace
├── .vscode
│ └── settings.json
└── sample
└── sample.tex
ケン「こんな感じでいいの?」
リサ「これでいいと思うよ」
ケン「どんな感じで書けばいいのかな?」
リサ「まずは、こんな感じで書いてみよう」
\documentclass[uplatex,dvipdfmx]{jsarticle}
\begin{document}
Hello, World!
これは、LaTeXのサンプルです。
\end{document}
リサ「お、いい感じだね!」
ケン「でも、これだとpdfファイルにならないよね?」
リサ「よく気づいたね」
リサ「pdfファイルにするには、ビルドする必要があるんだ」
ビルドしてみる
ケン「ビルドって何?」
リサ「ビルドは、.tex
ファイルに書いたコードを変換することだよ」
ケン「変換?」
リサ「そう、さっき長い時間かけてインストールしたものが、それをやってくれるんだ」
ケン「なるほど、じゃあやってみよう」
リサ「じゃあ、.tex
ファイルを開いて、、」
リサ「Ctrl + Shift + P
を押して、コマンドパレットを開いて」
ケン「コマンドパレット?」
リサ「そう、これを開くと、いろいろなコマンドを実行できるよ」
ケン「なるほど、じゃあ、build
と入力してみよう」
リサ「そうそう、Latex Workshop: Build LaTeX project
を選択して」
リサ「Enter
を押してみて」
ケン「お、なんか新しいディレクトリができてる!」
ケン「なんか、よくわかんないファイルがいっぱい入ってるね」
~/workspace
├── .vscode
│ └── settings.json
├── sample
├── out
│ ├── main.aux
│ ├── main.dvi
│ ├── main.fdb_latexmk
│ ├── main.fls
│ ├── main.log
│ ├── main.pdf
│ └── main.synctex.gz
└── main.tex
リサ「これで、pdfファイルができたんだ」
ケン「他のファイルは何?」
リサ「.aux
とか.log
とかは、ビルドのログだよ」
ケン「なるほど、じゃあ、pdfファイルを開いてみよう」
リサ「そうだね」
ケン「お、できてる!」
リサ「これで、LaTeXの環境構築は完了だね」
ケン「ありがとう、リサ!」
リサ「どういたしまして」
まとめ
- WSL2とVSCodeでLaTeXの環境構築をした
- LaTeXのファイルを書いてみた
- 書いたファイルをビルドしてみた
ケン「今日はありがとうね、リサ」
リサ「わからないことがあったら、いつでも聞いてね」
ケン「今度実際のレポートの書き方教えてよ」
リサ「私が暇なときにね~」
ケン「わかった!」
ということで、LaTeXの環境構築は完了です。
もし困ったことがあれば、本記事のコメント欄に書いてください!
さて、「実際のレポートの書き方」は、気が向いたら書きます。
この辺は、専攻する分野によって違うので、一概には言えないですよね・・・
おまけ
私がLaTeXを利用し始めて以来、生産性が飛躍的に向上したと感じています。特に有益なのがCopilotとの統合機能です。レポートを書くとき、それなりに整理された文章を書く必要がありますよね。そのような時、Copilotが自動補完を提供してくれるので、非常に役立ちます。LaTeXのコードの記述が面倒だという意見もありますが、実際にはそれもCopilotが自動補完してくれるので、コードが正しいかどうかだけに注意を払えばいいので、レポートの作成がだいぶ楽になります。
ここら辺の話は、また別の記事で書きたいと思います。