3 訳注: 日本語ユーザへの補足説明

このページは日本語ユーザ特有の事情を考慮し, 翻訳者の独断で補足説明として挿入しています.

3.1 TeX Live について

TeX Live は TeX の代表的な配布パッケージです. 詳細は公式ガイドの和訳版をご覧ください.

https://www.tug.org/texlive/doc/texlive-ja/texlive-ja.pdf

3.2 TinyTeX の軽量さについて

日本語文書作成には独自のパッケージをそれなりに必要とするため, 残念ながら意外とファイルサイズが大きくなることがあります. しかし4.4 でも注記したように, せいぜい 500 MB 前後にとどまることが多いと思いますし, TeX Live のように過年度版が不要であることに気づかないでいると年々占有領域が肥大化する, ということもありません.

3.3 最低限のPDF作成チュートリアル (Rmarkdown 併用)

本文でも最低限の動作例はありますが, 日本語文書には特有の設定が必要なことを考慮し, ここでは最低限の解説を書いておきます. RMarkdown の詳細な使用法については後述する RMarkdown のヘルプや関連書籍を読むことをおすすめします. 以下は tinytexrmarkdown パッケージをインストールし, かつ R (v4.1.2 以降) と RStudio (v2021.09.2 Build 382 以降) が使える前提でのチュートリアルです. OS は Windows, Mac, Linux 系のどれかであればおおむね問題なく動作すると思います. また, LaTeX と R についてある程度の知識があることを前提にしています. Rmdファイルを新規作成し, 以下の内容をコピペしてください.

---
title: "TinyTeX による日本語文書"
author: 
  - TinyTeX 太郎
  - TinyTeX 花子
output: 
  pdf_document:
    latex_engine: lualatex
documentclass: bxjsarticle
classoption:
  - pandoc
  - jafont=haranoaji
---

# ハロー日本語文書

ハロー

ここから PDF を生成する前に, 一点だけ確認してください. (Tiny) TeX で PDF を, それも Windows や Mac など異なる OS で同じPDFを生成する場合に一番問題になるのは日本語フォントの指定です. ここではオープンソースでかつ TeX と相性の良い「原ノ味フォント」を指定しています13. それが jafont=haranoaji の部分です. もちろん OS ごとの標準フォントを使うこともできます. 例えば,

  • Windows (10以降) ならば jafont=yu-win10 で遊書体 (Win 8 ならば yu-win になります)
  • Mac ならば jafont=hiragino-pro でヒラギノフォント
  • Ubuntu ならば jafont=noto-otf (インストール経路によっては noto-otc ?)

を指定できます. これらに書き換えれば (行頭のスペースも必要なので誤って消さないでください), フォントの追加インストールは不要です. 指定可能なフォント名の簡易リストは公式 をご覧ください.

しかし, 原ノ味フォントはこれまで TeX を一度も使用していない方の PC にはインストールされていない可能性があります. 原ノ味フォントは tinytex で以下の R コマンドを使用してインストールできますが, TeX 以外でも使用したい場合 (例: PDF に R で作成した画像ファイルを埋め込む際に, 画像内の文字も原ノ味フォントで統一したい)はこの方法はおすすめしません.

tinytex::tlmgr_install("haranoaji")

TeX 以外でも使用したい場合, 各 OS の標準的な方法でインストールするとよいです. 公式リポジトリ からダウンロード&インストールしてください

これを保存した後, RStudio 上で “knit” ボタンを押してください. PDFが生成されるはずです. tinytex は不足パッケージを自動でインストールしてくれるため, 初回動作はインストールも含め時間がかかると思いますが, 気長に待ってください.

もしエラーが出た場合, 本書のFAQ等に解決のヒントがあるはずです. 典型的なエラーとして, 不足TeXパッケージの自動インストールがうまくいかなかないということがまれにあります.

日本語文書に必要で, デフォルトでインストールされないものがいくつあります. 今回のサンプル文書に最低限必要な LaTeX パッケージは以下の R コマンドでインストールできます.

tinytex::tlmgr_install(c("bxjscls", "luatexja", "haranoaji"))

もしそれでもうまく行かない場合, そもそも環境構築に失敗している可能性があります. どうしても原因がわからない場合はインターネット上の質問フォーラムに頼ってください.

上記ファイルの記述を解説します. まず, 最初のハイフン --- で囲まれた範囲は, 文書全体の設定を記述しています. rmarkdown はこれをもとに tex ファイルを生成し, tinytex に渡してPDFを生成させます. つまり, TeX の場合は多くがプリアンブルの記述に対応します. 例えば documentclass: bxjsarticle の部分はそのまま文書クラスに bxjsarticle を指定していることを意味し, classoption: 以下の箇条書きは文書クラスのオプション引数を意味します. つまり, PDF 生成前に jafont= で指定してもらったフォントは, bxjsarticle という文書クラスの機能を使用して読み込まれています. 一方で latex_engine: lualatex は LuaLaTeX を使用して tex ファイルをコンパイルすることを意味します.

