引数の最後が約物、その後に約物が続くときの、スペースの入り方

引数の最後が約物、その後に約物が続くときの、スペースの入り方

- O Kay の投稿
返信数: 9
以下の例で、最後だけスペースの入り方が変わってしまいますが、変わらないようにする方法はありますか。

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

\begin{document}

彼は「よし」

\textgt{彼は}「よし」

やって来た。いつ

\textgt{やって来た。}いつ

ということです。「そうか」

\textgt{ということです。}「そうか」

\end{document}
O Kay への返信

Re: 引数の最後が約物、その後に約物が続くときの、スペースの入り方

- O Kay の投稿
いろいろ思いつくのを試し、一応、自己解決しました。

\textgt{ということです。\mbox{}}「そうか」
だと、全角アキのままでした。

\textgt{ということです。\inhibitglue}「そうか」
だと、逆にツメ組になりました。

\textgt{ということです。\inhibitglue\mbox{}}「そうか」
なら、うまく二分アキになってくれました。

他におすすめの方法はありませんか?
O Kay への返信

Re: 引数の最後が約物、その後に約物が続くときの、スペースの入り方

- 奥村 晴彦 の投稿
uplatex でなく lualatex にする,とか。
奥村 晴彦 への返信

Re: 引数の最後が約物、その後に約物が続くときの、スペースの入り方

- O Kay の投稿
お返事ありがとうございます。

lualatex ですか。将来的には移行するかもしれませんが、今はまだ気が進まないです。使用しているパッケージが lualatex に対応していないのもあるので。
O Kay への返信

Re: 引数の最後が約物、その後に約物が続くときの、スペースの入り方

- 本田 知亮 の投稿
これ,\lastnodecharとか\lastnodetypeの絡みで
話題になってました

https://ja.osdn.net/projects/eptex/wiki/lastnodechar


``。''と``「''の間に
グループの終端があってそれが障壁となって
jfmの調整がブロックされるという仕組み.
luatexはこのあたりの挙動が違うから問題が起こらない
という流れだと思います.

# f{}f でリガチャがなくなるか,リガチャのままか
#にも通じるものがあるかなと

上のリンクでもちょろっと触れられているように,
\futureletで処理するしかないと思いますが,
いろいろ網羅しようとすると煩雑そうです.
単純なものなら以下のような感じになります.

\documentclass{jsarticle}

\begin{document}

\makeatletter
\def\inhibitglue@or@empty{\ifx\@next「\relax \inhibitglue\fi}
\def\TEXTGT#1{\textgt{#1}\futurelet\@next\inhibitglue@or@empty}
\makeatother


\TEXTGT{ああああああ。}「あああああああ

ああああああ。「あああああああ


\TEXTGT{ああああああ}AAAAAAA

ああああああAAAAAAA
\end{document}



ところで,
どなたか(中国の方だったような・・・),
このあたりのjfmの微妙なことを詳細に検討して,
手を入れるパッケージを
公開されてたような気がするのですが,
どうでしたでしょうか.
本田 知亮 への返信

Re: 引数の最後が約物、その後に約物が続くときの、スペースの入り方

- Yamamoto Munehiro "munepi" の投稿
> # f{}f でリガチャがなくなるか,リガチャのままか
> # にも通じるものがあるかなと

(u)platexの場合、今回の例では、

{ということです。}「そうか」

ということです。\label{page:kutoten}「そうか」

ということです。\index{句読点と開きカギカッコの狭間}「そうか」

でも、同様ですね。

# 場当たり的に、今回の(u)platexにかぎるなら、
# \futureletを使って、直前の句読点(、。,.)と直後の開き括弧類を見て、
# \inhibitglueする意味づけなマクロを作るぐらいになりそうです。


> ところで,
> どなたか(中国の方だったような・・・),
> このあたりのjfmの微妙なことを詳細に検討して,
> 手を入れるパッケージを
> 公開されてたような気がするのですが,
> どうでしたでしょうか.

fixjfm – Fix JFM (for *pTEX)
https://www.ctan.org/pkg/fixjfm

ですね。

Yamamoto Munehiro "munepi" への返信

Re: 引数の最後が約物、その後に約物が続くときの、スペースの入り方

- 本田 知亮 の投稿
># \inhibitglueする意味づけなマクロを作るぐらいになりそうです。

そうですよね.
直前は\lastnodechar関係で拾って,
直後は\futureletで拾って,
その組み合わせが事前に設定しておいたものに合致すれば
\inhibitglueを発行するという感じでしょうか.
合致のチェックにいろいろ方法がありそうですね.


>fixjfm – Fix JFM (for *pTEX)
>https://www.ctan.org/pkg/fixjfm

これです,これ.
どうしても思い出せなかったので,
すっきりしました.

ありがとうございます.
本田 知亮 への返信

Re: 引数の最後が約物、その後に約物が続くときの、スペースの入り方

- O Kay の投稿
お返事ありがとうございます。

単純な話かなと思っていたのですが、意外と複雑でしたね。

以前、どこかでこういう話題があったような気がしたけど思い出せずにいましたが、TeX & LaTeX Advent Calendar 2014 にあったのですね。記憶がよみがえりました。

とはいえ、マクロは不得手だし、こういう場面は私には少ないので、\inhibitglue\mbox{} でしのぎたいと思います。

LuaLaTeX も試してみました。私が普段使うパッケージが pLaTeX 専用なので、スタイルファイルの zw を \zw に置き換え、\NeedsTeXFormat{pLaTeX2e} を削除して試しましたが、パッケージが別のパッケージを呼び出し、よくわからないエラーになったので、断念しました。また、スピードもあまりにも遅く、忍耐力を試されます。やはり、昔から使い慣れている (u)pLaTeX がいいですね。
O Kay への返信

Re: 引数の最後が約物、その後に約物が続くときの、スペースの入り方

- 阿部 紀行 の投稿
上で紹介されているfixjfmパッケージを使えば次のようにはできるようです.詳しくはtexdoc fixjfmしてください.

\documentclass[uplatex]{jlreq}
\usepackage{fixjfm}
\UseFixJFMCJKTextFontCommands
\begin{document}

彼は「よし」

\textgt{彼は}「よし」

やって来た。いつ

\textgt{やって来た。}いつ

ということです。「そうか」

\textgt{ということです。}「そうか」

\end{document}
阿部 紀行 への返信

Re: 引数の最後が約物、その後に約物が続くときの、スペースの入り方

- O Kay の投稿
ご教示ありがとうございます。そういえば、前の投稿で、もう1つリンクがありましたね。見落としていました。

使い方を拝見しました。\textgt{} のようにするなら、プリアンブルに \UseFixJFMCJKTextFontCommands をつけ、{\gtfamily } のようにするなら、プリアンブルにそれは不要で、{\gtfamily\fixjfmspacing } のようにすればよさそうですね。


\documentclass[uplatex]{jlreq}
\usepackage{fixjfm}
\UseFixJFMCJKTextFontCommands
\begin{document}
先生は、「物事を知る者は、それを好む者には及ばない。」とおっしゃった。

先生は、\textgt{「物事を知る者は、それを好む者には及ばない。」}とおっしゃった。
\end{document}


\documentclass[uplatex]{jlreq}
\usepackage{fixjfm}
\begin{document}
先生は、「物事を好む者は、それを楽しむ者には及ばない。」とおっしゃった。

先生は、{\gtfamily\fixjfmspacing「物事を好む者は、それを楽しむ者には及ばない。」}とおっしゃった。
\end{document}