「?」や「!」のあとのアキ

「?」や「!」のあとのアキ

- O Kay の投稿
返信数: 2
普段、jsarticle に otf パッケージを読み込んで利用しております。最近、少しずつ jlreq に移行しようと、試行中です。

さて、jsarticle+otf の場合、「?」や「!」のあとは、自動的に半角スペース(縦書きなら全角スペース)が入ります。

しかし、jlreq の場合は入りません。jlreq-deluxe を読み込んでも関係なさそうです。自動的に入るようにするには、どうするのが適切でしょうか。


%\documentclass[uplatex,dvipdfmx]{jsarticle}
\documentclass[uplatex,dvipdfmx]{jlreq}

%\usepackage{otf}
%\usepackage{jlreq-deluxe}


\begin{document}
うそ?ほんとだよ。
\end{document}
O Kay への返信

Re: 「?」や「!」のあとのアキ

- 阿部 紀行 の投稿
* uplatexを利用されている場合には,JFMをご自身で作るしかないかと思います.?の後にグルーを挿入するようなJFMは提供されていません.これは基礎としている「日本語組版処理の要件」に,?の後のグルーは和字間隔を用いてあけると書かれているからです.このため,

うそ?\ ほんとだよ。

とするのが想定の入力です.

* undocumentedですが「\!」や「\?」という命令が定義されています.これは直後の和字間隔の挿入を行う命令です.なので,文書内の

うそ\?ほんとだよ。

とすると和字間隔が入ります(直後に閉じ括弧が続く場合を除く).undocumentedなので,何も言うことなく命令が消えるかもしれない危険性を理解して使ってください.

* lualatexならば,和文文字をアクティブにできますので,「?」をアクティブにすれば所望のことができます.具体的には

\documentclass[lualatex]{jlreq}
\makeatletter
\let\@tempa=\?
\catcode`?=\active
\let?=\@tempa
\makeatother
\begin{document}
うそ?ほんとうだよ.
\end{document}

とすれば?の後に和字間隔が自動挿入されます.
阿部 紀行 への返信

Re: 「?」や「!」のあとのアキ

- O Kay の投稿
クラスファイル作成者様直々にお返事ありがとうございます。

質問をしたのは、たとえば《。》や《」》が半角字幅と二分アキで、もし行末に来るときなどは二分アキがなくなるのと同様、
(文末の)《?》は全角字幅と“多少の”アキで、同様に行末ではそれがなくなるべきと思ったからです。

さて、「日本語組版処理の要件」は過去にサッと目を通したことはありましたが、改めて拝見しました。
https://www.w3.org/TR/jlreq/

確かに「区切り約物(cl-04)の後ろの全角アキは,通常,全角の和字間隔(cl-14)を用いて空けている.」と書いてありました。
(それにしても、上で“多少の”と書いたのは、横書きが二分アキ、縦書きが全角アキのつもりでしたが、
そのようには書いてなかったですね。縦でも横でもどちらでも全角アキにすべきだったようです。
otf パッケージを使ううちにそう思い込むようになったのだろうか……。)

それに従うと、全角スペースで空けることになるわけですが、
《? 》だと《?》が行末に来ると《 》が行頭に来て見栄えがよくないと考えておりました。

ご教示の《?\ 》(あるいは《\?》)なら、全角アキが入り、しかも、《?》が行末に来ても《 》が吸収されるのでよさそうですね。

私は LuaLaTeX は使っていないので、《?\ 》(あるいは《\?》)で行きたいと思います。
ご回答ありがとうございました。

------------

以下、独り言。

それにしても、長年 otf パッケージを使ってきたから、横書きは二分アキ、縦書きは全角アキのほうが美しく見えるなー。
日本語組版処理の要件を尊重すべきか。それとも、それは1つの目安と考えて、要件からは外れるけど、

\renewcommand{\?}{\iftdir?\hspace{1zw plus 0zw minus .5zw}\else?\hspace{.5zw plus 0zw minus .5zw}\fi}

とでもしようかな?(本格的には仮想フォントに手をつけるのでしょうが、それは手に負えない)