「X線」と「α線」のpLaTeXとupLaTeXでの取扱い

「X線」と「α線」のpLaTeXとupLaTeXでの取扱い

- 入佐 正幸 の投稿
返信数: 5
utf-8を入力とするpLaTeXやupLaTeXの場合、
「X線」は「X」が欧米文字「線」が日本語として取り扱われ、PDF file
出力時には、欧米文字と日本語の境界である「X」と「線」の境界に
空白が入る(PDF閲覧時にこの空白が認識できる)。
しかし「α線」は「α」が強制的に日本語として扱われるため「α」と「線」の
間には空白が入らない。
Adobe Acrobat pro X(Ver. 10.1.16) では、「X」と「線」の間に空白があって
も「X線」で語句検索するとヒットする。また、コピーペーストではこの
空白は無視される。しかし、SumatraPDF(Ver. 3.1.1)では間に入った空白の
ため「X線」ではヒットしない。コピー&ペーストでは間の空白が文字と
して入ってしまう。「α線」の語句検索は問題なくヒットする。

なんとなく「X線」やいくつかの語句がPDF内の語句検索でヒットしなく
なったと思っていたのですが、このような理由だったのですね。
試していませんが、Shift-JIS により「X線」を全角文字で記述した場合は
上記空白は入らないのだと推測します。
このような状況は LaTeX に限らない utf-8 の文化での問題なのでしょうか?



入佐 正幸 への返信

Re: 「X線」と「α線」のpLaTeXとupLaTeXでの取扱い

- 入佐 正幸 の投稿
Xを全角(X)を使いX線と書くべきところを、半角Xを使いX線としていた
だけでした。X線は全角で書けと教育を受けていたにも関わらず、いつのま
にか全角Xを半角Xにしていたようです。

α線の方は、全角αについては既に書いた通りなのですが、upLaTeXで日本語
優先用として次のようにプリアンブルを指定した場合、

