Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
15
Help us understand the problem. What is going on with this article?
@keisukesato-ac

とりあえずVisual Studio CodeでLaTeXを書く(ローカルでlatexmk)

More than 1 year has passed since last update.

[2020/04/12編集]
以前はsettings.jsonにコンパイルコマンドを一とおり書く内容でしたが、latexmkを使う方法に書き換えました。

はじめに

私の周辺で、Windows PCの細かいところまでは不慣れでLaTeX初めての人が、とりあえずVisual Studio Code (VSCode)でLaTeXを書けるようになるまでの手順を記します。

関連記事

上記の関連記事との主な違いは以下です。

  • TeX Liveのインストール方法を、ISOファイルの一括ダウンロードにする
    • (個人的な好みで)
  • settings.jsonの設定を、latexmkを使うようにする
  • settings.jsonをワークスペース単位で設定する
    • 作る文章によってLaTeXのコンパイル方法を変えなきゃいけないことがあり、その場合はsetting.jsonを微修正&latexmkを大幅修正したほうがトータルで楽そうなので
    • いちばん下の補足1に絡んで
  • uplatexを使用する
    • (比較的新しい方法なので。uplatex以外についてはいちばん下の補足2を参照。)

想定環境

  • Windows 10 1909
  • TeX Live 2020 (20200406)
    • TeX Liveではなく、(TeXインストーラ 3などを利用して)Win32TeXをインストールした場合、latexmkを利用するには別途Perlインタプリタが必要だそうです(参考: https://texwiki.texjp.org/?Latexmk
  • Visual Studio Code 1.44.0 (user setup)
    • Pythonプログラミングなどを行う用途として、すでにインストール済みで、日本語化されているものとします。
    • 以下、インストールの際の「追加タスクの選択」で、全部に☑を入れている前提でお話をします。
      • LaTeXの場合、いくつかのファイル(.tex, .bib, 画像など)を用意したり、最終的にPDFができるまでに中間ファイルが吐かれたりするので、1つの文章は1つのフォルダー(ディレクトリ)単位(VSCodeのことばで言うとワークスペース単位)で管理したほうがよいです。なので、特に「エクスプローラーのディレクトリ コンテキスト メニューに[Code で開く] アクションを追加する」にはチェックを入れることをお勧めします。これは、対象とするフォルダを右クリックで指定してVSCodeで開くことができるようにするというものです。
  • LaTeX Workshop 8.8.0

手順

TeX Liveをダウンロード&インストール

ダウンロード

全部入りのファイルをごっそりダウンロードします。
https://texwiki.texjp.org/?TeX%20Live%2FWindows
「Acquiring TeX Live as an ISO image」 → 「download from a nearby CTAN mirror」 → 「texlive2020-20200406.iso」
(※ 3.7GBほどあるので、しばらくお待ちください。)

インストール

「texlive2020-20200406.iso」をダブルクリック → 「install-tl-windows.bat」をダブルクリック → そのままポチポチ
(※ インストールに時間がかかるので、しばらくお待ちください。)
(インストールが終わったら、ISOファイルは削除してもよいです。が、ISOファイルをダブルクリックしたときに、そのファイルがD:とかE:などのドライブとしてマウントされているので、「PC」フォルダーで該当ドライブを右クリックして「取り出し(J)」をクリックしてからであれば、ISOファイルを削除できます。または、PCを再起動すれば、取り出しの作業なしにISOファイルを削除できるはずです。)

LaTeX WorkShopのインストール

VSCodeを立ち上げ → 拡張機能のアイコン(左はしにある□が4つのアイコン)をクリック → 「latex」と打つ → 「LaTeX WorkShop」の「インストール」をクリック → インストールが終わったらVSCodeをいったん「×」で閉じる

LaTeX文章の作成

文章フォルダー(ワークスペース)の作成

  1. これから中にLaTeX文章を作っていくフォルダーを作成
  2. フォルダーを右クリック → 「Code で開く」

ここで開いたフォルダー = 今回の作業の対象となるVSCodeのワークスペースルートフォルダーとなります。

(ワークスペースのルートフォルダー)/.vscode/setting.jsonの生成と初期設定

  1. https://blog-and-destroy.com/25199 を参考に、歯車アイコン → 設定 → ワークスペース → 右上のアイコンをクリック(→ (ワークスペースのルートフォルダー)/.vscode/setting.jsonが生成されます)
    • 設定をクリックしたあと、デフォルトでは「ユーザー」が選択されているので、「ワークスペース」をクリックするのを忘れないでください。
  2. settings.jsonに最初から書いてある{}を消して、以下をコピペ
{
    "latex-workshop.latex.tools": 
    [
        {
            "name": "latexmk", 
            "command": "latexmk", 
            "args": 
            [
                "-pdfdvi", 
                "%DOC%", 
            ],
        },
    ],
    "latex-workshop.latex.recipes": 
    [
        {
            "name": "latexmk", 
            "tools": 
            [
                "latexmk", 
            ]
        },
    ],
    "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", "*.synctex.gz", 
        "_minted*", "*.nav", "*.snm", "*.vrb", 
    ],
    "latex-workshop.latex.autoClean.run": "onFailed", 
    "latex-workshop.latex.autoBuild.run": "onFileChange", 
    "latex-workshop.synctex.afterBuild.enabled": true, 
    "latex-workshop.view.pdf.viewer": "tab", 
}