RMarkdown の解説で「IPA フォントをインストールせよ」と書いているネット上のブログ等をよく見かけますが, このように IPA フォントのインストールは必須ではありません. あなた自身が IPA フォントが必須だと考えていない限り不要です. 特に今回は tinytex を使用しているので, 不足パッケージを自動でインストールしてくれるため, フォントパッケージに限らず手動でのインストールはほとんど不要なはずですし, 世の中には広く普及している日本語フォントは IPA 以外に多く存在します. なぜ IPA フォントをインストールさせたがる記述がこのように多いのかは私にもよくわかりません.

日本語環境を想定したより詳細な環境構築に関しては, 翻訳者の書いた以下を参考にしてください.

https://rpubs.com/ktgrstsh/755893

RMarkdown の参考資料としては, 「R Markdown クックブック」があります.

もちろん, RMarkdown を介さず tex コマンドを直接書いた tex ファイルを作成し, tinytex に直接渡すこともできます. 例えば test.tex というファイルを作成し, 内容を以下のようにしてください.

\documentclass[lualatex,ja=standard,jafont=haranoaji]{bxjsarticle}
\title{TinyTeX による日本語文書}
\author{TinyTeX 太郎}
\begin{document}
\maketitle

\section{ハロー日本語文書}

ハロー
\end{document}

ここでも, 1行目の jafont=haranoaji でフォントを指定していることを忘れないでください. 名称は Rmd ファイルの場合と同じです. これを LuaLaTeX でコンパイルし, test.pdf という PDF を生成します.

tinytex::lualatex('test.tex')

3.4 (u)pLaTeX や (u)pBibTeX 使用者への注意

LaTeX ディストリビューションとしては TinyTeX でも TeX Live と同様に (u)pLaTeX や (u)pBibTeX を使うことができます. しかしこれらの LaTeX エンジン (および, 頭に up とついているもの概ね全て) は日本で独自に開発されてきたものであるため, tinytexrmarkdown パッケージはこれらを考慮した設計ではありません.

rmarkdown を使用する場合, 基本的に XeLaTeX または LuaLaTeX を使用して日本語文書をコンパイルしたほうが簡単です. ただし従来の pLaTeX と異なり, bxjs/ltjs シリーズの文書クラスを使用したほうが品質の良い日本語文書を作成できます. 日本語文書のための設定に関する詳細は翻訳者の開発した rmdja パッケージのヘルプやドキュメントや, https://rpubs.com/ktgrstsh/755893 を参考にしてください. rmdja には試験的ですが (u)pLaTeX を使用する機能もあります.

一方で, 以降は rmarkdown ではなく従来の LaTeX ディストリビューションの代わりとして tinytex を使いたい場合の解説をします. まず, 日本語環境を想定していないため文献引用もデフォルトでは BibTeX が呼び出されるため, (u)pBibTeX を想定したファイルを使用しているとハングアップの原因となります. tinytex パッケージで (u)pLaTeX/(u)pBibTeX による処理を xelatex()pdflatex() のように呼び出したい場合, latexmk() を使用します. TeX Wiki のこのページ に掲載されている .latexmkrc ファイルを作成し14, 作業フォルダに置いた上で, 以下のようなコマンドを実行します.

tinytex::latexmk(
  "<あなたのファイル>.tex",
  engine = "latex",
  bib_engine = 'bibtex',
  engine_args = "-latex=uplatex -gg -pdfdvi",
  emulation = F,
  clean = F
)

ここで .latexmkrc の設定を忘れていると, bibtex の処理でハングアップしてしまうため, おかしいと思ったら早めに bibtex を強制終了してください (最初はタスクスケジューラなどを見ながら試すといいかもしれません).

また, この方法では tinytex不足パッケージ自動インストール機能が無効であることに注意してください.

これは現在一般的な dvipdfmx を利用して PDF を生成する場合です. 例えば dvips を使用する場合は別のオプションが必要になりますが, それは latexmk の使い方としてご自身で調べてください.

また, BibTeX 問題を回避する別の方法として bib_engine = "biber" を指定することで Biber (BibLaTeX) エンジンを使えばこの問題は起こりませんが, BibLaTeX には日本語に適した文献スタイルファイルがまだほとんど用意されていない, という問題があります (エラーが発生することは少ないと思いますが姓名の表記順などが考慮されていません).

3.5 既存の TeX Live 使用者と後方互換性について

本文でも述べられているように, TeX Live をすでにインストールしている方は, R パッケージの tinytex で提供される関数をそのまま使うことができます. むしろこの状態で tinytex::install_tinytex() を使用してインストールすると競合が発生してしまいます. もし誤ってインストールしてしまった場合は, TinyTeX のインストールフォルダ (場所がわからない場合は FAQ 4.8参照) をまるごと削除してください.

