LoginSignup
13
9

[もう躓かない] VSCodeでLaTeXを動かしてBiBTeX等を含めて実行できるようにする

Last updated at Posted at 2021-12-28

VsCodeのLaTeXにおいてpTeXおよびBibTeXを実行し, pdfを出力する.

  • かなり雑に記載していますが, 動くけどこれがうまくいかない...みたいな問題に多々ぶち当たりつつ, 試行錯誤して多分これで2度と躓かなくなったので知見を共有します.
  • windows10向けに記載していますが, Macユーザーにも適用可能であることを確認しています. 適宜コマンドを読み替えてください.

参考: Visual Studio CodeでTeXのコンパイルをできるようにする方法

0. TeXのインストール

brewを使ったり, diskを使ったり, オープンソースを使ったりでとりあえずTeXをインストール.

1. 拡張機能のインストール

VSCodeのLaTeX Workshopの拡張機能をインストールする.

2. setting.jsonの書き換え

ctrl+,をして右上のボタン
2021-12-28-17-08-42.png
を押してsetting.jsonを開く.

setting.jsonに下記のように記載する. なお, command: "hoge"において私はフルパスで記載しているが, 一般的にはその必要は無い. (例: "command": "latexmk"と記載すれば良い.) 好みに任せる. (多分ディレクトリ探す手間もあるしフルパスで書かないほうが楽.) MaC OSの場合はターミナルでfindコマンド等を用いてtexliveがインストールしてあるディレクトリを見つけてください.