→ 「ファイル(F)」 → 「保存  Ctrl+S」

(ワークスペースのルートフォルダー)/.latexmkrcの作成

  1. 「ファイル(F)」 → 「新規ファイル  Ctrl+N」をクリック
  2. 表示された未保存の空のファイル(Untitled-1などといった名前で表示される)に、以下をコピペ
#!/usr/bin/env perl
$latex                       = 'uplatex -synctex=1 -halt-on-error -interaction=nonstopmode -file-line-error';
$latex_silent                = 'uplatex -synctex=1 -halt-on-error -interaction=nonstopmode -file-line-error';
$bibtex                      = 'upbibtex';
$dvipdf                      = 'dvipdfmx %O -o %D %S';
$max_repeat                  = 6;
$pdf_mode                    = 3;
$pvc_view_file_via_temporary = 0;

→ 「ファイル(F)」 → 「保存  Ctrl+S」 → .vscodeフォルダーから、ワークスペースのルートフォルダーに移動 → ファイルの種類(T)を「すべてのファイル (*.*)」 → ファイル名(N)を.latexmkrcにして保存

文章の作成とコンパイル

  1. 「ファイル(F)」 → 「新規ファイル  Ctrl+N」をクリック
  2. LaTeXの文章(例えば以下)を書く
\documentclass[uplatex, dvipdfmx]{jsarticle}
\begin{document}
数式をだしてみます:$Ax = b$。
\end{document}

→ 「ファイル(F)」 → 「保存  Ctrl+S」 → ワークスペースのルートフォルダーが選択されているか確認し、選択されていなければルートフォルダーに移動 → ファイルの種類(T)を「LaTeX (*.tex;*.ltx;*.ctx)」 → ファイル名(N)を(好きなファイル名).texにして保存

あとは、少し編集して保存するたびに、ワークスペースのルートフォルダーにPDFが生成されるはずです。VSCodeの右上のほうにある虫眼鏡のアイコンをクリックすると、VSCode内のPDFビューワーが起動して、生成されたPDFファイルが見られます。

補足1:参考文献アウトプットの細かい調整

論文誌や学会によっては、参考文献の書式を指定し、参考文献スタイルファイル(~.bst)を提供しているところがあります。が、提供された参考文献スタイルファイルを使ってコンパイルしても、細かいところで指定の書式どおりの出力が得られない場合があります。
まあこれは提供側の問題なのですが、自分で直すとしたら、以下の手順でできます。

  • まずは通常どおり、以下のように.bstを使ってコンパイルする
\bibliographystyle{~.bst}
\bibliography{./~~.bib}
  • 作成された~~.bblファイルを、サブフォルダーに移動する
  • ~~.bblファイルを編集する
  • 上記の\biblio~の2行をコメントアウトし、代わりに以下を書いてコンパイルする
\input{./(サブフォルダー名)/~~.bbl}

※ なぜ.bblファイルをサブフォルダーに移動しているかというと、settings.jsonで、コンパイルに失敗した場合はワークスペースのルートフォルダーにある.bblファイルを削除する設定にしているからです。

なお、settings.jsonに、latexmkではなくuplatex → upbibtex → uplatex → uplatexというコマンドの流れを書くやり方だと、このような手順で参考文献を微修正する際にsettings.jsonを書き換える必要がでてくると思いますす。そういう理由もあって、latexmkをお勧めしています。

余談ですが、.bstファイルをカスタマイズするのは、(少なくとも私には)難易度が高いので、お勧めしません。文法が逆ポーランド記法のようです。代わりに、↓の「jecon.bst」をカスタマイズするという手段があります。
http://shirotakeda.org/ja/tex-ja/jecon-ja.html
(私もお世話になりました。ありがたいです。)

補足2:uplatex以外の使用

上記のsettings.jsonと.latexmkrcの設定に基づくuplatexでのコンパイルがうまくいかない場合があります。以下、考えられるケースと、対処の方向性はこうなんじゃないかなという推測をメモします。

  • 国際的な論文誌・学会のスタイル|pdflatex使用が前提?

    • pdflatexは.texから(.dviを中間ファイルとして吐かずに)PDFを直接生成するので、settings.jsonの-pdfdviあたりのオプションの記述の変更が必要?
    • .latexmkrcも、pdflatexを使うように記述の変更が必要?
    • .texファイルで、\documentclassからuplatex, dvipdfmxを削除
  • 日本の(過去との互換性を考えた)論文誌・学会のスタイル|platexが前提?

    • .latexmkrcで、platexを使うように記述の変更が必要?
    • .texファイルで、\documentclassからuplatexを削除

https://texwiki.texjp.org/?Latexmk がたいへん参考になります。最初からこのページのとおりに設定ファイルを記述しとけばよいのに…という話もありますが、この記事は不慣れな人がとりあえずVSCodeでLaTeXをコンパイルできるようになるのが目標なので、設定ファイルの記述もできるだけ少ないほうがよいと思いました。

感想

2020/04/12に記事をまとめ直してみましたが、相変わらずLaTeXの環境構築は敷居が高いですね。もっと簡単な方法があれば指摘ください。
クラウドサービス上で書ける(La)TeXもあるんですが、細かい設定ができないので、やはりローカルにイチから環境構築が必よ…あっ今はDockerがあるのか……

15
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
15
Help us understand the problem. What is going on with this article?