LuaLaTeXの環境構築をしてLuaLaTeXデビューする方法

この記事は約21分で読めます。
当サイトには、広告及びアフィリエイトリンクが含まれ、それによって収益を得ています。記事の内容やリンクには、プロモーションが含まれる場合があります。詳細については、プライバシーポリシーをご覧ください。

普段はpLaTeX(多分)を使っているのですが、LuaLaTeXだとUTF-8の文字が使えるので、旧字体の名前とかをそのまま書けるのが良いな~と前から思っていました。で、最近LuaLaTeXのファイルを使う機会があり、手で書き直すの面倒だしもういっそのことLuaLaTeXデビューするか~となり、LuaLaTeXデビューしたので、やったことをざっとまとめます。

前提条件

  • TeX Liveを導入済み
    • あのインストールにアホほど時間かかるやつです
  • Windows 11
  • Visual Studio Codeでの編集環境を整えている
    • これ自体はあんまり関係無くて、要するにこの辺の設定にある程度慣れているかということ

手順

TeX Liveのインストール

がんばりましょう

install-tl-windows.exe

Installing TeX Live over the Internet - TeX Users Group

からダウンロードして実行し、とりあえず全部のパッケージをインストールしましょう。高度な設定とかをクリックせずにとりあえずインストールしてしまえばだいたい全部入ると思います。ここで、LuaLaTeX自体もインストールされます。死ぬほど時間がかかるので覚悟しましょう。数時間は普通にかかります。

Visual Studio Codeのインストール、拡張機能のインストール

VSCodeをインストールします。Microsoftの公式サイトからダウンロードしてインストールしましょう。

Download Visual Studio Code - Mac, Linux, Windows
Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio C...

インストールして起動後、拡張機能としてJapanese Language Pack for VS Code(日本語化の拡張機能)とLaTeX Workshop(作成者が「James Yu」のやつ)をインストールします。

.latexmkrcを作成する

これはLuaLaTeXでは不要でした。やらなくてもいいです(やったら動かなくなるわけではない)

Windowsのユーザーフォルダ(C:/Users/{ユーザー名})に、.latexmkrcという名前のファイルを作ります。これはただのテキストファイルなのですが、拡張子を含まない名前が「.latexmkrc」なので注意してください。.txtみたいな拡張子が付いているとダメです。

ファイルの中には以下の内容を書き込んで保存してください(出典)。

簡易的にVSCodeを用いてLaTeX環境を構築する - Qiita
Windows上で簡易的にLaTeXの環境を構築するVSCodeを用いてWindowsでLaTeXの環境構築の仕方について説明します。この記事では、LaTeXで編集したものをPDF化できるところま…
C:/Users/ユーザー名/.latexmkrc
# from https://qiita.com/batora/items/092360281e12ad828175#latexmkrc%E3%81%AE%E4%BD%9C%E6%88%90

#!/usr/bin/env perl

# LaTeX
$latex = 'platex %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"

LaTeX Workshopの設定(Settings.json)

さっきの.latexmkrcは結局不要だったので、ここからが本題です。LaTeX文書をコンパイルするときのコマンドなどを設定します。

VSCodeを開いた(カレントウインドウにした)状態で、キーボードでCtrl + Shift + Pを同時押しして、コマンドパレットを開いてください。そして、出てくる検索窓に「Settings.json」と入力し、「基本設定: ユーザー設定を開く(JSON)」を選んで実行してください。

文字で表記された設定ファイルが出てきます。これに色々と書き加えていきます。以下をコピペしてください。なお、LaTeX Workshop以外の設定もここに書き込まれるため、{}などの位置がおかしくなりやすいのでお気をつけて。