TinyTeX のディストリビューションは TeX Live と同様, 年々更新されています. よって古いバージョンは自動的に凍結されていくため, 環境を維持したい場合は注意してください. 例えば最近ですと, 次のような問題が取り沙汰されています. https://acetaminophen.hatenablog.com/entry/2021/06/18/022108

このような場合は, 究極的には自衛手段として TinyTeX のフォルダのバックアップを取ることになると思います.

3.6 パッケージの自動インストール機能の限界について

TinyTeX のパッケージ自動インストール機能は, LaTeX 文書のコンパイル時のエラーログから, ファイルが足りないというエラーメッセージをパターンマッチングで検出し, 必要なパッケージを探索しています. よってエラーメッセージが特殊なものである場合はうまく動作しません.

日本語ユーザでありがちなケースとして, 例えば以下のようなケースがあります.

  1. ltjs* および bxjs* シリーズの文書クラスを使用している場合,
  2. haranoaji などの日本語フォントパッケージを使用している (かつ通常のフォントとしてインストールしていない) 場合
  3. 先述の (u)pBibTeX を使用する場合

(1, 2) はうまくいかなかったという報告が以前ありましたが, 正確な原因は特定できていません. 現在は問題なく動作するかもしれません. 最後の (3) は残念ながら根本的な解決はできませんが, エラーログファイルを tinytex::parse_install() に与えることで不足パッケージの自動解析および自動インストールをさせることができます.

もしうまく動作しない場合のために, 以下に XeLaTeX/LuaLaTeX を使用した日本語文書作成によく使用されるパッケージをまとめてインストールするコマンドを用意しました. 先程のチュートリアルでは使わなかったパッケージも含めています.

tinytex::tlmgr_install(c("bxjscls", "luatexja", "zxjatype", "zxjafont", "haranoaji", "jlreq"))

また, 本文 (FAQ4.12) でも触れられているように, R の tikzDevice を使用する際もこのエラーにハマりがちです.

tinytex::tlmgr_install(c("pgf", "preview", "xcolor"))

3.7 CTAN や TeX Live に登録されていないパッケージのインストール方法について

TeX Live に登録されていないパッケージは tlmgr コマンドでも tinytex の関数でも検索対象ではないため, ダウンロードおよびインストールすることができません. 例えば BXcoloremoji パッケージ, pxrubrica パッケージ, あるいは日本国内の一部の学会発表・学術論文用フォーマットなどが該当します. また, 登録されているものと, GitHub などでダウンロードできる開発版とでバージョンが異なることもありえます.

このような場合, .sty.cls といったファイルを手動でダウンロードし, 適切な場所に置く必要があります. プロジェクトのフォルダに直接置いても良いですが, それだと新たに文書を作成するたびにファイルをコピーする必要があります.

TinyTeX および TeX Live の仕様として, ファイルを配置する場所はある程度自由ですが, 管理のしやすさを考慮して FAQ 4.6 にあるような, texmf-home フォルダまたは, texmf-local 以下に配置することをお勧めします.15 ターミナルで kpsewhich --var-value=TEXMFHOME を実行し出力されたフォルダに配置します. このフォルダ以下に配置したファイルであれば認識されますが, 慣例的に .sty/.cls ファイルは主に tex/latex/ 以下に, .bst ファイルは bibtex/bst 以下に置かれます.

(システム管理者の方は適当に工夫してください). root でインストールしていない場合は texmf-local になると思います.

TinyTeX は ls-R を使用しているため16 その後 mktexlsr を実行します. R上では system() で呼び出すことができます.

system("mktexlsr")

ただし, 例に挙げた BXcoloremoji パッケージは, $TEXMF/tex/latex/BXcoloremoji 以下に配置するように指示があります. 今回は $TEXMFtexmf-home/texmf-local に対応させることができます. このように, パッケージによってはフォルダ構造に制約があるため, 手動インストール時には注意してください.

TeX のフォルダ構造の仕組みについては TeX Wiki の『LaTeX入門/各種パッケージの利用』と『TeX のフォルダ構成』も参考になります.

どうしてもうまく行かなかったら作業フォルダに毎回配置してください.


  1. 原ノ味フォントは源ノ書体/Notoフォントとほぼ同じ字形です↩︎

  2. もしうまく動作しない場合は rmdja パッケージに内蔵してあるファイル をコピーしてください.↩︎

  3. https://tex.stackexchange.com/questions/583006/where-do-i-place-my-own-sty-or-cls-files-to-get-them-working-with-tinytex では 2021/3/3 以降は texmf-home に配置すべきという回答が書かれていますが, v0.33 で確認したところ texmf-home はデフォルトでは認識されず, texmf-local 以下に置く必要があります.↩︎

  4. ls-R 不要論を唱える方もいますし私もその主張には一理あると思いますが, TinyTeX では残念ながら使用しているので必要です.↩︎