{"latex-workshop.latex.tools": [
   {
       "command": "C:\\texlive\\2017\\bin\\win32\\latexmk",
       "args": [
           "-synctex=1",
           "-interaction=nonstopmode",
           "-file-line-error",
           "-pdf",
           "%DOC%"
       ],
       "name": "latexmk"
   },
   {
       "command": "C:\\texlive\\2017\\bin\\win32\\pdflatex",
       "args": [
           "-synctex=1",
           "-interaction=nonstopmode",
           "-file-line-error",
           "%DOC%"
       ],
       "name": "pdflatex",
       },
       {
           "command": "C:\\texlive\\2017\\bin\\win32\\bibtex",
           "args": [
               "%DOCFILE%"
           ],
           "name": "bibtex",
       },
       {
           "command": "C:\\texlive\\2017\\bin\\win32\\ptex2pdf",
           "args": [
               "-interaction=nonstopmode",
               "-l",
               "-ot",
               "-kanji=utf8 -synctex=1",
               "%DOC%.tex"
           ],
           "name":"ptex2pdf",
       },
      {
           "command": "C:\\texlive\\2017\\bin\\win32\\ptex2pdf",
           "args": [
               "-l",
               "-u",
               "-ot",
               "-kanji=utf8 -synctex=1",
               "%DOC%"
           ],
           "name":"ptex2pdf (uplatex)",
       },
       {
           "command": "C:\\texlive\\2017\\bin\\win32\\pbibtex",
           "args": [
               "-kanji=utf8",
               "%DOCFILE%"
           ],
           "name": "pbibtex",
       }
],
"latex-workshop.latex.recipes": [
{
   "name": "ptex2pdf",
   "tools": [
       "ptex2pdf"
   ]
},
{
   "name": "ptex2pdf -> pbibtex -> ptex2pdf*2",
   "tools": [
       "ptex2pdf",
       "pbibtex",
       "ptex2pdf",
       "ptex2pdf"
   ]
},
{
   "name": "pdflatex -> bibtex -> pdflatex*2",
   "tools": [
       "pdflatex",
       "bibtex",
       "pdflatex",
       "pdflatex"
   ]
},
{
   "name": "latexmk",
   "tools": [
       "latexmk"
   ]
},
{
   "name": "pdflatex",
   "tools": [
       "pdflatex"
   ]
},
{
   "name": "ptex2pdf (uplatex)",
   "tools": [
       "ptex2pdf (uplatex)"
   ]
},
{
   "name": "ptex2pdf (uplatex) -> pbibtex -> ptex2pdf (uplatex) *2",
   "tools": [
       "ptex2pdf (uplatex)",
       "pbibtex",
       "ptex2pdf (uplatex)",
       "ptex2pdf (uplatex)"
   ]
},
],


"latex-workshop.latexindent.path": "C:\\texlive\\2017\\bin\\win32\\latexindent.exe",
"latex-workshop.view.pdf.viewer": "tab",

"[tex]": {
   // スニペット補完中にも補完を使えるようにする
   "editor.suggest.snippetsPreventQuickSuggestions": false,
   // インデント幅を2にする
   "editor.tabSize": 2
},

"[latex]": {
   // スニペット補完中にも補完を使えるようにする
   "editor.suggest.snippetsPreventQuickSuggestions": false,
   // インデント幅を2にする
   "editor.tabSize": 2
},  

"[bibtex]": {
   // インデント幅を2にする
   "editor.tabSize": 2
}

以上のような記載をすると, ctrl+Sの保存と同時にptexがコンパイルされ, pdfの出力まで行われるはずである. 超簡略化して説明すると,

   "latex-workshop.latex.tools": []

の部分がコンパイルの際にする作業を記載しており, その実行コマンドの名前がname: hogeで特徴づけされている. そしてctrl+Sで実行されるような自動化を行っているのが.

    "latex-workshop.latex.recipes": []

の部分であると思っていただければ良い. いまデフォルトでctrl+Sでptexがコンパイルされ, pdfの出力まで行われるのは"latex-workshop.latex.recipes"の一番始めに書いているのがptexの実行であるからそうなっている.

レシピ 内容
latexmk LaTeXmkを用いてコンパイル
pdflatex pdfLaTeXを用いてコンパイル
pdflatex -> bibtex -> pdflatex*2 pdfLaTeXとBibTeXを用いてコンパイル
ptex2pdf ptex2pdfを用いてコンパイル
ptex2pdf -> pbibtex -> ptex2pdf*2 pLaTeXとpBibTeXを用いてコンパイル
ptex2pdf (uplatex) upLaTeXを用いてコンパイル
ptex2pdf (uplatex) -> pbibtex -> ptex2pdf (uplatex) *2 upLaTeXとpBibTeXを用いてコンパイル

これを踏まえて, もしbibtexをctrl+Sで実行したければ一番始めにbibtexをもってくればそうなる.(伝われ.)

しかし個人的には毎回pdfLaTeXとBibTeXを用いてコンパイルするのは非効率だと思うので, デフォルトはpdfLaTeXで良いかと思う.

3. BibTeXのコンパイルとLaTeXの実行

実際にbibファイルを作ってbibtexをコンパイルしたい場合のやり方を説明する. コンパイルを行いたいファイルにおいてctrl+shift+Pを押す. そうするとコマンドパレットが開くので, build with recipeを選択.

2021-11-09-17-32-09.png

そして先の表を参考に実行したいコンパイルを選ぶ. 今のbibtexを動かすという目的においては, 日本語の場合はptex2pdf -> pbibtex -> ptex2pdf*2を, 英語の場合はpdflatex -> bibtex -> pdflatex*2を選択すれば, pLaTeX -> pBibTeX -> pLaTeX -> pLaTeXというように実行がなされる.

2021-11-09-17-33-20.png

4. 実行テスト

reference.bibファイルを作成し, 以下のテンプレートファイルをコピペしてください.

@article{Witten:1998qj,
  author        = {Witten, Edward},
  title         = {{Anti-de Sitter space and holography}},
  eprint        = {hep-th/9802150},
  archiveprefix = {arXiv},
  reportnumber  = {IASSNS-HEP-98-15},
  doi           = {10.4310/ATMP.1998.v2.n2.a2},
  journal       = {Adv. Theor. Math. Phys.},
  volume        = {2},
  pages         = {253--291},
  year          = {1998}
}

test.texファイルを作成し, 以下のテンプレートファイルをコピペしてください.

\documentclass[11pt,a4paper]{jsarticle}
\usepackage{amsmath,amssymb}
\usepackage{bm}
\usepackage{graphicx}
\usepackage{ascmac}

\title{テンプレート}
\author{Hoge太hoge郎}
\date{\today}
\begin{document}
\maketitle

\section{hoge}
参考文献\cite{Witten:1998qj}

\bibliographystyle{junsrt}
\bibliography{reference}

\end{document}

その後, bibファイルを読み込み, ptex2pdf -> pbibtex -> ptex2pdf*2を実行するために, ctrl+shift+Pを押して, build with recipeからそれを選んで実行. 正しくsetting.jsonの書き込みが行われていれば実行がなされ, pdfファイルが作成されるはずである

なお, PDFファイルを右ページに置くには, Ctrl+Alt+vを押すか, Ctrl+Shift+Pをして, "latex-workshop.view"を選択すれば良い.

なお, bibファイルを一度読み込めば毎度recipeから実行をする必要はなく, ptexのみを実行すれば良いため, 保存つまりctrl+Sをするたびにptexが実行されれ, 実質自動コンパルが行われる形となっている.

5. 豆知識

13
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
9