[upLaTeX/pxrubrica] ドイツ語ウムラウトを含むルビの表示問題

[upLaTeX/pxrubrica] ドイツ語ウムラウトを含むルビの表示問題

- k j の投稿
返信数: 5

現在、upLaTeX + jlreq + pxrubrica の環境で、
日本語の単語や語句にドイツ語のウムラウト文字(ä, ö, ü など)を含むルビを振ろうとしていますが、
期待通りに表示されない問題に直面しています。

ウムラウトを含む欧文ルビを正しく表示させるための解決策や適切な設定、回避策などを
ご存知の方がいらっしゃいましたら、ご教示いただけますでしょうか。

【環境】

  • OS: macOS 15.3.2
  • TeXディストリビューション: TeX Live 2025
  • コンパイルエンジン: upLaTeX
  • ドキュメントクラス: jlreq
  • 主要パッケージ: pxrubrica (\rubysetup{J}), newtxtext

【問題の詳細】
ウムラウト文字 (\"a, \"o, \"u, \"A, \"O, \"U) を含むドイツ語の単語や語句を
`\ruby` コマンドのルビ部分に指定した際に、問題が発生します。

具体的な現象とコードを示す最小限のデモンストレーションファイルを作成しましたので、添付いたします。

  • uplatex-ruby-demo.tex
  • uplatex-ruby-demo.pdf

pdfファイルで、ウムラウトを含むルビが期待される表示(親文字の上に正しくウムラウト文字が表示される)ではなく、
ダブルクォーテーションが先に出力された後に親文字が別に出力される問題がご確認いただけるかと思います。

お忙しいところ恐縮ですが、アドバイスいただけますと幸いです。どうかよろしくお願いいたします。

k j への返信

Re: [upLaTeX/pxrubrica] ドイツ語ウムラウトを含むルビの表示問題

- ut の投稿
# 連日の投稿で、そんなに暇なのかと笑われてしまいそうですが…。

# 私の手元のシステムは古いので、私の手元でうまくいったからと
# いって、現行のシステムでもうまくいくという保証はありません、
# すいません。

添付されてらっしゃる uplatex-ruby-demo には、

> pxrubrica パッケージはウムラウト(\verb|\"a|, \verb|\"o|,
> \verb|\"u| など)を含むルビに対応しているとされていますが、

と書かれていますが、それが pxrubrica のドキュメントのどこに
書かれているものなのか、私には見つけられませんでした。

それはさて措き。

v1.3e [2023/03/01] のドキュメントの 1~3 の部分をざっくり眺
めてみましたら、「2 ルビ機能」ではなくて「3 圏点機能」の部分
ではありますが、註*10 に、

> ただし、引数の先頭の文字がASCII英字である場合は名前の指定と
> 見なされるため、テキストとして扱いたい場合は適宜{ }を補う等
> の措置が必要である。

と書かれていました。

それで、試しに、引数の中味を { } で囲んでみましたら、とりあえ
ずはうまくいったように見えます。
(ルビの配置等、細かな部分がご意図通りかどうかは分かりません
けれど)。
取り急ぎ、ご参考まで。

添付 3911.jpg
ut への返信

Re: [upLaTeX/pxrubrica] ドイツ語ウムラウトを含むルビの表示問題

- 和田 勇 の投稿

ut さんの検証通りルビ内の当該文字を {} で囲ってください。

もし対象のものがたくさんあるなら例えば perl に以下のような置換パターンを指定して一括変換も可能です。

      s/(\\ruby[{][^}]+[}][{])([^}]*)(\\"[aAuUeEoO]|\\ss)([^}]*[}])/$1$2\{$3\}$4/g;

さて、グリフが気にならなければ \"a ではなく直接 unicode の ä で入力する方法もあります。

ただし \ruby{熊}{Bär} ではエラーが生じてしまうので \ruby{熊}{B{ä}r} と 対象の文字を { と '}' で囲ってください。 この点は ut さんのと類似です。

この辺の作業は以前友人のファイルの類似の書き換えを行った際の perl スクリプトが ありましたので、 \ruby の部分のみ加筆してあります。 なおmacoS バンドルの /usr/bin/perl でも確認済です。

使い方は以下のような感じです。

変更が妥当か確認作業

     perl -Mutf8  -npf to-unicode.pl uplatex-ruby-demo.tex | diff -u uplatex-ruby-demo.tex -

OK だったら、リダイレクトするか、perl に -i を追加して直接変更

     perl -Mutf8  -i  -npf to-unicode.pl uplatex-ruby-demo.tex
和田 勇 への返信

Re: [upLaTeX/pxrubrica] ドイツ語ウムラウトを含むルビの表示問題

- k j の投稿

ut様、和田様

早速ご丁寧なアドバイスをいただき、誠にありがとうございます。

ご教示いただいた通り、\rubyコマンドの第2引数(ウムラウトを含むルビ文字部分)の当該文字を波括弧 {} で囲む方法を試しましたところ、
ウムラウト文字付きルビが期待通りに正しく表示されました。

ut様には、マニュアルの調査不足でお手数をおかけしてすみません。また、デモファイル内のドキュメントに関する記述についてご不審の箇所ですが、
こちらの確認不足による誤りで、デモ作成時に発生したハルシネーションの除去が不十分なためでした。
貴重なお時間をとらせてしまい、またpxrubricaの作者様にも失礼なことで、重々お詫びいたします。

和田様には、置換作業を自動化するためのPerlスクリプト までご提供いただき、誠にありがとうございます。
diff を使った確認方法、-i オプションでの直接変更といった具体的な使い方まで、
非常に丁寧にご説明いただき、大変助かります。お話の通り、修正対象箇所が多数ありますので、
ご提供下さったスクリプトをありがたく活用させていただき、効率的に修正作業を進めたいと思います。

ご教示に深く感謝申し上げます。

ut への返信

Re: [upLaTeX/pxrubrica] ドイツ語ウムラウトを含むルビの表示問題

- ut の投稿
蛇足の自己レスです。

ドキュメントの記述で着目すべきだったのは、註*10 ではなくて、

> ・ クラスタ: すなわち、{ } に囲まれたテキスト。全体が一つ
>   の《文字》と見なされる。
>   -- クラスタの中では任意のLATEX の“インライン”の命令が使える。

という部分だったのかも知れません。

手元でちょっと試してみて、「うまくいった!」という勢いで書き
込んだら、結局勇み足だった、といういつもの間違いを、今回も犯
してしまったようです…。

添付 3911_2.jpg