マクロツイーター

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

bxcjkjatype の autotilde はソレじゃない件(2)

前回の続き)
「和欧文間空白なんて要らない」場合は

さて、ここまで「和欧文間空白を入れる」という前提で話を進めてきた。確かに TeX の用途の大部分を占めるであろう“報文のレイアウト”では和欧文間空白の挿入は必須といえるだろう。しかし例えば雑誌や広告等で“和文プロポーショナルフォントで組まれる”場合には、「和欧文間空白を入れない」という判断もあるようである。((TeX ユーザとしては、「〈~〉を書くのが面倒だから和欧文間空白を入れない」という判断はもちろんありえない ;-) ))ただし“和文をプロポーショナル組する”ためのフォント*1や文書クラスは現状で TeX Live にも CTAN にも無い((bxcjkjatype パッケージには「使用する物理フォントを指定する」機能(\setminchofont 等)があるが、ここで使える日本語フォントは等幅のものに限られる。))ので自分で用意しなければならないが、とにかく必要な準備の上で「和欧文間空白無し」の設定で文書を作成することを考える。

% pdfLaTeX 文書
\documentclass[a4paper]{ja-magazine}% 適当な文書クラス(非実在)
\usepackage[whole,noCJKpunct]{bxcjkjatype}
% プロポーショナルな和文フォント(非実在)を指定
\renewcommand{\mcdefault}{propmin}
\renewcommand{\gtdefault}{propgoth}
\begin{document}
{pdf\LaTeX}とbxcjkjatypeで日本語する。
\end{document}

(プロポーショナル組を行う場合は CJKpunct は使わない方がよいと思われる。bxcjkjatype を使用する場合は noCJKpunct オプションを指定する。)

「和欧文間空白を入れない」のなら \CJKtilde も〈~〉も不要だと思うかも知れないが、話はそれほど単純ではない。実は、CJK パッケージでは和文と欧文の間には原則的に*2空白が入っていることを想定している。そのため、ソース上で和欧文間に何も入れないと、そこでの行分割は許可されない。このことは次のような例を作れば確かめられる。

% pdfLaTeX 文書
\documentclass[a4paper]{article}
\usepackage[whole]{bxcjkjatype}
\begin{document}
\fbox{\parbox{10em}{%
ああああああああああ% 和文文字間では行分割可能
あAあAあAあAあAあAあA% 和欧文間では行分割不可なので
あAあAあAあAあAあAあA% 行長を超過してしまう
ああああああああああ}}
\end{document}

もちろんこれは極端な例であり、現実の使用においては「和欧文間で行分割できない」ことの影響はそれほど大きくないと思われるので、特に対策をしないことも考えられるだろう。もし「和欧文間で行分割可能にしたい」というのであれば、「和欧文間空白を挿入して、かつその幅をゼロにする」という処置が必要になる。

% pdfLaTeX 文書
\documentclass[a4paper]{ja-magazine}
\usepackage[whole,autotilde,noCJKpunct]{bxcjkjatype}
\renewcommand{\mcdefault}{propmin}
\renewcommand{\gtdefault}{propgoth}
% 和欧文間空白の幅をゼロにする
\renewcommand*{\CJKecglue}{\hspace{0pt}}
\begin{document}
% 和欧文間に〈~〉を入れる
{pdf\LaTeX}~と~bxcjkjatype~で日本語する。
\end{document}

*1:TeX 上の“論理フォント”(TFM)のこと。CJK パッケージ使用の場合は“Unicode サブフォント”が必要になる。

*2:もちろん約物が関わる場合は例外となる。