マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

メモ:xeCJKの空白関連のパラメタ

xeCJKパッケージの動作設定命令(\xeCJKsetup)のオプションキーのうち、「空白の設定」に関するものについて、チョット調べてみた。

※ただし「句読点スタイル()」に関するもの(PunctStyleなど)は除く。

※XeTeXでは(元祖TeXと同様に)空行にならない改行は常に空白文字と同等に扱われる。(u)pTeXのような「改行を特殊に扱う規則」を実装することは不可能である1

マニュアルの記述

f:id:zrbabbler:20200517035124p:plain

……チョット日本人には解りにくいね。

日本語でおk

  • CJKspace[真偽値;省略時=true2;既定値=false]

    • false: CJK文字同士の間の空白文字を無視する。
    • true: CJK文字同士の間の空白文字は欧文空白になる。
  • CJKglue[テキスト;既定値={\hskip 0pt plus 0.08\baselineskip}] CJK文字間に挿入する空きを生成する命令を指定する。両端寄せを行うため、このオプションを設定する場合は伸縮する空きを設定すべきである。

  • CJKecglue[テキスト;既定値={ }(欧文空白)] CJK文字と欧文、およびCJK文字と数式の間の空きを生成する命令を指定する。このオプションを設定する場合は伸縮する空きを設定すべきである。注意すべき点として、この設定はxeCJKが自動的に挿入する空きにのみ影響し、CJK文字と欧文の間に明示的に入れた空白文字の出力には影響しない。空きの自動挿入はうまく機能しない場合があり、そのときは手動で空白文字を入れる必要がある。

  • xCJKecglue[真偽値またはテキスト;省略時=true;既定値=false]

    • false: CJK文字と欧文の間に明示的に入れた空白文字をそのまま欧文空白といて出力する。
    • true: CJK文字と欧文の間に明示的に入れた空白文字について、その箇所が「CJKecglueの空白」が入るべきである場合に、欧文空白でなく「CJKecglueの空白」として出力する。
    • テキスト: xCJKecglue=trueCJKecglue=テキストを設定するのと等価になる。

  1. LuaTeXでは(近似的であるが)「改行を特殊に扱う規則」が実装可能であり、実際にLuaTeX-jaは(u)pTeXと同様の規則を採用している。

  2. つまり\xeCJKsetup{CJKspace}\xeCJKsetup{CJKspace=true}と等価になるということ。一度も\xeCJKsetupCJKspaceを設定しなかった場合はCJKspaceはfalseと見なされる(これが「既定値」)。