\documentclass[a4paper,uplatex]{jsarticle}
\usepackage[prefernoncjk]{pxcjkcat}
\cjkcategory{sym18,sym09,grek}{cjk}
\usepackage[LGR,T2A,T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[greek,russian,english]{babel}
\usepackage{lmodern}
\usepackage{textalpha}

これでα線が普通に表示されます。文章中で
\kcatcode945=15 または \kcatcode`α=15 とし一部分を
ギリシャ文字を欧米文字扱いにしたい場合、
\foreignlanguage{greek} や \fontencoding{LGR}\selectfont を
使うべきなのでしょうが、簡単に半角αを出す方法がないか
探しました。package textalpha を使えば、
α ray
と書いても自動的にLGRに変更され表示できました。

また、一度\kcatcode945=15を行った後、元に戻したい場合、
\kcatcode`α=18 は理由はわからないのですが、
! Missing number, treated as zero.
<to be read again>
\protect
l.40 \kcatcode`α
とエラーになるため、\kcatcode945=18 とすればαがCJK扱いに戻ると
解りました。

また、PDFfile内の1文字検索ではsumatraPDFの場合、半角および
全角のαでは、数式として書いたαでも全てのαにヒットしますが、
数式のα1文字で検索すると全角αにだけはヒットしませんでした。
Adobe Acrobat Pro X の場合、半角α1文字検索では、半角αだけでなく
アルファベットのaを含む文字列全体にヒットし、全角αにはヒットし
ませんでした。


入佐 正幸 への返信

Re: 「X線」と「α線」のpLaTeXとupLaTeXでの取扱い

- t tk の投稿
非常に答えにくい質問です。
内情が実際にややこしい点、ソフトの設定や仕様に依存する部分が大きい点、質問の焦点が今一つ曖昧な点が絡まっていると思います。
以下、不正確な点があるかもしれませんが、回答を試みてみます。

(1) 文字コードに関して

upLaTeXで組版し、dvipdfmxなどのdviwareでフォントを埋め込んだpdfを作成した場合、各文字がpdfでどのような文字コードで埋め込まれるかはdviwareの設定に依存します。

和文フォントとしてAdobe-Japanのフォントを設定した場合は、大抵は、おそらく以下のようになります。
  • 半角(欧文)の"X" (U+0058, ASCIIの0x58)は、T1の0x58またはT2Aの0x58として埋め込まれる。
  • 全角(CJK)の"X" (U+FF38)は、Adobe-Japanの813として埋め込まれる。
  • 半角(欧文扱い)の"α" (U+03B1)は、LGRの0x61として埋め込まれる。
  • 全角(CJK扱い)の"α" (U+03B1)は、Adobe-Japanの1035として埋め込まれる。

和文フォントとして非Adobe-JapanのUnicodeのフォントを設定した場合は、大抵は、おそらく以下のようになります。
  • 半角(欧文)の"X" (U+0058, ASCIIの0x58)は、T1の0x58またはT2Aの0x58として埋め込まれる。
  • 全角(CJK)の"X" (U+FF38)は、UnicodeのU+FF38として埋め込まれる。
  • 半角(欧文扱い)の"α" (U+03B1)は、LGRの0x61として埋め込まれる。
  • 全角(CJK扱い)の"α" (U+03B1)は、UnicodeのU+03B1として埋め込まれる。

文字コードのエンコーディングとコード値がばらばらであるため、
検索時に期待するようにヒットするかどうかは、pdf閲覧ソフトに依存します。

全角の"X" (U+FF38)と半角の"X" (U+0058)の場合は、同一視するかしないかについて、Unicode上の規定がいろいろあります。詳しくは「互換文字」「正規化」「東アジアの文字幅」などをキーワードとして調べてください。
pdf閲覧ソフト上でどうなるかはpdf閲覧ソフトの仕様に依存しますが、多くの場合、同一視する仕様か、同一視を可能とする設定を持っているためヒットさせることが出来ます。

LGRの"α"は、通常、dviwareの設定上、埋め込み時にUnicodeのU+03B1に変換するような指定になっていないため、pdf閲覧ソフトで検索をヒットさせることは困難と思われます。
逆に、埋め込み時にUnicodeのU+03B1に変換するような設定になっている場合には、難なくヒットすると思われます。(エンコーディングがUnicodeになっていて文字集合がLGRでvirtual fontの機構で文字コードを読み替えるようなフォントを指定。)
ちなみにTeXのエンコーディングの解説のpdfでは、LGRの"α"が検索でヒットします。

(2) 和文(CJK)文字と欧文文字の隙間に関して

(u)pTeXでは、和文(CJK)文字と欧文文字の間に\xkanjiskip というグルーが入ります。このため、pdfのデータとしては、フォント切り替えに加え和文(CJK)文字と欧文文字の間に位置移動のコマンドが入ります。
検索時にこの隙間を「区切り有り」と認識するか「区切り無し」と認識するかは、pdf閲覧ソフトの仕様に依存していると思われます。

t tk への返信

Re: 「X線」と「α線」のpLaTeXとupLaTeXでの取扱い

- t tk の投稿
TeX Wikiの記事「dvipdfmx/フォントの設定」によると、
エンコーディングが Unicode ではない PostScript Type1 フォントに対して、ファイル "glyphlist.txt" を通じてPostScript グリフ名と Unicode 値を対応付ける方法があるそうです。
おそらく、この方法を用いればLGRの"α"に対しても pdf で検索可能なフォント埋め込みが出来ると思います。

t tk への返信

Re: 「X線」と「α線」のpLaTeXとupLaTeXでの取扱い

- 入佐 正幸 の投稿
助言ありがとうございます。

(2) 和文(CJK)文字と欧文文字の隙間に関して
おっしゃる通りと理解しました。また、SumatraPDF の場合(Lyxと組み合わ
せて使っています)は、半角(欧文)の"X" 全角(CJK扱い)の"線"と書くと、トラ
ブルの元だと思いました。全角(CJK扱い)の"X線"でヒットしない。

(1) 文字コードに関して
こちらの環境が特殊なのかもしれませんが、
"TeXのエンコーディングの解説のpdf""の pdf file では"α"が検索でヒットしま
せんでした。
全角(CJK扱い)の"α"で検索すると「一致するものがありませんでした」と表
されます。また、半角(欧文)の"α"で検索する場合、検索ボックスへの
コピーペーストでアルファベットのaになってしまう場合と(uplatex でGreek)、
全角のαと同じ結果になる場合(Web 上の上記ファイルのαをコピーペースト)の
2通りありました。
Adobe Acrobat X Pro 10.1.16, Adobe Acrobat DC 2017012.20098 のどちら
同じ結果でした。
ただし、Google Chrome 61.0.3163.100 内でネット上のこの PDF file を表示
せた場合は、α(全角で「あるふぁ」をかな漢変換しαと入力)で29個
ヒットした。また、一度ダウンロードしたこのファイルを Google
Chrome で開いた場合も同じようにヒットしました


入佐 正幸 への返信

Re: 「X線」と「α線」のpLaTeXとupLaTeXでの取扱い

- 入佐 正幸 の投稿
つい今、使っている Google Chrome が 62.0.3202.62 にアップデートされま
した。その結果、ネット上の "TeXのエンコーディングの解説のpdf" を表示
せた場合は、α(全角で「あるふぁ」をかな漢変換しαと入力)で1個
ヒットした。また、一度ダウンロードしたこのファイルを Google
Chrome で開いた場合も同じようにヒットしました
Web page 表示時に「Adobe Acrobat で開く」を含むメニューが表示されます
が、それは選ばず他の Web page と同じように Chrome の検索ボックスを利用
しています。