[研究室向け]texの導入と設定方法・Q&A

<details><summary>更新履歴(2024/5/2)</summary><div>

【2023.9.12】
少なくともmidterm_preamble.texでは動作することを確認済．
時間があるときに追記していきます．

【2023.9.25】
preample.tex(卒業論文用2段組プリアンブル)を修正し，動作することを確認．
各ファイルをzipファイルにまとめてQ&Aに内容追加．

【2023.10.26】
WSLでのビルド方法を追記．

【2024.4.30】
2024年版のtexで動作することを確認したため，旧バージョンのインストール方法を格納しました．

【2024.5.2】
texやVSCodeのインストール方法を追記しました．

</div></details>

## このページは？

このページは藤波研究室で各種ドキュメント(プロポーザル，月例報告，中間発表，卒論...)を記述するときにほぼ必須となるtexやVSCodeの導入方法と，プリアンブルの使い方をまとめたページです．
「そもそもtexを入れられない」や「プリアンブルを使ってビルドできない」などの際に解決の一助になれば幸いです．

インストール方法はステップごとに記載しています．texやVSCodeを全く触ったことが無くても導入できるよう写真を多めに添付していますが，バージョンなどによって違いがあるかもしれません．
また，既にインストールや設定している場合は，必要に応じて読み飛ばしてください．