Settings.json
{
    // ビルドのレシピ
    "latex-workshop.latex.recipes": [
        {
            "name": "lualatex",
            "tools": [
                // 2回ビルドすることで図表番号を出力できるように
                "lualatexmk",
                "lualatexmk"
            ]
        }
    ],
    // 生成ファイルを現在のディレクトリに吐き出す
    "latex-workshop.latex.outDir": "",
    // ビルドのレシピに使われるパーツ
    "latex-workshop.latex.tools": [
        {
            "name": "lualatexmk",
            "command": "lualatex",
            "args": [
                "--cmdx",
                "-file-line-error",
                "-synctex=1",
                "-interaction=nonstopmode",
                "-halt-on-error",
                "-output-directory=%OUTDIR%",
                "%DOC%"
            ],
            "env": {}
        },
    ],
    "latex-workshop.view.pdf.external.synctex.args": [
        "-forward-search",
        "%TEX%",
        "%LINE%",
        "-reuse-instance",
        "-inverse-search",
        "code.cmd -r -g \"%f:%l\"",
        "%PDF%"
    ],
    // LaTeX文書のビルド時にファイルを消す
    "latex-workshop.latex.autoClean.run": "onBuilt",
    // LaTeX文書のビルド時に消すファイルの指定
    "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"
    ],
    "workbench.editor.enablePreview": false,
    "editor.formatOnSave": true,
    "[latex]": {
        // 保存時に自動でフォーマットする
        "editor.formatOnSave": true,
        "editor.defaultFormatter": "James-Yu.latex-workshop",
        // スニペット補完中にも補完を使えるようにする
        "editor.suggest.snippetsPreventQuickSuggestions": false,
        // インデント幅を4にする
        "editor.tabSize": 4
    },
    "latex-workshop.formatting.latexindent.path": "latexindent",
    "latex-workshop.formatting.latexindent.args": [
        "%TMPFILE%",
        "-c=%DIR%/",
        "-y=defaultIndent: '%INDENT%'"
    ],
    "workbench.editorAssociations": {
        "*.pdf": "latex-workshop-pdf-hook"
    },
    // タブでPDFビューアを開く
    "latex-workshop.view.pdf.viewer": "tab",
    // 保存したら自動でビルドする
    "latex-workshop.latex.autoBuild.run": "onSave",
    "editor.minimap.enabled": true,
    "latex-workshop.latex.recipe.default": "lualatex",
}

テスト

以下のようなファイルを適当な場所に作成し、VSCodeで編集して、保存して、ビルドされるかどうか、正常に終わるかどうか確認してみましょう。できればひとまずOKです。

test.tex
\documentclass{ltjsarticle}
\usepackage{luatexja}

\begin{document}
  \section{Lua\TeX のテスト}
  あーあーあー、テストテスト
  髙橋さんとか旧字体も出ていますか??
    \subsection{テスト}
    あーあーあー
\end{document}

スニペットの追加

さあ使おうと思っても、パッケージなんかの追加がダルいのがLaTeXです。というわけで、そういったものをあらかじめまとめておいて、楽に書き始められるようにしておきましょう。こればかりは個人差が大きいので、各自で作ってもらうことになりますが、私のサンプルを置いておきます。なお、書いていながら全ての機能を使っているわけではないので、潜在的なバグが存在する可能性があります。

これは、VSCodeの歯車マークから開けるスニペットで、latex.jsonに書き込みます。なお、既に英語でLaTeX Workshopのスニペットがあるかもしれませんが、全て消してしまってよいです。

