ASRobot

タイトルがロボットなのに関連する記事がほぼ無い備忘録です。

VSCodeで日本語TeXの自動コンパイル環境を構築する方法

論文を書いたり卒論を書くときは, TeXを使うことが多いと思います. 以前まではtexファイルをコンパイルするためにMakefileを書いておいて, 保存してはmakeするなどの手順を踏んだりしていました. 今回は, VSCodeに拡張プラグインを入れて, ファイルを保存したら自動でコンパイルできるように設定してみました.

プラグインのインストール

VSCodeを立ち上げて, LaTeX Workshopプラグインをインストールします. このプラグインは, VSCodeでTeXのシンタックスハイライトを行ったり, 保存時に自動でコンパイルをすることができます.

ユーザ設定を変更

ユーザ設定に以下の設定を追記します.

"latex-workshop.latex.recipes": [
    {
      "name": "platex",
      "tools": [
        "platex",
        "pbibtex",
        "platex",
        "platex",
        "dvipdfmx"
      ]
    }
  ],
  "latex-workshop.latex.tools": [
    {
      "name": "platex",
      "command": "platex",
      "args": [
        "-synctex=1",
        "-interaction=nonstopmode",
        "-file-line-error",
        "-kanji=utf8",
        "-shell-escape",
        "%DOC%"
      ]
    },
    {
      "name": "dvipdfmx",
      "command": "dvipdfmx",
      "args": [
        "%DOCFILE%.dvi"
      ]
    },
    {
      "name": "pbibtex",
      "command": "pbibtex",
      "args": [
        "-kanji=utf8",
        "%DOCFILE%"
      ]
    }
  ]

自動コンパイルを試してみる

VSCodeで適当なtexファイルを開いて, 編集します. プラグインの設定や, ユーザ設定が完了していれば保存するだけで自動でコンパイルが行われます.

おまけ: Latexmkを使用する場合

VSCodeのsettings.jsonに追記

"latex-workshop.latex.recipes": [
        {
            "name": "latexmk",
            "tools": [
                "latexmk",
                "latexmk_clean"
            ]
        }
    ],
    "latex-workshop.latex.tools": [
        {
            "name": "latexmk",
            "command": "latexmk",
            "args": [
                "%DOC%"
            ]
        },
        {
            "name": "latexmk_clean",
            "command": "latexmk",
            "args": [
                "-c"
            ]
        }
    ]

.latexmkrcを作成

vim ~/.latexmkrc

以下をコピペ

#!/usr/bin/env perl
$latex            = 'platex -synctex=1 -halt-on-error';
$bibtex           = 'pbibtex -kanji=utf8';
$dvipdf           = 'dvipdfmx %O -o %D %S';
$max_repeat       = 5;
$pdf_mode         = 3;
$pvc_view_file_via_temporary = 0;
$pdf_previewer = 'open -a /Applications/Skim.app';

$latex = "find . -type f -name '*.tex' -print0 | xargs -0 sed -i '' -e 's/、/, /g' -e 's/。/. /g'; platex -synctex=1 -halt-on-error";

おまけ

macだけの現象なのか, 自動フォーマットが機能しない問題にぶち当たりました. 以下は解決策です.

ここのサイトを参考に以下を実行

sudo cpan Unicode::GCString
sudo cpan App::cpanminus
sudo cpan YAML::Tiny
sudo perl -MCPAN -e 'install "File::HomeDir"'
sudo cpan Log::Log4perl
sudo cpan Log::Dispatch