New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bibtexuの日本語(CJK)対応 #139
Comments
tex-jp-buildにbibtex-xのソース を追加しました。 |
bibtex の ICU 活用は,たしかに魅力的です。ありがとうございます。今思ったことをメモしておきます。
|
コメントありがとうございます。 |
今回のコミットのテストファイルは大量なので TeX Live svn へは jalpha.bst のテストだけコミットする予定。
いろいろ試しています。今考えている方針について、備忘録を兼ねて書いておきます。 [1] upbibtex, U+00DF ß LATIN SMALL LETTER SHARP S, 0xC3 0x9F in UTF-8 pbibtex は対応しない。 [2] upbibtex, [3] bibtex[8u], ビット和とビット積 [4] bibtexu, CJKの間でニュートラルな、日本語偏重ではない仕様となり、幅広く応用可能であり、名案だと自画自賛。 [5] bibtexu, [6] bibtexu の行分割 同様の問題は bibtexu でも発生するので対策を試している。 Hangul Syllables の場合が適切なのか不安。 [7] bibtexu で jbibtex のテスト [8] j*.bst の文字コード [9] upbibtex [10] その他 [11] (追記) max_print_line |
これまで bibtex[8u] に入れて試していた更新を TeX Live svn にコミットしました(r63173)。 #139 (comment) の中で残件は [1], [2], [8], [9] |
日本人の姓と名の順番について↓の記事を見ました。 jbibtex に付属していた jplain.bst は *.bib で "姓 名" の順番に書き *.bst では |
これまで upbibtex に入れて試していた更新を TeX Live svn にコミットしました(r63246)。
#139 (comment) の中で残件は [8], [9] と pbibtex-manual の [10] |
…#139) 多バイト文字の文字コードの整数値は pbibtexでは JIS すなわち ( Ku + 0x20 ) << 8 + ( Ten + 0x20 ) pbibtexでは Unicodeスカラー値 (UTF32)
#139 (comment) の中の[9]は、00d50b2 を予定。→ r63305コミット 多バイト文字の文字コードの整数値は |
追いつけていませんが,色々と検討ありがとうございます。
これについては,従来の jbibtex.pdf(松井さんのもの)に
と書かれているのですが,pbibtex では変更する,という理解でよいでしょうか。 |
はい。pbibtex Ver0.35 (TeX Live 2023)以降では、今回の試作の通りの仕様に変更したいと考えています。理由は以下の通りです。 |
なるほど,確かにそうですね。了解です。 |
(u)pbibtex に施した拡張の分のマニュアルへの記載の追加とテストの追加を行いました。 bibtexu の日本語対応をpbibtex-baseに入っている j*.bst, jxampl.bib, jbtxdoc.bibでテストした結果、 唯一はっきり違う点は次の通りです。
#139 (comment) の中で残件は [8] あとは宣伝です。ここは閉じようと思います。 |
bibtexuの日本語(CJK)対応の一連の改良や拡張が一段落したので、日本語化に関わる(u)pbibtex, bibtexuの組み込み関数の状況の表をまとめ直しました。
※CP: codepointを略した。サロゲートペアは1CP。合成文字やIVSなどは複数のCPで1文字になる。 upbibtexは、[1] ソートはバイト順というところに制限がある。ソート順の多言語化をちゃんとやろうとするとICUを使わざるを得なくなる。今回のbibtexu の日本語対応は将来そちらに進むことができるようにするのが狙いの一つ。 upbibtexは、[2] 大文字小文字変換はASCIIのみという制限があったが、Latin-1, Latin Extended-A, Greek and Coptic, Cyrillic, Cyrillic Supplementブロックの文字も変換対象とするように今回(u1.29)拡張した。 bibtexu(v4.00まで)に施した改良、拡張は以下。
[3] [4] 以上の改良や拡張の結果、bibtexu (v4.00) は (u)pbibtex とほぼ互換で日本語対応できている。
何かお気づきの点があればお知らせください。 |
bibtexuを日本語(あるいはCJK)対応にしたいと思い検討を始めました。ご意見あればお願いします。
少々長くなります。まずは状況のまとめから。
日本語化に関わる(u)pbibtex, bibtexuの組み込み関数の状況を簡単に表にまとめました。
SORT
change.case$
width$
substring$
text.length$
text.prefix$
add.period$
chr.to.int$
int.to.chr$
num.names$
format.name$
is.kanji.str$
is.cjk.str$
※CP: codepointを略した。サロゲートペアは1CP。合成文字やIVSなどは複数のCPで1文字になる。
upbibtexは、[1] ソートはバイト順、[2] 大文字小文字変換はASCIIのみというところに制限がある。大文字小文字変換はもう少し拡張の余地があると思っているが、ソート順の多言語化をちゃんとやろうとするとICUを使わざるを得なくなる。それならbibtexuに日本語機能を入れた方が早かろう、というのが今回の開発の動機。ついでに、多バイト対応の部分でトラブル続きのupbibtexの弱点もカバーできることを期待。
(u)pbibtexはそのもとのjbibtexの頃から文字列処理の関数(
substring$
,text.prefix$
など)の処理がバイト単位であり、多バイト対応する方針で作られている。bibtexuは、それらがコードポイント(CP)単位で動くことを目指している模様。
しかしbibtexuを調べてみるとちゃんと動いていなかった。例えば
substring$
にBMP超えの文字を入れると文字列が壊れた。substring$
,chr.to.int$
,int.to.chr$
はまともに動くように改良して v3.80 としてコミットした。add.period$ は、(u)pbibtex と同様に、「‼⁇⁈⁉‽!?」の後ではピリオドを追加しないようにbibtexu v3.80 に入れた。
width$ は upbibtex ではまともと言えないまま今まで対応してこなかった。bibtex[8u]でも今までASCIIの範囲した対応していなかった。今回、Latin-1, Latin Extended A, CJKの文字でまともになるようにしてbibtexu v3.80 に入れた。
bibtexu の日本語対応はもう先が見えるところまで来ていると考えている。
upbibtexと比較して、日本語処理のために bibtexu で不足している残件は[3]
num.names$
,format.name$
の日本語氏名対応、[4]is.kanji.str$
の日本語(CJK)文字列の検出の2つ。[3]は{j,(u)p}bibtexの仕様をそのままbibtexuに入れたいと考えている。→ v4.00で入れた。
[4]は、bibtexuに持ち込む際、"kanji"という日本語に依存した名前でなく
is.cjk.str$
に名前を変えて入れたい。そして、(u)pbibtex に
is.cjk.str$
をis.kanji.str$
のエイリアスとして入れて、スタイルファイル .bst のis.kanji.str$
is.cjk.str$
に変更していけば upbibtex と bibtexu での共用が可能になる。→ bibtexu(v4.00) にis.kanji.str$
is.cjk.str$
を入れた。upbibtex は変更なし。今後のことを考えるとここ(tex-jp-build)にbibtex-xのソースも入れて管理したい。
The text was updated successfully, but these errors were encountered: