[主にLuaLaTeX] 環境設定の覚え書き(2024.02)

コードを書くときに最もめんどくさいでおなじみ環境設定ですが、LaTeXでもそれは例外ではありません。ことLaTeXの場合は、使うエンジンと言語設定などでいくらでもうまくいかない事例が後追いでやってくるので、覚え書きがてらここに共有しておきます。

なお筆者の環境ですが、

* OS: Windows 11 Home
* エディタ: VSCode+[LaTeX Workshop (James Yu)](https://github.com/James-Yu/LaTeX-Workshop)
* 本体: TeX Live

を使用しています。ファイルを保存するごとにlatexmkを走らせる設定になっているため、.latexmkrcをフォルダごとにいじって都度都度の設定に対応しています。便利。

# デフォルト (LuaLaTeX・英語)
普段、論文を書いたりメモを書いたりする一番デフォルトの設定です。分野的に英語で書くことばっかりだったのでpdflatexを使っていたのですが、日本語対応を考慮した結果、現在はその後継とされるlualatexを使っています。

```perl:.latexmkrc
#!usr/local/env perl

$pdflatex = 'lualatex %O -output-format=pdf %S';
```

ドキュメントクラスは論文の場合指定がありますが ([amscls](https://www.ctan.org/pkg/amscls)とか)、自分用の場合は[scrartcl](https://www.ctan.org/pkg/scrartcl)を使用しています。強いこだわりがあるわけではないですが、昔から使っています。

パッケージ読み込みもかなりの部分がテンプレートとなっています。たまに必要となるやつ ([lscape](https://ctan.org/pkg/lscape) / [pdflscape](https://ctan.org/pkg/pdflscape)とか) もコメントとして書いていて、必要な時にコメントから外すようにしています。

```latex
%\usepackage[T1]{fontenc}
\usepackage{fontspec}
\usepackage{lmodern}
\usepackage{bookmark}

%% AMS packages
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{amsopn}

\mathtoolsset{showonlyrefs=true}
\numberwithin{equation}{section}

%% Font packages
%\usepackage{stix2}

%% Biblatex settings
\usepackage{csquotes}
\usepackage[%
  backend     = biber,%
  style       = numeric,%
  sorting     = nyt,%
  language    = english,%
  texencoding = utf8,%
  bibencoding = utf8%
]{biblatex}

%% Misc
\usepackage{enumitem}
\usepackage[style=base]{caption}[2020/09/12]
  \captionsetup[figure]{name={Figure\ }}
  \numberwithin{figure}{section}
%\usepackage{lscape}
%\usepackage{pdflscape}
\usepackage{graphicx}
```

1行目はpdflatexを使っていた時の名残だと思います (おぼろげ)。lualatexだとfontspecでTUエンコーディングにした方が圧倒的に便利なのですが、pdflatexに戻さなきゃいけなくなった時とかあるかもしれませんし残してあります。『[LaTeX の「アレなデフォルト」 傾向と対策](https://qiita.com/zr_tex8r/items/297154ca924749e62471)』(zr_tex8r) の「その6」節も参考にしてみてください。

「`%% AMS packages`」の行以降はわりと個人の趣味も出ているので、適宜採用したりしなかったりしてください。また、私の場合は圏論や論理学の話題が多いため、これに加えて[tikz](https://www.ctan.org/pkg/tikz)もしくは[tikz-cd](https://www.ctan.org/pkg/tikz-cd)、[bussproofs](https://www.ctan.org/pkg/bussproofs)などもテンプレートで読み込んでいます。

# 日本語論文 (LuaLaTeX)

日本語論文でもほとんどの設定は変わりません。日本語で論文を投稿したことがないので実はこのままうまくいくか分かってないのですが、日本語のメモを書く場合は[bxjscls](https://www.ctan.org/pkg/bxjscls)を使って以下の設定をデフォルトにしています。

```latex
\documentclass[lualatex,dvi=dvipdfmx,ja=standard,a4paper,11ptj]{bxjsarticle}
\usepackage[japanese,english]{babel}

%% ここにパッケージ読み込みとか

\selectlanguage{japanese}    % To avoid English tex linter.
```

babelの英語を設定に入れている (そして直後に`\selectlanguage`している) のは、出典のほとんどが英語論文なのでそこだけ英語のフォーマットで出力させる目的と、エディタに入れているlinter (LTeX) が英語にしか対応しておらず大暴れするため、その防止の目的とで入れています。`\selectlanguage`を明示することにより、linterくんに余計な仕事をさせないようにしています。

# 日本語プレゼン
[luatexja](https://www.ctan.org/pkg/luatexja)+[beamer](https://www.ctan.org/pkg/beamer)の組み合わせで日本語のスライドを作ります。ファイルからそのままコピペしてきたのでテンプレート以外も混在しています。

このファイルでは、フォントは游ゴシックを使っています (yu-winオプション)。また、no-mathオプションで数式だけセリフ体(latinmodern-math.otf) にしています。

```latex
\usepackage[TU]{fontenc}
\usepackage{bookmark}

%% Detect and warn outdated packages
\usepackage[l2tabu,orthodox]{nag}

%% Packages for proportional Japanese fonts
\usepackage{metalogo}
\usepackage[no-math,yu-win10]{luatexja-preset}
\usepackage{luatexja-otf}

%% AMS math packages
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{unicode-math}

\mathtoolsset{showonlyrefs}
\setmathfont{latinmodern-math.otf}
\setmathfont{xits-math}[range="2A33]

%% Math
\usepackage{mathrsfs}
\usepackage{tikz}


%% Misc
\usepackage{caption}
```
```latex
%% Jafont setting
\renewcommand{\kanjifamilydefault}{\gtdefault}

%% Beamer theme setting
\setbeamercolor{emph}{fg=red}
\renewcommand<>{\emph}[1]{%
  {\usebeamercolor[fg]{emph}\only#2#1}%
}

%% Page structure
\renewcommand{\baselinestretch}{1.1}

%% Theorem environments
\newtheorem{thmj}{定理}[section]
\newtheorem{propj}[theorem]{命題}
\newtheorem{lemj}[theorem]{補題}
\newtheorem{corj}[theorem]{系}

\newtheorem{defj}[theorem]{定義}
\newtheorem{prblmj}{問}
\newtheorem{conjj}{予想}
\newtheorem{exaj}[theorem]{例}
\newtheorem{claimj}[theorem]{主張}
\newtheorem{factj}[theorem]{事実}

\newtheorem{remarkj}[theorem]{注意}
\newtheorem{notej}[theorem]{Note}
```

[xits-math](https://www.ctan.org/pkg/xits)の`"2A33`だけ読み込んでいるのは、xitsで読み込まれるフォントがちょっと多すぎるのもあるんですが、その中で`\smashtimes` ([U+2A33](https://unicd.net/char/2A33)) だけどうしても使いたかったからです。

また、使っていたbeamerのスタイルが強調に青文字を使用していたので、それだけ赤文字に変更することもしています。

# 他の処理系 (pdflatex/XeLaTeX)

処理系がlualatexじゃない場合も、フォント周りとエンコード周りの基礎設定以外は基本的に変わりません。例えばfontspecはlualatexとxelatexのためのパッケージなのでpdflatexに通す場合は消しておかないといけなかったり、そのような場所で微妙に差異が存在します。

`.latexmkrc`は次のように書き換えられます。

```perl:.latexmkrc
#!usr/local/env perl

#$pdflatex   = 'lualatex %O -output-format=pdf %S';
$pdflatex = 'pdflatex %O %S'
#$pdflatex = 'xelatex %O %S'
```