jnobuyukiのブログ

JavaScriptとR言語を中心に研究活動に役立つwebアプリケーション技術について考えていきます。twitter ID: @j_nobuyuki

Rマークダウンファイルで日本語を使う時のヒント

今回は、前に紹介したRマークダウンファイルについて、特に日本語テキストを扱うときに役立つ方法を紹介します。

webbeginner.hatenablog.com

日本語のテキストが折り返されない

そうなんです。前回紹介したやり方でフォントをうまく選べば、日本語も問題なく表示されます。でも、長いテキストを書いていると、折り返されずに用紙の右端まで文が書かれて、そこで切れてしまいます。

スペース2個で改行

これは、Xelatexという組版のエンジンが、単語間の空白を改行ポイントとして選んでいるからなんだそうです。
これを利用して、スペースを2個連続で挿入すると、その位置で改行することができます。
意図的に改行できるという意味ではわかりやすいのですが、普段文章を作成するときの無意識の動作ではないので、
作業効率という意味では必ずしも良い解決策ではありません。

ヘッダーファイルに情報を追加する

すでに他のwebページで、これを解消する方法が紹介されています。

zrbabbler.sp.land.to

上記のページによれば、以下のコードを追加することで、日本語文章も折り返しが可能になるとあります。

% 日本語を含む段落を行分割するための設定
\XeTeXlinebreaklocale "ja"
\XeTeXlinebreakskip=0pt plus 1pt
\XeTeXlinebreakpenalty=0

すばらしい情報なのですが、1つだけ問題があります。これは、.texファイル向けの書き方だということです。つまり、これをrmarkdown形式のヘッダーに合うように、翻訳する必要があります。いろいろな方法を試したのですが、なかなかうまくいきませんでした。

しかし、次のページの情報が解消策につながりました。

tex.stackexchange.com

このページでは、latexの設定をするためのパッケージファイルをどうやってrmarkdown形式のファイルで使用するかが議論されていて、その中でheader-includesという項目の値としてパッケージファイルの読み込みを「そのままの書き方で」行えるとあります。これと先ほどのページの情報を合わせて、以下のような書き方にしてみました。

---
title: "タイトル"
author: "著者"
date: "日付"
header-includes:
  - \XeTeXlinebreaklocale "ja"
  - \XeTeXlinebreakskip=0pt plus 1pt
  - \XeTeXlinebreakpenalty=0
output:
  pdf_document:
    latex_engine: xelatex
mainfont: Osaka
monofont: Osaka
---

この書き方でpdfファイルを作成したところ、見事に日本語文章も右端の折り返しが有効になりました。rマークダウンファイル内で、日本語のテキストを書く場合には、ぜひお試しください。