rubyを使うとotfパッケージを使う文字がうまく変換されない

rubyを使うとotfパッケージを使う文字がうまく変換されない

- ishii akira の投稿
返信数: 6

美文第6版にあったように otfパッケージを使って kmを表示させました。

rubyを使う前は km(キロメートルのことです) と表示(pdfファイルとして)されましたが、漢字にルビ(具体的には素に”そ”)をつけようと思い、プリアンプルにruby を指定し、ルビを振ってコンパイルしました。

すると、ルビ文字は小さく表示されるのですが、km が耳が三つで出来た漢字(ささやく)に表示されてしまいました。もう一度rubyを使わないでコンパイルしたら km と表示されますので、rubyとotfの関係かと思われます。

kmもルビも正常に表示させるにはどうすればよいでしょうか。

プリアンプルには ¥usepackage{otf}と¥usepackage{ruby}で指定しました。

以上

ishii akira への返信

Re: rubyを使うとotfパッケージを使う文字がうまく変換されない

- 前田 一貴 の投稿
ruby.sty は CJK パッケージ(欧文に CJK を含めるためのもの)の付属物で,
内部で CJK.sty を読み込んでしまうために妙なことが起こるようです.
代わりのパッケージとして okumacro か pxrubrica を使うとよいでしょう.
前田 一貴 への返信

Re: rubyを使うとotfパッケージを使う文字がうまく変換されない

- ishii akira の投稿

ご回答ありがとうございました。

どうしてそうなるのかまでお教えくださりありがとうございました。

お答えの通りに、別のマクロを指定することで解決いたしました。

ishii akira への返信

Re: rubyを使うとotfパッケージを使う文字がうまく変換されない

- aminophen の投稿
forum:1953 の「dvipdfmx は使ってはいけないのか?」を調べている過程ででてきた
『CJK パッケージ付属物の \ruby が小書きにならない』(forum:1953#p11386)
については、本トピック forum:1748「rubyを使うとotfパッケージを使う文字がうまく変換されない」に
関連することでしたので、こちらに書きます。

> ruby.sty は CJK パッケージ(欧文に CJK を含めるためのもの)の付属物で,
> 内部で CJK.sty を読み込んでしまうために妙なことが起こるようです.
と前田さんが指摘してくださっていることをもう少し詳しく述べると:
「ルビが小書きにならない」の原因は CJK パッケージが \selectfont を再定義してしまうことです。

\selectfont が再定義されるというのは everysel.sty のときにも話題に上がりましたね (forum:1763) 。
otf パッケージや utf パッケージが化けるのも、フォントサイズが変わらない(=ruby が小書きにならない)
のも、すべて pLaTeX の「日本語対応 \selectfont」をなんらかのパッケージが上書きしてしまうこと
が原因だということですね。

ではこれが CJK.sty や otf.sty や pLaTeX のバグかというとそうではなく、単純に
「CJK.sty は pLaTeX と incompatible である」
というだけのことだと思います。

なので、pLaTeX や upLaTeX と CJK.sty が同時に読まれるようなコードは書いてはならない、と私は思います。
aminophen への返信

Re: rubyを使うとotfパッケージを使う文字がうまく変換されない

- aminophen の投稿
> 「ルビが小書きにならない」の原因は CJK パッケージが
> \selectfont を再定義してしまうことです。
このことがわかったうえで

\documentclass[a4j]{tarticle}
\usepackage{ruby} % including CJK.sty here!
\begin{document}
振り仮名のテスト。\ruby{振}{ふ}り\ruby{仮}{が}\ruby{名}{な}のテスト。
\end{document}

を処理すると、どう考えても上田さんが例示してくださった test01.pdf(forum:1953#p11385 の tests.zip 内)
のような「小書きのルビ」は付かないですね…なんで小書きになったのでしょう?
aminophen への返信

Re: rubyを使うとotfパッケージを使う文字がうまく変換されない

- 上田 完 の投稿
すみません。ようやく理由が判明しました。遥か昔、まだ ruby.sty の
無かった頃に、美文書に書いてあったのを見て自分で書いた ruby.sty が
texmf-local に残っていました。その中身は、

\def\ruby#1#2{%
  \leavevmode%
  \setbox0=\hbox{#1}\setbox1=\hbox{\tiny #2}%
  \ifdim\wd0>\wd1 \dimen0=\wd0 \else \dimen0=\wd1 \fi
  \hbox{\kanjiskip=\fill
  \vbox{\hbox to \dimen0{\tiny \hfil#2\hfil}%
  \nointerlineskip
  \hbox to \dimen0{\hfil#1\hfil}}}}

お騒がせしました……これを消したら、

This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex)
 restricted \write18 enabled.
entering extended mode
(./test01.tex
pLaTeX2e <2016/06/10>+1 (based on LaTeX2e <2016/03/31> patch level 1)
Babel <3.9r> and hyphenation patterns for 83 language(s) loaded.
(/usr/local/texlive/2016/texmf-dist/tex/platex/base/tarticle.cls
Document Class: tarticle 2006/06/27 v1.6 Standard pLaTeX class
(/usr/local/texlive/2016/texmf-dist/tex/platex/base/tsize10.clo)
(/usr/local/texlive/2016/texmf-dist/tex/platex/base/plext.sty))
(/usr/local/texlive/2016/texmf-dist/tex/latex/cjk/texinput/ruby.sty
(/usr/local/texlive/2016/texmf-dist/tex/latex/cjk/texinput/CJK.sty
(/usr/local/texlive/2016/texmf-dist/tex/latex/cjk/texinput/mule/MULEenc.sty)
(/usr/local/texlive/2016/texmf-dist/tex/latex/cjk/texinput/CJK.enc)))
(./test01.aux) 《縦組モード》

LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <3.99994> not available
(Font)              size <5> substituted on input line 8.

[1] (./test01.aux)

LaTeX Font Warning: Size substitutions with differences
(Font)              up to 1.00006pt have occurred.

 )
Output written on test01.dvi (1 page, 404 bytes).
Transcript written on test01.log.

と壮絶な warning が出て、小文字にならない PDF が生成されました。

# ただし、大本の「ずれる」のは、okumacro でも pxrubrica でも
# やはりずれるわけですが。
上田 完 への返信

Re: rubyを使うとotfパッケージを使う文字がうまく変換されない

- aminophen の投稿
> 遥か昔、まだ ruby.sty の無かった頃に、
> 美文書に書いてあったのを見て自分で書いた ruby.sty が
> texmf-local に残っていました。

なるほど! ありがとうございました。
大本の「ずれる」の件は forum:1953 に戻ることとしましょう。