★texもVSCodeも入ってないよ！->[1. texの導入](#1-texの導入)へ
★texやVSCodeだけは入ってるよ！->[2.2 拡張機能のインストール](#22-拡張機能のインストール)へ
★VSCode上でtexのビルドができるよ！->[3.2 setting.jsonを編集](#32-settingjsonを編集)へ

**プリアンブルを使う上でよくある質問やトラブルは[Q&A](#qa)にまとめてあるので，困ったときは一読してみてください**．

## 1. texの導入

※本章は[【大学生向け】LaTeX完全導入ガイド Windows編 (2022年)](https://qiita.com/passive-radio/items/623c9a35e86b6666b89e)を参考にしています．

[TeX Users Group](https://mirror.ctan.org/systems/texlive/tlnet/install-tl-windows.exe)[^tex-users-group]からtexのインストーラーをダウンロードし，実行します．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/54f6cdad-8c3d-b25a-0173-3a5cb683c3de.png)

インストールを進めていくと，```TeX Liveインストーラー```というウィンドウが表示されます．しばらく待っていると```TeX Live 20**インストーラー```という画面に切り替わりますが，もし切り替わらない場合は右下の```特定のミラーを選択```>```Asia```>```Japan```と選択し，いずれかのURLをクリックしてみてください．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/4debcc1c-86d5-2a40-ba00-de0ca15dbe1e.png)

```TeX Live 20**インストーラー```という画面ではtexのインストールにあたって設定を変更することができますが，特に変える必要はありません．右下の```インストール```を押しましょう．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/24f77894-1414-0288-e59d-fd1fe5b05d8e.png)

これでインストールは終わり...かと思いきやパッケージのインストールが始まります．回線速度によらず，**パッケージのインストールは数十分～数時間以上掛かる**ので気長に待ちましょう．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/fabdfdca-878b-b05f-5c5d-feafe7f5f58c.png)

※更新日時点では最新版で動作することを確認していますが，万が一不具合が発生した場合は旧バージョンをインストールしてみてください．

<details><summary>旧バージョンのインストール方法はこちら(クリックすると開きます)</summary><div>

**1.1 既存のtexを消去(推奨)**

2022年バージョン以外のtexが導入されている場合，並行して旧バージョンをインストールすることで不具合を起こす可能性が高いため，先行して削除することをおすすめします．

削除はスタートメニューから「Tex Live ****」->「Uninstall TeX Live」をクリックすることで行えます．**くれぐれも保存されているフォルダーを直接削除しないでください**．

![スクリーンショット 2023-09-28 141409.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/8a86f0d0-5f73-d8a7-1e79-41f56cb339bb.png)

**1.1 旧バージョンのtexを導入**

現行バージョン(2023)のtexだとコンパイルが回らない可能性あるため，まずは旧バージョン
(動作が保証されているバージョン)のtexをインストールします．

1. [ここ](https://texlive.texjp.org/2022/tlnet/install-tl.zip)[^1]からインストーラーをダウンロード[^2]．リンクから直接ダウンロード出来ない場合は[日本語 TeX 開発コミュニティ](https://texlive.texjp.org/)にアクセスし，```2022/tlnet/install-tl.zip```をダウンロード．
2. ダウンロードしたファイルを展開し，PowerShellにて以下のコマンドを実行．
    ```powershell
    .\install-tl-windows.bat -repository ftp://tug.org/texlive/historic/2022/tlnet-final/
    ```
3. 設定は特に変更せずインストール．**現行バージョンと違ってバックアップサーバーからデータをダウンロードするため，インストールに半日程度掛かります**．余裕を持って作業しましょう．

</div></details>

## 2. VSCodeのインストール・拡張機能の設定
### 2.1 VSCodeのインストール

[Download Visual Studio Code](https://code.visualstudio.com/download)を開き，```Windows```をクリックしてインストーラーをダウンロードし，実行します．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/1fbb39f2-b33d-67bd-68b8-3fcd4fc0dba5.png)

インストールが完了したら，ソフトを起動してみましょう．恐らく言語が英語に設定されていると思うので，画面上部の```View```>```Command Pallette```をクリックします．

![Windows 10 x64-2024-05-02-19-27-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/795a8374-ac44-9694-3927-5e18dec2903b.png)

続いて，上部中央に表示されたダイアログに```Configure Display Language```と入力し，表示された設定項目をクリックします．クリック直後は```English```しか表示されないと思いますが，少し待っていると```日本語```という項目が表示されるので，クリックし，VSCodeを再起動します．

![Windows 10 x64-2024-05-02-19-27-28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/6bc4f681-aaba-287f-7377-4606fa09a5af.png)

### 2.2 拡張機能のインストール

画面左側の拡張機能ボタン(四角形が4つ表示されたボタン)をクリックし，拡張機能ウィンドウに切り替えます．

![Windows 10 x64-2024-05-02-19-28-29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/92c5c6a3-3115-eed4-f355-13f6a69fdb22.png)

```Marketplaceで拡張機能を検索する```と表示されたボックスに```tex workshop```と入力し，一番上に表示された```LaTeX Workshop```をインストールします．

![Windows 10 x64-2024-05-02-19-28-41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/d82c5cd4-f9e7-e847-969b-44082aaba460.png)

## 3. VSCodeの設定

### 3.1 setting.jsonを開く

VSCodeを開き，画面左下の設定ボタン(歯車マーク)から```設定```をクリックします．

![スクリーンショット (53).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/fda5c34b-a985-36ea-f31f-f28468d9f7b2.png)

表示された設定画面の右上，```設定(jsonを開く)```ボタン(矢印のついたファイルマーク)をクリックし，```setting.json```ファイルを開きます．

![スクリーンショット (50).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/2bffb7e8-c5d3-9213-9a83-96a2321ae27b.png)

![スクリーンショット (51).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/cf9eb034-5f53-4335-ab50-ad7e3167915e.png)

### 3.2 setting.jsonを編集

```setting.json```に以下の内容を追記します．
なお，既にtexの設定がされている場合は上書きすることをおすすめします．

<details><summary>setting.json(クリックすると開きます)</summary><div>

```json:setting.json
    // Latexの設定ここから
    "latex-workshop.latex.recipes": [
        //bibtexを使用する場合
        {
            "name": "toolcain_bibtex",
            "tools": [
                "Step 1: ptex2pdf",
                "Step 2: pbibtex",
                "Step 3: ptex2pdf",
                "Step 4: ptex2pdf"
            ]
        },
        //==============================
        //==============================
        //bibtexを使用しない場合
        {
            "name": "toolchain_no_bibtex",
            "tools": [
                "Step 1: ptex2pdf",
                "Step 3: ptex2pdf",
            ]
        },
        {
            "name": "lualatex",
            "tools": [
                "lualatex",
            ],
        },
        {
            "name": "lualatex twice compile",
            "tools": [
                "lualatex",
                "lualatex",
            ]
        },
        {
            "name": "lualatex with reference",
            "tools": [
                "lualatex",
                "upbibtex",
                "lualatex",
                "lualatex",
                "lualatex",
            ]
        },
        {
            "name": "ptex2pdf",
            "tools": [
                "ptex2pdf"
            ]
        },
    ],
    "latex-workshop.latex.tools": [
        {
            "name": "ptex2pdf",
            "command": "ptex2pdf",
            "args": [
                "-l",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "%DOC%"
            ]
        },
        {
            "name": "lualatex",
            "command": "lualatex",
            "args": [
                "--cmdx",
                "-file-line-error",
                "-synctex=1",
                "-interaction=nonstopmode",
                "-halt-on-error",
                "%DOC%",
                "-shell-escape",
            ],
        },
        {
            "name": "upbibtex",
            "command": "upbibtex",
            "args": [
                "%DOCFILE%"
            ],
        },
        {
            "command": "ptex2pdf",
            "args": [
                "-l",
                "-ot",
                "-kanji=utf8 -synctex=1",
                //下の文がないと構文を間違えた時に永遠に回り続ける
                "-interaction=nonstopmode",
                //構文を間違えている箇所に赤波線を引く
                "-file-line-error",
                "%DOCFILE%.tex"
                //===============================================================
                //%DOCFILE%.texではなく↓を使うと構文エラーがあるときに永遠に回り続ける
                //"%DOC%"
                //===============================================================
            ],
            "name": "Step 1: ptex2pdf"
        },
        {
            "command": "pbibtex",
            "args": [
                "%DOCFILE%",
                "-kanji=utf8"
            ],
            "name": "Step 2: pbibtex"
        },
        //======================================
        //ptex2pdfを2回やるのはbibtexを適用するため
        {
            "command": "ptex2pdf",
            "args": [
                "-l",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOCFILE%.tex"
            ],
            "name": "Step 3: ptex2pdf"
        },
        {
            "command": "ptex2pdf",
            "args": [
                "-l",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOCFILE%.tex"
            ],
            "name": "Step 4: ptex2pdf"
        }
        //======================================
    ],
    "latex-workshop.latex.clean.fileTypes": [
        "*.aux",
        "*.bbl",
        "*.blg",
        "*.idx",
        "*.ind",
        "*.lof",
        "*.lot",
        "*.out",
        "*.toc",
        "*.acn",
        "*.acr",
        "*.alg",
        "*.glg",
        "*.glo",
        "*.gls",
        "*.fls",
        "*.log",
        "*.fdb_latexmk",
        "*.snm",
        "*.synctex(busy)",
        "*.synctex.gz(busy)",
        "*.synctex.gz",
        "*.nav"
    ],
    "latex-workshop.latex.autoClean.run": "onBuilt",
    "latex-workshop.latex.autoBuild.run": "onSave",
    "latex-workshop.latex.autoBuild.interval": 0,
    "latex-workshop.view.pdf.viewer": "tab",
    "latex-workshop.intellisense.package.enabled": true,
    // Latexの設定ここまで
```

</div></details>

## 4. プリアンブルを配置

下記リンクから各ファイルを作業フォルダにダウンロードします．

- 2段組テンプレート(月例報告等)：[final_temp.zip](http://192.168.2.2/wiki/?plugin=attach&pcmd=open&file=final_temp.zip&refer=TeX)
- 中間発表用テンプレート：[midterm_temp.zip](http://192.168.2.2/wiki/?plugin=attach&pcmd=open&file=midterm_temp.zip&refer=TeX)

※各ファイルは研究室内でのみダウンロード可能です．
※**ファイル名を直接クリックすると上手くダウンロードできないことがあります**．このときはファイル名を右クリック→「名前をつけてリンク先を保存」を選択してください．

基本的にプリアンブルは体裁を整えるためのstyファイルと必要なライブラリを読み込むためのtexファイルから構成されているので，他のプリアンブルを利用するときも最低限この2つがあればビルドできます(たぶん)．

## 5. おわりに

ここまでの作業が終わったらVSCodeにて先ほど各ファイルをダウンロードした作業フォルダを開き，左側メニューにて```midterm_temp.tex```をクリックしてみましょう．

![スクリーンショット 2023-09-12 162235.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/1fbeafb6-dda6-19fb-8b3b-8dfc493eccc0.png)

この状態でファイルの上書き保存を行うと，自動的にファイルのビルドが始まり，しばらく待つと```midterm_temp.pdf```というファイルが生成されるはずです．
ここでもし画面右下に「Recipe terminated with error. Retry building the project.」や「Recipe terminated with error.」というメッセージが表示された場合は，何らかの設定が上手くできていません．

## 6.(発展編)WSLでビルドできるようにする

ここまではWindows上でビルドをするための環境構築手順を紹介してきましたが，実際に実行してみるとビルド開始～PDFのエクスポートまでおよそ数十秒程度かかるかと思います．
この章ではビルドを高速にするため，「Windows Subsystem for Linux(WSL)」という機能の設定をしていきます。

### 手順1: WSLのインストール
**PCやWindowsのバージョンによって若干手順が変わってきます．ここで紹介した手順で上手く動かなければ「WSL 設定」などをキーワードに検索してみてください．**

1. Windowsの機能を有効化
コントロールパネルを開き，```プログラム```>```Windowsの機能の有効化または無効化```の順にクリックし，「Windowsの機能」ウィンドウを表示します．
表示されたウィンドウで「Hyper-V」「Linux用Windowsサブシステム」という項目にそれぞれチェックをつけ，「OK」をクリックします．
![スクリーンショット 2023-10-26 135801.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/ed643846-f2db-69c3-3fcc-e1a36bd9a6df.png)
しばらくすると再起動を求められるので，指示通りにPCを再起動します．

2. Linuxイメージの入手
[ここ](https://www.microsoft.com/store/productid/9PDXGNCFSCZV?ocid=pdpshare)から「Ubuntu」アプリ(イメージ)をインストールします．

3. Ubuntuの初期設定
スタートメニューから「Ubuntu」アプリを起動するとユーザー名とパスワードの設定を求められるので，指示通りに設定します．このとき設定するパスワードは後ほど使用するので，忘れないものを設定するか，何かにメモするようにしてください．
なお起動後，以下のように「Error: 0x800701bc WSL 2 ????...」というメッセージが表示される場合は[ここ](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi)から更新パッケージをダウンロード，インストール後に再度アプリを起動するとエラーが解消されるはずです．[^3]
![Desktop Screenshot 2023.10.25 - 22.23.42.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/08f7e198-8641-1545-8657-a9d036ba16a8.png)

4. 確認
ここまでの手順が正しく適用されていればアプリを立ち上げることで以下のように```設定したユーザー名@PC名```が表示されるはずです．
![スクリーンショット 2023-10-26 145756.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/01cafdcf-4a7b-19ef-1a15-b86d08788349.png)
以上の画面が表示されない場合は何らかの手順を間違えているか，必要な設定がされていない可能性があるので，表示されたエラーメッセージなどをキーワードに検索してみてください．

5. texのインストール[^4]
アプリ起動後，表示されたウィンドウに下記のコマンドを入力します．
```bash
sudo apt-get update
sudo apt install texlive-lang-japanese texlive-latex-extra 
```
途中でパスワードの入力が求められるので，先ほど設定したパスワードを入力します．

### 手順2: setting.jsonの更新
2章で設定した```setting.json```を開き，以下のように内容を書き換えます．

<details><summary>setting.json(クリックすると開きます)</summary><div>

```json:setting.json(WSL対応版)
    // Latexの設定ここから
    "latex-workshop.latex.recipes": [
        //bibtexを使用する場合
        {
            "name": "toolcain_bibtex",
            "tools": [
                "Step 1: ptex2pdf(WSL)",
                "Step 2: pbibtex(WSL)",
                "Step 3: ptex2pdf(WSL)",
                "Step 4: ptex2pdf(WSL)"
            ]
        },
        //==============================
        //==============================
        //bibtexを使用しない場合
        {
            "name": "toolchain_no_bibtex",
            "tools": [
                "Step 1: ptex2pdf(WSL)",
                "Step 3: ptex2pdf(WSL)",
            ]
        },
        {
            "name": "lualatex",
            "tools": [
                "lualatex",
            ],
        },
        {
            "name": "lualatex twice compile",
            "tools": [
                "lualatex",
                "lualatex",
            ]
        },
        {
            "name": "lualatex with reference",
            "tools": [
                "lualatex",
                "upbibtex",
                "lualatex",
                "lualatex",
                "lualatex",
            ]
        },
        {
            "name": "ptex2pdf",
            "tools": [
                "ptex2pdf"
            ]
        },
    ],
    "latex-workshop.latex.tools": [
        {
            "command": "wsl",
            "args": [
                "ptex2pdf",
                "-u",
                "-l",
                "-od",
                "-V7",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "%DOCFILE%"
            ],
            "name": "ptex2pdf(WSL)"
        },
        {
            "command": "wsl",
            "args": [
                "pbibtex",
                "%DOCFILE%",
                "-kanji=utf8"
            ],
            "name": "pbibtex(WSL)"
        },
        {
            "name": "ptex2pdf",
            "command": "ptex2pdf",
            "args": [
                "-l",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "%DOC%"
            ]
        },
        {
            "name": "lualatex",
            "command": "lualatex",
            "args": [
                "--cmdx",
                "-file-line-error",
                "-synctex=1",
                "-interaction=nonstopmode",
                "-halt-on-error",
                "%DOC%",
                "-shell-escape",
            ],
        },
        {
            "name": "upbibtex",
            "command": "upbibtex",
            "args": [
                "%DOCFILE%"
            ],
        },
        {
            "command": "wsl",
            "args": [
                "ptex2pdf",
                "-l",
                "-ot",
                "-kanji=utf8 -synctex=1",
                //下の文がないと構文を間違えた時に永遠に回り続ける
                "-interaction=nonstopmode",
                //構文を間違えている箇所に赤波線を引く
                "-file-line-error",
                "%DOCFILE%.tex"
                //===============================================================
                //%DOCFILE%.texではなく↓を使うと構文エラーがあるときに永遠に回り続ける
                //"%DOC%"
                //===============================================================
            ],
            "name": "Step 1: ptex2pdf(WSL)"
        },
        {
            "command": "wsl",
            "args": [
                "pbibtex",
                "%DOCFILE%",
                "-kanji=utf8"
            ],
            "name": "Step 2: pbibtex(WSL)"
        },
        //======================================
        //ptex2pdfを2回やるのはbibtexを適用するため
        {
            "command": "wsl",
            "args": [
                "ptex2pdf",
                "-l",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOCFILE%.tex"
            ],
            "name": "Step 3: ptex2pdf(WSL)"
        },
        {
            "command": "wsl",
            "args": [
                "ptex2pdf",
                "-l",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOCFILE%.tex"
            ],
            "name": "Step 4: ptex2pdf(WSL)"
        }
        //======================================
    ],
    "latex-workshop.latex.clean.fileTypes": [
        "*.aux",
        "*.bbl",
        "*.blg",
        "*.idx",
        "*.ind",
        "*.lof",
        "*.lot",
        "*.out",
        "*.toc",
        "*.acn",
        "*.acr",
        "*.alg",
        "*.glg",
        "*.glo",
        "*.gls",
        "*.fls",
        "*.log",
        "*.fdb_latexmk",
        "*.snm",
        "*.synctex(busy)",
        "*.synctex.gz(busy)",
        "*.synctex.gz",
        "*.nav"
    ],
    "latex-workshop.latex.autoClean.run": "onBuilt",
    "latex-workshop.latex.autoBuild.run": "never",
    "latex-workshop.latex.autoBuild.interval": 0,
    "latex-workshop.view.pdf.viewer": "tab",
    "latex-workshop.intellisense.package.enabled": true,
    // Latexの設定ここまで
```

</div></details>

書き換えた```setting.json```を保存し，適当なtexファイルを上書き保存するとWSL経由でビルドされるようになるはずです(ビルド時に「Step 1: ... (WSL)」と表示されていれば正しくビルドできるようになっています．)
![スクリーンショット 2023-10-26 151528.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/766c0e4f-6dbc-154d-ec48-bf84908f513a.png)

## Q&A

### 参考文献などに下線が引かれてしまう
ulemパッケージによるものです．このパッケージは本来取り消し線などを引くためのパッケージですが，そのまま使用すると斜字(イタリック体)に下線を引いてしまう設定になっています．
これを解消するには，```midterm_preample.pdf```を次のように修正します．

```diff_te_x
- \usepackage{ulem}
+ \usepackage[normalem]{ulem}
```

これにより参考文献など，斜字(イタリック体)に下線が自動的に引かれなくなるはずです．

### bibファイルを使わないでビルドしたいです(参考文献を挿入しない，あるいは本文中で記述したい)

ファイルの保存後自動的に行われるビルドでは，必ずbibファイルを読み込む必要があります(本文中にciteコマンドが無いとエラーになります)．そこで参考文献を挿入しない，あるいはbibファイルを使わずに本文中で記述したい場合は，VSCodeの左側メニューにて「tex」→「Build LaTeX project」→「Recipe: toolcain_no_bibtex」の順にクリックすると正常にビルドできるはずです．

![スクリーンショット 2023-09-12 162832.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447714/ae91679f-b9da-68ab-dad0-5e805338fb59.png)

### 「Cannot find LaTeX root file」やプリアンブル自体がビルドされてしまうとき
VSCodeにおいてビルドするファイルを明示的に宣言することで解決します．
編集中のtexファイルの1行目に下記コードを書き加えてください．

```tex
% !TEX root = 編集中のファイル名.tex
```

[^tex導入]: https://qiita.com/passive-radio/items/623c9a35e86b6666b89e
[^tex-users-group]: https://www.tug.org/texlive/acquire-netinstall.html
[^1]: https://texlive.texjp.org/
[^2]: https://acetaminophen.hatenablog.com/entry/2016/05/18/221948
[^3]: https://qiita.com/hali/items/bf04a1e4012025a38d6b
[^4]: https://qiita.com/kiy_at_dev/items/75aa8a13b97d2115f4de#%E8%A6%81%E7%B4%84