JSON
{
"report-lualatex": {
        // prefixのキーに対応する値がスニペットの出現するトリガーになるので、使いやすいprefixに変える
        "prefix": "luareport",
        "body": [
            "\\documentclass[a4paper, 11pt]{ltjsarticle}",
            "\\usepackage[margin=25mm,bottom=25mm]{geometry}",
            "\\usepackage{graphicx}",
            "\\usepackage{amsmath}",
            "\\usepackage{enumerate}",
            "\\usepackage{amssymb}",
            "\\usepackage{caption}",
            "",
            "\\usepackage{siunitx}",
            "\\usepackage{listings}",
            "\\usepackage{xcolor}",
            "\\usepackage{url}",
            "\\usepackage{here}",
            "\\usepackage{multicol}",
            "\\usepackage{multirow}",
            "\\usepackage{enumitem}",
            "\\usepackage{wrapfig}",
            "\\usepackage[nobreak]{cite}",
            "\\captionsetup[figure]{labelsep=quad}",
            "\\captionsetup[table]{labelsep=quad}",
            "",
            "\\newcommand{\\bhline}[1]{\\noalign{\\hrule height #1}} % 特定の横罫線だけ太くする",
            "% \\bhline{1pt} みたいにして使う",
            "",
            "\\usepackage{luatexja-fontspec}",
            "\\setmainfont[",
            "    Ligatures=TeX,",
            "]{Times New Roman}",
            "\\setmainjfont[",
            "    YokoFeatures={JFM=prop},",
            "    CharacterWidth=Proportional,",
            "    Kerning=On,",
            "]{IPAPMincho}",
            "",
            "\\renewcommand{\\lstlistingname}{ソースコード}",
            "\\lstset{",
            "    basicstyle  = \ttfamily,",
            "    columns     = fixed,",
            "    basewidth   = .5em,",
            "    numbers     = left,",
            "    numberstyle = \\small,",
            "    frame       = tb,",
            "    % 色",
            "    commentstyle=\\color{green!30!darkgray},",
            "    keywordstyle=\\color{blue},",
            "    stringstyle=\\color{violet!60!gray},",
            "}",
            "",
            "%ここからhyperrefパッケージ関連",
            "% dvipdfmxは日本語のときのみ書く",
            "\\usepackage[luatex,pdfencoding=auto]{hyperref}",
            "% \\usepackage{pxjahyper} % (u)pLaTeXのときのみ書く",
            "\\hypersetup{%",
            "    setpagesize=false,%",
            "    bookmarksdepth=tocdepth,%",
            "    bookmarksnumbered=true,%",
            "    colorlinks=true,%",
            "    urlcolor=blue,%URLの文字色設定",
            "    pdftitle={},%",
            "    pdfsubject={},%",
            "    pdfauthor={},%",
            "    pdfkeywords={}",
            "}",
            "",
            "%\\title{タイトル}",
            "%\\author{なまえ\\thanks{学校名 学科 年 番}}",
            "%\\date{2024/01/00}",
            "\\begin{document}",
            "\\maketitle",
            "\\section{章}",
            "\\end{document}",
        ]
    },
    "luafigure": {
        "prefix": "luafigure",
        "body": [
            "\\begin{figure}[H]",
			      "	  \\centering",
			      "	  \\includegraphics[width=0.5\\columnwidth]{}",
			      "   \\caption{}",
            "   \\label{fig:}",
            "\\end{figure}",
        ]
    },
    "luatable": {
        "prefix": "luatable",
        "body": [
            "\\begin{table}[H]",
            "    \\centering",
            "    \\includegraphics[width=0.5\\columnwidth]{}",
            "    \\caption{}",
            "    \\label{table:}",
            "\\end{table}",
        ]
    },
    "bibliography": {
        "prefix": "thebibliography",
        "body": [
            "\\begin{thebibliography}{9}",
            "\\bibitem{source1}{タイトル}\\newline",
            "\\url{https://...}\\newline",
            "202//(曜日)閲覧\\newline",
            "\\end{thebibliography}",
        ]
    },
    "addbibliography": {
        "prefix": "addbibliography",
        "body": [
            "\\bibitem{source2}{タイトル}\\newline",
            "\\url{https://...}\\newline",
            "2024/01/00(曜日)閲覧\\newline",
        ]
    },
    "addlibbibliography": {
        "prefix": "addlibbibliography",
        "body": [
            "\\bibitem{source3}{著者名}、{書籍名}、{出版社}、{発行年月日}\\newline",
        ]
    }
}

スニペットを使うには、LaTeXファイルを編集中に、”prefix”での文字列を打つとサジェストが出てくるので、それをTabキーなどで選択すればよいです。

つまづいたポイント

既にコメントでも書いていますが、Settings.jsonでビルドコマンドを設定する際、どうやっても図表番号が??になったまま直らず困っていました。図表番号は2回以上ビルドして初めて出力されることを思い出し、2回ビルドする設定にしたことで直りました。ビルドにかかる時間は倍になるのですが、うまく動いたのでこれで満足しています。

まとめ

既にplatexで環境構築をした経験がある私からすると、.latexmkrcが不要というだけでかなり便利だと思いました。UTF-8の文字が使えるのは楽でいいですし、更に楽にレポートが書けそうです(ほんまか?)。

ただ若干ビルドにかかる時間は長くなった気がします。便利だからいいんですけども…

参考情報

病気療養中のガジェットオタクです。PC、スマホからオーディオ、家電まで、デジモノ・IT系中心に自分の興味のあるものならなんでも記事にします。誤字脱字など、ミスの報告歓迎です。
お問い合わせは、当ブログのお問い合わせフォームにお願いします。レビュー依頼など、各種ご依頼承っています。

でじぃをフォローする↓
アプリの使い方
スポンサーリンク
でじぃをフォローする↓
タイトルとURLをコピーしました