TeX Alchemist Online

TeX のこと,フォントのこと,Mac のこと

upLaTeX文書の句読点を置き換える

upLaTeXでの文書作成時,ソースへのテンマル[、。]での入力をカンマピリオド[,.] での出力に置換しようと頑張っておられる記事がありました。

qiita.com

しかし,U+3001 や U+3002 が含まれるUnicodeブロックをまるごと欧文扱い(kcatcode=15)にするというのでは副作用が大きく,安全に置き換えることはできません。

そこで,とりあえず「自分のローカル環境で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が優先してそちらを読んでくれるので,[、。]の入力に対して[,.]のグリフを埋め込むようになる,という次第です。

サンプル

www.overleaf.com