BudouX という日本語の改行位置を自然にしてくれるツールの存在を知ったので、LaTeXでもこれができないか試してみました。
BudouX-LaTeX という形で公開したので、もしよければ使ってみてください。
BudouX-LaTeX とは
BudouX-LaTeX を使うと、以下のように LaTeX でも簡単に自然な日本語改行を実現できます。
通常の LaTeX | BudouX-LaTeX を使った場合 |
---|---|
LaTeXのコードでは、\usepackage{budoux}
して \budoux{...}
で文章を囲むだけです。
\usepackage{budoux}
\begin{document}
\budoux{
私はその人を常に先生と呼んでいた。
だからここでもただ先生と書くだけで本名は打ち明けない。
これは世間を憚かる遠慮というよりも、その方が私にとって自然だからである。
私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。
筆を執っても心持は同じ事である。
よそよそしい頭文字などはとても使う気にならない。
}
\end{document}
1行あたりの文字数の多い一般的なLaTeX文書であればあまり嬉しさはないかもしれません。
紙面に対して文字がそこそこ大きくなる場合、特にbeamerを使ってスライドを作る場合などに便利ではないかと思っています。
使い方
まずは本家のBudouXをインストールします。
インストール方法は上の公式GitHubに書いてありますが、簡単にpipでインストールできます:
pip install budoux
budoux
コマンドをシェルで叩けるようになったら、BudouX-LaTeXのGitHubから budoux.sty
を取ってきてLaTeXのワーキングディレクトリに配置します。
budoux.sty
はここからダウンロードすることもできます: https://raw.githubusercontent.com/s417-lama/budoux-latex/main/budoux.sty
あとは上の例のように \usepackage{budoux}
して \budoux{...}
で文章を囲むだけです。
なお、.texファイルのコンパイル時には --shell-escape
オプションを付ける必要があります。
これはbudoux-latexパッケージ内で外部コマンドの budoux
を呼び出し、その結果を用いているためです。
この辺はmintedパッケージを使うときと同じ制約です。
雑感
実装としては、一度全てbudoux
に丸投げし、改行が好ましくない文字列の塊に分解した後、改行が好ましくない文字の間にそれぞれ\nolinebreak
を挿入する、ということをやっています。
マクロを書くのにexpl3というものを使ったけどまだあまりよく分かってない。
まだまだ試作段階で\budoux{...}
の中身が複雑になってきたらどうするの?とか様々な問題があると思いますが(一応\textbf
くらいには対応しているはず)遊んでみてもらえると嬉しいです。