tex環境を作ろう
my pageに戻る

はじめに

vscodeでtexを編集する環境が充実してそうなので入れてみました.
プレビューがすぐに反映されるので良いです.
※試した環境 : ubuntu18.04 LTS

入れるもの

LaTeX環境の構築

$ sudo apt update
$ sudo apt upgrade

LaTeXのインストール

$ sudo apt install texlive-lang-cjk xdvik-ja evince
$ sudo apt install texlive-fonts-recommended texlive-fonts-extra

デフォルトでの使い方

$ platex hoge.tex
$ dvipdfmx hoge.dvi
コンパイルされたpdfを閲覧する際に,evinceを使用するとpdfを開いたまま再コンパイルできるらしい.
$ evince hoge.pdf &

.latexmkrcの設定

~/.latexmkrcを作成し以下のように記述
※設定内容は参考をそのまま使用
#!/usr/bin/env perl

# LaTeX
$latex = 'platex -synctex=1 -halt-on-error -file-line-error %O %S';
$max_repeat = 5;

# BibTeX
$bibtex = 'pbibtex %O %S';
$biber = 'biber --bblencoding=utf8 -u -U --output_safechars %O %S';
			
# index
$makeindex = 'mendex %O -o %D %S';

# DVI / PDF
$dvipdf = 'dvipdfmx %O -o %D %S';
$pdf_mode = 3;

# preview
$pvc_view_file_via_temporary = 0;
if ($^O eq 'linux') {
    $dvi_previewer = "xdg-open %S";
    $pdf_previewer = "xdg-open %S";
} elsif ($^O eq 'darwin') {
    $dvi_previewer = "open %S";
    $pdf_previewer = "open %S";
} else {
    $dvi_previewer = "start %S";
    $pdf_previewer = "start %S";
}

# clean up
$clean_full_ext = "%R.synctex.gz"

latexmkが入ってない場合

texliveと一緒に入るらしいのですが,入ってない場合にはaptで入れちゃえば大丈夫だと思います.
(僕はそうしましたが今のところ問題ありません)
$ sudo apt install latexmk

vscodeの設定

vscodeにLaTeX workshopを入れたら,setting.jsonに以下のような設定を追加
※参考ページの設定をそのまま使わせていただきました.
"[tex]": {
    // スニペット補完中にも補完を使えるようにする
    "editor.suggest.snippetsPreventQuickSuggestions": false,
    // インデント幅を2にする
    "editor.tabSize": 2
},

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

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

// ---------- LaTeX Workshop ----------

// 使用パッケージのコマンドや環境の補完を有効にする
"latex-workshop.intellisense.package.enabled": true,    
	
// 生成ファイルを削除するときに対象とするファイル
// デフォルト値に "*.synctex.gz" を追加
"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",
    "*.snm",
    "*.nav",
    "*.dvi",
    "*.synctex.gz"
],
    
// 生成ファイルを "out" ディレクトリに吐き出す
"latex-workshop.latex.outDir": "out",

// ビルドのレシピ
"latex-workshop.latex.recipes": [
{
    "name": "latexmk",
    "tools": [
    "latexmk"
    ]
},
],

// ビルドのレシピに使われるパーツ
"latex-workshop.latex.tools": [
{
    "name": "latexmk",
    "command": "latexmk",
    "args": [
    "-silent",
    "-outdir=%OUTDIR%",
    "%DOC%"
    ],
},
]

独自のスニペットを登録

vscode内の左下の歯車からユーザースニペットを選択,latexを選択するとlatex.jsonが生成される.
そこにスニペットを定義する.(正直そんなにわかってないけど,こちらも参考ページの例を載せときます)
{
    "report": {
        "prefix": "report",
        "body": [
        "\\documentclass[${1:a4paper,11pt}]{${2:jsarticle}}",
        "",
        "",
        "% 数式",
        "\\usepackage{amsmath,amsfonts}",
        "\\usepackage{bm}",
        "% 画像",
        "\\usepackage[dvipdfmx]{graphicx}",
        "${3}",
        "",
        "\\begin{document}",
        "",
        "\\title{${4}}",
        "\\author{${5}}",
        "\\date{${6:\\today}}",
        "\\maketitle",
        "",
        "",
        "$0",
        "",
        "",
        "\\end{document}"
        ],
        "description": "授業レポート用テンプレート"
    }
}

実際に使ってみる

// test.tex
\documentclass{jarticle}
\begin{document}

これはサンプルです。

\end{document}
以下のようにプレビューが表示されればOK

参考