niszetの日記

アナログCMOS系雑用エンジニアが頑張る備忘録系日記

RStudioから日本語入りpdfを作る云々の作業履歴。

よくわからんけど動いた!

(La)TeXに入門しようと思って、[改訂第7版]LaTeX2ε美文書作成入門を買ってきました。

gihyo.jp

とりあえず読み進めています。環境構築がほぼ何も考えずにTeXLiveでOKなので楽な時代なんだろうな…と思っています(niszetは(La)TeXのことをよく知らないし、2年くらい前に触ったときもTeXLiveなのでそれ以前を知らない)

3年に一度?のペースで更新しているらしいので、今年出るのでは…買うのは時期が悪いのでは…と後で思いましたが必要な時に買わないでいつ買うんでしょうかね…。(なお、本当に今必要なのかはよくわからない)

texwiki.texjp.org

とりあえず十分な時間待てば完了するので、その間に本を読んでました。

一方、(La)TeX界隈はLuaLaTeXが人気だそうで。2019のアドカレにも書いてある。

adventar.org

なので、LuaLaTeXを使っていこうと思ったのですが、ちょっとハマったので自分のためにメモです。日本語を含む文書で無駄に時間を溶かさないように…。

LuaLaTeXから始めるTeX…の道はなんか険しそうですが、何もわからんので逆に良さそう。

ドキュメントクラス

まずはじめにはまったのがコレ。 美文書は(u)pLaTeXの使用を前提としているので、LuaLaTeXを使う場合は注意。LuaTeX-jaのページによると、

texwiki.texjp.org

使用可能なドキュメントクラスは ltjarticle, ltjsarticle, bxjsarticle, beamer などがあります. (u)jarticle や jsarticle などの (e-)(u)pTeX の使用を前提としたものは使用できません.

とのこと。とりあえずは頭にltってつけると対応するドキュメントクラスがありそう。ただ、後述のとおりこれらは使わないことにしたです。

エラーメッセージ読んでも全然わからん…ってなるのがツライ。あと場合によってエラーなく変換されるけど日本語部分が全部消えているってのもツライ…。

こういうエラーが出たりする。(pdflatexではなく)lualatex指定しているのになぁ…となる場合はドキュメントクラスを疑うべき。

texwiki.texjp.org

RMarkdownと組み合わせるとちょっとつらい。

2018年のAtusyさんの記事がこちらにあるので、大体これを読めばよいのですが、私は上に書いた通りLuaLaTeXを使うniszetなので、ここを参考にしつつ、LuaLaTeXを使っていくのでした。

qiita.com

rmarkdown::pdf_documentのマニュアルを読むと、latex_engineの取れる値は3つ。

LaTeX engine for producing PDF output. Options are "pdflatex", "lualatex", and "xelatex".

なのでpLaTeXとかはそもそも選択できないのである…。

rmarkdown.rstudio.com

まぁそもそも、Pandocのオプションにもplatexはないんだけどね…。rmarkdownが上記3つのengineにしか対応していないのは謎です。

pandoc.org

色々さがしていく…

ひとまず変換できるところまで行った。このとき、RmdファイルのYAML部分は以下のようになっている。

これで問題なく日本語の文字が入っていても変換できる。

output: 
  pdf_document:
    latex_engine: lualatex
documentclass: ltjsarticle

しかし、出力に大量の警告メッセージ…

警告メッセージ: Package microtype Warning: Could not parse font size 10\jsc@mpt ' (microtype) in font setbasicmath' on input line 74.

気になって検索すると、BXjscls パッケージのマニュアル(正確にはソースコード説明書)が見つかった。

http://ctan.math.washington.edu/tex-archive/language/japanese/BX/bxjscls/bxjscls.pdf

作者の人、どこかで見た名前だ…と思いつつ検索すると、TeX wikiにも記載がある(そらそうだ)

texwiki.texjp.org

よさそうなのでこちらに乗り換える。TeX Liveに含まれているらしいので、そのまま使える。

先のYAMLdocumentclass: bxjsarticle と指定するが日本語部分が消えている。

Wikiによればja=standardの指定が必要とのこと。しかしこれだけ設定してもエラー。ドキュメントクラスの指定が必要とのこと。

結局、下記のように指定するのが正しいようだ。

output: 
  pdf_document:
    latex_engine: lualatex
documentclass: bixjsarticle
classoption: lualatex, ja=standard

これでいい感じにLuaLaTeXで日本語を含んだ文書作成が出来そう。

しかし、ビルド(とは呼ばないらしいが)がすごい遅い気がするんだけど…。リアルタイムプレビューとかは難しそうですね…。