LaTeX + VSCode ではじめる美文書作成入門【導入編】

2020-07-17

2021-04-10追記
よっぽどの理由がない限り、Cloud LaTeXで事足りる(VS Code拡張機能が出て使い易くなった)ので、どうしても自分のPCにビルド環境作りたいという人だけ読んでください。
僕はよっぽどの理由がありました。

はじめに

Wordって、クソですよね…
というかLaTeXが良い。とても良い。使ってたらわかる。
情報系のオタクなら特にレポートで回路図やプログラムのソースコードを載せることが少なくないでしょう。
それがなんと!!LaTeXならそれらすべてがLaTeXで完結する!!!!わざわざようわからんツール使ってちまちま回路図を作成する必要もない!!ソースコードが簡単に美しく貼れる!!もう最高!!!!
それにLaTeXだとちょっとしたレポートの作成においてもレイアウトをいちいち気にする必要ないんですよね
教員もLaTeXでレポートを作成することを推奨するくらい
というかけっこういろんな教員がLaTeXで授業資料とか作ってたりする
…憧れるでしょこれ

というわけでそんなLaTeXを布教するために書くぜ!!!!
今回はとりあえず導入まで

※なお、この記事ではVS Codeの導入方法について記載しません。ご了承ください。

環境

OS: Windows 10 64bit
Visual Studio Codeインストール済み

TeX Liveのインストール

※TeX Liveのインストールめちゃくちゃ時間かかるから寝てる間にするのがオヌヌメ
TeX Liveのインストール手順はTeX WikiさんのTeX Live/Windows - TeX Wikiに丁寧に書かれているので、そちらを参照してください
ネットワークインストーラーの場合」の方法を推奨

VS Codeの設定

拡張機能のインストール

拡張機能「LaTeX Workshop」をインストールします。

最低限必要なもののインストールはこれで終わり!

各種設定

setting.jsonに以下のテキストを書き足します。
なお、setting.jsonの開き方は、F1キーを押した後「setting.json」と打ち込むと出てくる「基本設定: 設定(JSON)を開く」を選ぶと開けます。このファイル開くことってよくあるからこの機会に覚えちゃおっ!

setting.json
"latex-workshop.latex.recipes": [
    {
        "name": "ptex2pdf",
         "tools": [
            "ptex2pdf"
        ]
    }
],
"latex-workshop.latex.tools": [
    {
        "name": "ptex2pdf",
        "command": "ptex2pdf",
        "args": [
            "-l",
            "-ot",
            "-kanji=utf8 -synctex=1",
            "-interaction=nonstopmode", // エラー発生時に自動でビルド停止
            "%DOC%"
        ]
    }
],

"latex-workshop.latex.tools"でビルド時に実行するコマンド(+オプション)とその別名、"latex-workshop.latex.recipes"にtoolsで指定した別名を使い、実際に実行するコマンドの組み合わせを指定します。ここでビルド時にBIBTeXを経由させたりするための設定も行えます。たぶん長い論文とか書くときにはここ変更が必要かも

なお、上記にはpLaTeXエンジンでビルドする上での最低限(レポート作成等レベル)の設定のみ載せています。
とりあえずこれだけ書いて実際にビルドしてみるのが良いでしょう。

LaTeX Workshopのrecipe設定は一度VS Codeを再起動しないと有効化されなかったりするので、ここで一度VS Codeを再起動しときましょう!大事なこと書き忘れてて申し訳ねぇ!

以下に参考として私が実際にsetting.jsonに書いている追加設定も記しておきます。
コメントは説明上のものなので不必要だと感じたら消しやがれです

setting.json
// コンパイル後に補助ファイルを削除
"latex-workshop.latex.clean.subfolder.enabled": true,
"latex-workshop.latex.clean.fileTypes": [
    // "*.aux",  // label使う上で必要
    "*.bbl",
    "*.blg",
    "*.idx",
    "*.ind",
    "*.lof",
    "*.lot",
    "*.out",
    "*.toc",
    "*.acn",
    "*.acr",
    "*.alg",
    "*.glg",
    "*.glo",
    "*.gls",
    "*.ist",
    "*.fls",
    "*.log",
    "*.fdb_latexmk",
    "*.gz",
],
// いつ削除するか
"latex-workshop.latex.autoClean.run": "onFailed",
// 使用済みパッケージのコマンドと環境を補完
"latex-workshop.intellisense.package.enabled": true,
// \をタイプ時にunimathシンボルを表示
"latex-workshop.intellisense.unimathsymbols.enabled": true,
// 各種math環境のホバープレビューのカーソル色
"latex-workshop.hover.preview.cursor.color": "cyan",
// 〃のカーソル記号
"latex-workshop.hover.preview.cursor.symbol": "\\dagger",
// デフォルトのpdf viewer(VS Code上のタブ,ブラウザ等)
"latex-workshop.view.pdf.viewer": "tab",
// pdf viewerのデフォルトのズームレベル
"latex-workshop.view.pdf.zoom": "auto",

