upLaTeXでの文書作成時,ソースへのテンマル[、。]での入力をカンマピリオド[,.] での出力に置換しようと頑張っておられる記事がありました。
しかし,U+3001 や U+3002 が含まれるUnicodeブロックをまるごと欧文扱い(kcatcode=15)にするというのでは副作用が大きく,安全に置き換えることはできません。
面白いんだけど、ただこの
— 某ZR(ざんねん🙃) (@zr_tex8r) 2022年9月7日
「"3000や"FF00のブロックを欧文扱いにする」
というギミックについては
「根本的に危険であって、完璧にする(完全に副作用をなくす)ことはまず無理」
ということを、使う人が確実に把握しておくべきだとも思う🙂#TeX #TeX言語
そこで,とりあえず「自分のローカル環境でupLaTeX文書について句読点を置換できればそれでよい」ということであれば,文書と同フォルダにオレオレCMapを置いて代用するという雑な方法で対処するという手はいかがでしょうか。
方法
ターゲットとなるupLaTeX文書のTeXソースと同フォルダ内で,次のシェルスクリプトを実行します。
#!/bin/bash function replaceCMap () { ORIGINAL=$(kpsewhich -progname=dvipdfmx -format=cmap $1) sed -e 's/<3000> <3002> 633/<3000> <3000> 633/' -e 's/endcmap/1 begincidrange\n<3001> <3002> 636\nendcidrange\nendcmap/' ${ORIGINAL} > $1 } # upLaTeXで使いそうなCMapファイルのオレオレ版を生成 replaceCMap UniJIS-UTF16-H replaceCMap UniJIS2004-UTF16-H replaceCMap UniJISup-UTF16-H replaceCMap UniJIS2004up-UTF16-H
こうして生成されたオレオレCMapファイルが同フォルダに存在すれば,dvipdfmxが優先してそちらを読んでくれるので,[、。]の入力に対して[,.]のグリフを埋め込むようになる,という次第です。