2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LaTeXでBudouXを使った自然な日本語改行

Posted at

BudouX という日本語の改行位置を自然にしてくれるツールの存在を知ったので、LaTeXでもこれができないか試してみました。

BudouX-LaTeX という形で公開したので、もしよければ使ってみてください。

BudouX-LaTeX とは

BudouX-LaTeX を使うと、以下のように LaTeX でも簡単に自然な日本語改行を実現できます。

通常の LaTeX BudouX-LaTeX を使った場合
example-1.png example-2.png

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くらいには対応しているはず)遊んでみてもらえると嬉しいです。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?