なお、デフォルトで「変更を保存後に自動ビルド」設定が有効になっています。無効にする方法はこちらを参照

また、すべての設定項目については公式ぎとはぶのwikiに書かれているので、気になった方はぜひ見てみてください。きっとあなたの環境が自分好みのより良いものになる

サンプルをビルドしてみる

以下に適当につくったひどいソース置いとくのでぜひビルドして確かめてみてください。
ちなみにファイル拡張子は.texです。

ひどい方.tex
\documentclass[a4paper]{jsarticle}
\newcommand*{\myTeX}{\mbox{S\hspace{-0.132em}%
  \raisebox{-0.171em}{E}\hspace{-0.084em}X}}

\title{\myTeX で学ぶ美少女作成の基礎}
\author{Loliver}

\begin{document}
  \maketitle
  \section{まえがき}
  てきすとてきすと
  \section{\myTeX 入門}
  \subsection{\myTeX とは}
  おっ$\pi$
  \subsection{\myTeX のインストール}
  \subsubsection{\myTeX の種類}
\end{document}

まともなやつも作りました!@2020-09-06

まともな方.tex
\documentclass[10ptj, a4j]{jsarticle}

\usepackage{amsmath}

\title{\LaTeX 文書作成入門}
\author{hoge}
\date{\today}

\begin{document}
  \maketitle
  \begin{abstract}
    本文書は\LaTeX 環境構築の完了を検証するためのものである。
  \end{abstract}
  \section{序論}
  ただのサンプル文書。

  \section{本論}
  \subsection{動作環境}
  本文書は\TeX Live 2020のp\LaTeX エンジンの使用を前提としている。
  up\LaTeX を使用する場合は\texttt{\\documentclass}に\texttt{uplatex}オプションを追加するとよい。

  \subsection{各種コマンドの動作検証}
  \subsubsection{数式}
  文中に数式を表示する場合は、数式を\texttt{\$\$}で囲む。これを「\textbf{インライン数式環境}」と呼ぶ。
  例えば、\verb|$ax^2 + bx + c = 0$|は$ax^2 + bx + c = 0$と表示される。

  次に、数式を別行立てで表示する場合を示す。これを「\textbf{ディスプレイ数式環境}」と呼ぶ。
  ディスプレイ数式環境には多くの種類がある。ここでは、推奨されている\textbf{align}環境の例を示す。
  \begin{align*}
    y = \sqrt{x + \sqrt{x + \sqrt{x + \cdots}}}\\
    \int_0^{\frac{\pi}{2}}\left\{\int_y^{\sqrt{R^2 - y^2}}f(x, y)dx\right\}dy\\
    \intertext{定数係数非斉次線形微分方程式}
    \frac{d^2x}{dt^2} + a\frac{dx}{dt} + bx = R(t)\quad(\text{$a$, $b$は定数})\\
  \end{align*}
  \begin{align}
    \intertext{偏微分係数}
    f_x(a, b) &= \lim_{x\rightarrow a}\frac{f(x, b) - f(a, b)}{x - a}\\
              &= \lim_{h\rightarrow 0}\frac{f(a+h, b) - f(a, b)}{h}
  \end{align}

  \subsubsection{フォント}
  {\tiny tiny}{\scriptsize scriptsize}{\footnotesize footnotesize}{\small small}
  {\normalsize normalsize}{\large large}{\Large Large}{\LARGE LARGE}{\huge huge}{\Huge Huge}

  \textrm{明朝体}\textsf{ゴシック体}\texttt{等幅(monospace)}

  \textbf{太字}\textit{斜体(italic)}
  日本語を斜体にするな

  \section{結論}
  良き
\end{document}

ビルドがなかなか終わらないときは(回避方法追記@2020-08-25)

setting.json"latex-workshop.latex.tools" -> "args":"-interaction=nonstopmode"を入れてたらコンパイルエラー時に自動で止まってくれることを今更知り......上記修正しました????追記@2020-08-25

原因として考えられるのは、画像など多く使っていて普通に処理時間かかってるorコンパイルエラー。まあ9割エラーやろ
対処法: LaTeXファイルを開いている間、画面左のアクティビティバーにLaTeXのマークが表示されると思います。そこの「Build LaTeX project > Terminate current compilation」を押すとビルドが止まるorやり直してくれます。

ちなみに、その下の方の「View Log messages」内にコンパイルログを表示してくれる項目があります。ここを見るとビルドが終わらない原因がわかったり
絶対使うであろうものなので覚えておくことを強く推奨しますわ

upLaTeX, XeLaTeXを使ってみる(追記@2020-07-24)

ここはpLaTeXに違和感を感じ始めた人、冒険してみたいという人だけ読んでください。

