マクロツイーター

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

pxrubrica パッケージで圏点できる話

この記事では、pxrubrica パッケージの新しいやつの、圏点機能について解説する。ただし網羅的な解説ではないので、必要に応じてマニュアル((コマンド「texdoc pxrubrica」を実行すると開かれる。))も参照してほしい。

とにかく圏点してみよう

文字列を \kenten という命令の引数にして実行すると、その文字列が圏点付きで出力される。既定では、圏点のマークは、横組は黒中点、縦組は黒ゴマ点になる。

{\TeX}\kenten{アレ}

ルビ用の命令が(\ruby とか \aruby とか)複数あるのに対して、圏点用の命令は \kenten だけである。((ただし、ルビ命令の \ruby に“衝突回避用”の別名 \jruby があるように、\kenten にも“衝突回避用”の別名 \jkenten が存在する。))

圏点のキホン

  • 圏点命令(\kenten)に s オプションを指定すると、標準の場合と逆に、横組で黒ゴマ点、縦組で黒中点が使われるようになる。

    {\TeX}\kenten[s]{アレ}

    後述のように、標準の場合(これは p オプションに相当)と s オプション指定時に用いられる圏点マークは、ユーザの指定により変更できる。

  • 圏点は和文を対象とするものなので、圏点命令の引数のテキストは、原則として和文文字のみを含むことが望ましい。実際には欧文文字も含めることもできるが、その場合も圏点付きの文字は“和文文字のように振舞う”ためマトモな出力にならない。

    発想が\kenten{クヌース的}である。 % OK
    
    発想が\kenten{Knuth的}である。    % アレ
    
  • 引数に japanese-otf パッケージの \CID 命令などの「命令により出力される文字」を含めたい場合は、ルビ命令と同様に、一文字と見なすべき範囲を { } で囲む。

    \kenten{{\CID{13706}}野家的な{\ajSnowman}}だ。
    
  • 通常は約物(句読点や括弧類)には圏点は付かない。一応、f オプション指定で約物にも圏点が付けられるが、圏点付きの文字は“約物として働かなくなる”ためマトモな出力にならない。

    \kenten{アレ(アレ)は、アレ(アレ)。}     % フツー
    
    \kenten[f]{アレ(アレ)は、アレ(アレ)。}  % アレ
    

イロイロ圏点してみる

先述の通り、圏点マークは主(p オプション)と副(s オプション)の 2 種類を切り替えることができるが、この両方について、実際に出力される圏点マークを設定できる。例えば、(横組の)主の圏点マークを二重丸(◎)にする場合は以下のようにする。

\kentenmarkinyoko{bullseye}% 横組の主の圏点マークを変える
{\TeX}\kenten{超絶アレ}

以下の命令で圏点マークを設定できる。

  • \kentenmarkinyoko{マーク}: 横組の主の圏点マークを設定する。
  • \kentensubmarkinyoko{マーク}: 横組の副の圏点マークを設定する。
  • \kentenmarkintate{マーク}: 縦組の主の圏点マークを設定する。
  • \kentensubmarkintate{マーク}: 縦組の副の圏点マークを設定する。

これらの命令の引数には、以下に示す通りの圏点マークの名前を書く。

  • これらの設定のうち、bullet*sesame* は特殊で、bullet* は中黒〈・〉、sesame* は読点〈、〉の字形を加工して当該の圏点を出力している。これらの設定はほとんど全ての日本語フォントで利用できる。パッケージの既定設定の“黒中点”と“黒ゴマ点”もこの bullet*sesame* のことである。
  • 残りの設定については、表に書かれた通りの Unicode 値の文字を出力する、という動作になる。従って、実際に用いられるフォントに当該の文字が含まれていないといけない。*1
  • ※を付けた設定は JIS X 0208 にない文字である。これらの設定を pLaTeX で利用するには japanese-otf パッケージを併用する必要がある。
もっと素敵な圏点を

圏点マークを名前で指定する代わりに、圏点マークの記述そのものを指定することもできる。これにより、創造性に満ちた多様な圏点を利用することが可能になる。スバラシイ(えっ)

% upLaTeX文書, UTF-8
\documentclass[uplatex,dvipdfmx,a4paper]{jsarticle}
\usepackage{pxrubrica}
\usepackage{bxcoloremoji}
\kentenmarkinyoko{}% 主マークはゆきだるま
\kentensubmarkinyoko{\coloremoji{🍣}}% 副マークはスシ絵文字
\begin{document}
それは\kenten{画期的}\kenten[s]{イデア}だ!
\end{document}

圏点を設定するやつ

ルビ関係と同様の設定用命令が用意されている。

  • \kentensetup{オプション}:オプションの既定値設定。
  • \kentenfontsetup{命令列}:圏点用のフォント切替命令を設定する。
  • \kentensizeratio{実数}:圏点サイズの親文字サイズに対する割合(既定 = 0.5)。
  • \kentenintergap{実数}:圏点と親文字の間の空き(親文字全角単位、既定 = 0)。

ルビ命令を圏点してみる

先述の通り、圏点命令の引数の中での LaTeX 命令の使用には制限があるのだが、pxrubrica のルビ命令は例外的にそのまま書くことができる。*2既定では、この場合、ルビと圏点の両方が出力される。*3

{\TeX}\kenten{\ruby[j|]{超絶}{ちょう|ぜつ}アレ}

ただし、\kentenrubycombination{ruby} という命令を実行することで、ルビだけ出力する設定に変更できる。

\kentenrubycombination{ruby}
{\TeX}\kenten{\ruby[j|]{超絶}{ちょう|ぜつ}アレ}

ルビ命令を圏点する注意

  • 「圏点を付ける領域」の境界でのルビの進入は、技術的制約のため実現できないので、無効になる。

    % 前進入'<'は効かない
    {\TeX}\kenten{\ruby[<j|]{超絶}{ちょう|ぜつ}アレ}
  • ルビ命令の前後の禁則処理は、元々「失敗する場合もある」という扱いであったが、圏点命令の中では「失敗する可能性がこの上なく高い」ので、手動で補助設定を入れておく方が安全である。

    % 後補助設定'*'で分割禁止にする
    {\TeX}言語、\kenten{ダメ、\ruby[<j*>]{絶対}{ぜっ|たい}}
    

*1:さらに、その字形が“正しい”字幅(標準和文フォントの場合は全角幅)を持っていないと正常に出力されない。

*2:この逆は不可。すなわち、ルビ命令の引数の中に圏点命令をそのまま書くことはできない。

*3:次にある例で、「隣接する圏点付き文字の上までルビを進入させるのは不適切なので、後側を進入禁止にしている」ことに注意。