ここまでの説明はpLaTeXエンジンでの話でした。当然pLaTeXを使い続けても全然よい(そんな私も今日まではpLaTeX一筋だった)のですが、どうしてもpLaTeXではうまくいかない場合があったりします(今日あった)。

LaTeXエンジンにはいくつも種類がありますが私はそこまで違いにくわしくないので、ここで扱う3種類の簡単な特徴だけかいときまつ

  • pLaTeX

    すごくメジャーなやつ。コンパイルするとき補助ファイルいっぱい出る。<del datetime="2020-08-02T19:21:49+00:00">でもコンパイル速い。</del>XeLaTeXのほうが何倍も速かった...

  • upLaTeX

    pLaTeXの上位互換。日本語Unicode対応。環境依存文字をそのままソースに使える

  • XeLaTeX

    上記2つのエンジンと違って直接pdfを出力する。Unicode全面対応。フォントいじりやすい。

てなわけでupLaTeXとXeLaTeXでもVS Codeからコンパイルできるようにしちょこう!
setting.jsonの該当箇所に以下2つの設定を追記してね

setting.json
"latex-workshop.latex.recipes": [
    {
        "name": "uptex2pdf",
        "tools": [
            "uptex2pdf"
        ]
    },
    {
        "name": "XeLaTeX",
        "tools": [
            "xelatex2pdf"
        ]
    }
],
"latex-workshop.latex.tools": [
    {
        "name": "uptex2pdf",
        "command": "ptex2pdf",
        "args": [
            "-u",
            "-l",
            "-ot",
            "-kanji=utf8 -synctex=1 -interaction=nonstopmode -file-line-error",
            "%DOC%"
        ]
    },
    {
        "name": "xelatex2pdf",
        "command": "xelatex",
        "args": [
            "-interaction=nonstopmode",
            "%DOC%"
        ]
    }
]

ちなみに、upLaTeXを使う場合documentclass\documentclass{bxjsarticle}って感じで、bxをつけてないとうまくいかなかったりするゾ
XeLaTeXならdvipdfmxもいらないお
そこらへんのことはBXjscls - TeX Wikiとか参照

XeLaTeX文書のサンプルも置いときます追記@2020-11-15

XeLaTeX_sample.tex
\begin{lstlisting}[style=ex]\documentclass[a4j,10ptj]{bxjsarticle}
% \documentclass[xelatex,ja=standard,a4j,10ptj,jafont=ipa]{bxjsarticle}

% フォント設定
\usepackage{zxjatype}
\usepackage[ipa]{zxjafont}

\usepackage{xltxtra} % \XeTeX ロゴ出力用

\usepackage{listings}
\lstdefinestyle{ex}{
  basicstyle=\ttfamily,
  frame={trbl},
  frameround={tttt},
  lineskip=-0.7ex,
  numbers=none
}

\title{\XeLaTeX\ Sample}
\author{ろりば}
\date{\today}

\begin{document}
\maketitle
\XeLaTeX はUTF-8ベースの\TeX で、p\LaTeX では扱えなかった文字が使えたり、文書に用いるフォントを簡単に変更できたりします。
あとビルドも速い。

私の場合は、ぴぃちょんの\texttt{tqdm}で出力されるプログレスバーがそのままp\LaTeX 文書では扱えなかったため、\XeLaTeX に乗り換えました。\\
といっても標準のフォントでは表示してもらえなかったため、プリアンブルで
\usepackage{fontspec}
\setmonofont{Ricty Diminished}
\end{lstlisting}
と、等幅フォントをRictyに設定することでプログレスバーの出力を文書に入れることができました。\\
ちな、この文書ではプリアンブルに
\begin{lstlisting}[style=ex]
\usepackage{zxjatype}
\usepackage[ipa]{zxjafont}
\end{lstlisting}
を入れることで和文フォントを指定していますが、
\begin{lstlisting}[style=ex]
\documentclass[xelatex,ja=standard,a4j,10ptj,jafont=ipa]{bxjsarticle}
\end{lstlisting}
のように\texttt{documentclass}で指定することも可能です。
\texttt{[ipa]}というオプションはフォントファミリーの指定で、ここを\texttt{[yu-win10]}とすることで文書のメインフォントを游明朝や游ゴシック体にすることもできます。
ここで指定できるのは\texttt{ms,ipa,ipaex,yu-win10}などなど。
\end{document}

ClutTeXを使ってみる(追記@2021-12-1)

いくらLaTeX Workshopの設定で補助ファイル郡を自動消去できるとはいえ、.auxファイルなどの消すべきでない補助ファイルが邪魔に感じますよね。

そこでオススメするのがClutTeXです。

簡単に言うと、コンパイルをOSの一時ディレクトリ下で実行することで、最初から最後まで作業環境を汚されずに済むようになります。

詳しくは↓の記事で解説しています。

これを使わない理由がない

おわりに

LaTeXは美しい!
Wordはクソ!
LaTeX最高!

p.s. 最近このbotにハマってる

スポンサーリンク