均等割り(\kintou)における全角空白の扱いについて(LuaLaTeX)

均等割り(\kintou)における全角空白の扱いについて(LuaLaTeX)

- 青木 康博 の投稿
返信数: 14
LuaLaTeX において,均等割りを行う際に全角空白を1文字分として挿入しようとしたのですが,意図する結果が出力できません。

\documentclass{jlreq}


\def\kintou#1#2{\leavevmode\hbox to#1{%

\ltjsetparameter{kanjiskip=0pt plus 1fill minus 1fill}

\ltjsetparameter{xkanjiskip=\ltjgetparameter{kanjiskip}}

#2}}


\begin{document}

\kintou{7\zw}{王 貞治}%王[全角空白]貞治

\end{document}


として,姓と名の間を広くしたいと考えたのですが,出力は

「王□貞□□□治」(□ は空白の長さを表します)

といった感じになります。環境はWindows10+TeXlive2020です。


このような場合の全角空白の扱いについてご教示いただければと存じます。よろしくお願いいたします。

青木 康博 への返信

Re: 均等割り(\kintou)における全角空白の扱いについて(LuaLaTeX)

- 北見 けん の投稿
あれ?
> \kintou{7\zw}{王 貞治}%王[全角空白]貞治
にあるのは全角空白ではないようですが・・・
掲示板に書き込むと正規化されたりするんでしたっけ?
試しに全角空白を入れてみます。
\kintou{7\zw}{王 貞治}%王[全角空白]貞治
(どうかな?)

肝心の対処法が無くてすみません。
青木 康博 への返信

Re: 均等割り(\kintou)における全角空白の扱いについて(LuaLaTeX)

- 奥村 晴彦 の投稿
LuaLaTeXというよりはjlreqの仕様なのだと思います。
\documentclass{ltjsarticle}
の場合と比較してみてください。
jlreqについてはabenoriさんの降臨を。
奥村 晴彦 への返信

Re: 均等割り(\kintou)における全角空白の扱いについて(LuaLaTeX)

- 和田 勇 の投稿
\kintou の動きが時々期待通りに動かないので、そんな時は、以下のような定義を利用しています。

\newsavebox{\yaKintouBox}
\def\yaKintou#1#2{
\savebox{\yaKintouBox}[#1][s]{#2}
\usebox{\yaKintouBox}
}

% jlreq と ltjsarticle でちょっと結果が異なるのが気になりますが
和田 勇 への返信

Re: 均等割り(\kintou)における全角空白の扱いについて(LuaLaTeX)

- ひとみ さん の投稿
一般 LuaLaTeX + jlreq 使用者ですが……、

全角空白は LuaLaTeX + jlreq では和文間隔
を挿入するアクティブ文字になっています。
なので、全角空白を記述しても、その両端には
kanjiskip が挿入されないはずです。全角空白
を \mbox で囲うなどすれば両端に kanjiskip
が挿入されて、期待通りの結果になるはずです。

例えば、
\kintou{7\zw}{王\mbox{ }貞治}
奥村 晴彦 への返信

Re: 均等割り(\kintou)における全角空白の扱いについて(LuaLaTeX)

- Z. R. の投稿

もし
「jsarticleの場合と同じ結果にしたい」
かつ
\kintouの引数自体は変えたくない」
ということなのであれば、
\kintouのボックスの中で一時的に『ltjsarticleと同じ設定』に戻す」
という方法が考えられます。

% LuaLaTeX文書
\documentclass{jlreq}
\makeatletter %!!!!!!!!!!!!!!!!!!!!!!!!!TeX code BEGIN
% ltjsarticleの標準和文フォントと同じものを"ujisシェープ"に設定
\DeclareFontShape{JY3}{mc}{m}{ujis}{\ltj@stdmcfont:jfm=ujis}{}
\DeclareFontShape{JT3}{mc}{m}{ujis}{\ltj@stdmcfont:jfm=ujisv}{}
\DeclareFontShape{JY3}{gt}{m}{ujis}{\ltj@stdgtfont:jfm=ujis}{}
\DeclareFontShape{JT3}{gt}{m}{ujis}{\ltj@stdgtfont:jfm=ujisv}{}
\DeclareFontShape{JY3}{mc}{bx}{ujis}{ssub*gt/m/ujis}{}
\DeclareFontShape{JT3}{mc}{bx}{ujis}{ssub*gt/m/ujis}{}
\DeclareFontShape{JY3}{gt}{bx}{ujis}{ssub*gt/m/ujis}{}
\DeclareFontShape{JT3}{gt}{bx}{ujis}{ssub*gt/m/ujis}{}
\DeclareFontShape{JY3}{mc}{b}{ujis}{ssub*gt/m/ujis}{}
\DeclareFontShape{JT3}{mc}{b}{ujis}{ssub*gt/m/ujis}{}
\DeclareFontShape{JY3}{gt}{b}{ujis}{ssub*gt/m/ujis}{}
\DeclareFontShape{JT3}{gt}{b}{ujis}{ssub*gt/m/ujis}{}
% \kintou
\def\kintou#1#2{\leavevmode\hbox to#1{%
  %↓アクティブ化を解除, ujisシェープに変更
  \catcode"3000=12 \kanjishape{ujis}\selectfont
  \ltjsetparameter{kanjiskip=0pt plus 1fill minus 1fill}%
  \ltjsetparameter{xkanjiskip=\ltjgetparameter{kanjiskip}}%
  #2}}
\makeatother  %!!!!!!!!!!!!!!!!!!!!!!!!!TeX code END
\begin{document}

\kintou{7\zw}{王 貞治}

\end{document}

※和文スケール値を既定から変えている場合は調整が必要です。

青木 康博 への返信

Re: 均等割り(\kintou)における全角空白の扱いについて(LuaLaTeX)

- はやて (h20y6m) の投稿

全角空白の前後にJFMのグルーが入り、kanjiskipが入らないためにうまくいかないのだと思います。

試しに

\kintou{7\zw}{王\< \<貞治}%王[全角空白]貞治

のようにJFMのグルーを消してやるとそれっぽくなりますが……

(LuaLaTeX+jlreqの場合、 (全角空白)は文字ではなくマクロなのでおかしなことが起きないだろうか……)

青木 康博 への返信

ありがとうございます: 均等割り(\kintou)における全角空白の扱いについて(LuaLaTeX)

- 青木 康博 の投稿
皆様
たくさんのご教示ありがとうございます。全角空白の扱いについて,まだよく理解できていないところがありますが,均等割りについては解決できました。職場(研究室)で20年来共用しているpLaTeXの文書のフォームを,LuaLaTeXに対応させるために修正しているところでした。今後とも宜しくお願いいたします。

青木 康博 への返信

Re: 均等割り(\kintou)における全角空白の扱いについて(LuaLaTeX)

- 阿部 紀行 の投稿
もうすでに理由も対処法も書かれていますが…….この例だと「王」と「 」(全角空白)の間にはkanjiskip由来のグルーが入らず,従って意図する結果とはなりません.これはpLaTeXでも同様だったと思います.「日本語組版処理の要件」に従った「王」と「 」の間の空白がJFMにて設定されているのが理由です.
すでに述べられているように,ボックスに入れてしまうかJFMグルーを消してやるかがとりあえずはよいかなと思います.

(挙動をどう理解するかという点では「kanjiskipの再設定そのものが想定外である」というのが一番よい解釈かと思います.)
阿部 紀行 への返信

Re: 均等割り(\kintou)における全角空白の扱いについて(LuaLaTeX)

- 奥村 晴彦 の投稿
ありがとうございます(お呼び立てしてしまってすみません)。

JLREQにも規定されている「均等割り」がうまくできる機能があればいいのですが。
奥村 晴彦 への返信

Re: 均等割り(\kintou)における全角空白の扱いについて(LuaLaTeX)

- 阿部 紀行 の投稿
> JLREQにも規定されている「均等割り」がうまくできる機能があればいいのですが。

TODOの一つではあります.
kanjiskipを流用するのがよいのか,マクロで一文字ずつ食っていくのがよいのか他に手があるのかとか考えていたら何も起こらずになってしまっていました…….
阿部 紀行 への返信

Re: 均等割り(\kintou)における全角空白の扱いについて(LuaLaTeX)

- 奥村 晴彦 の投稿
再度お呼び立てしてしまったようで恐縮です。

jlreq.clsそのものになくても勝手に作ればいいですね。と思ったら,すでにZRさんが一つ作ってくださっていました。ありがとうございます。
奥村 晴彦 への返信

Re: 均等割り(\kintou)における全角空白の扱いについて(LuaLaTeX)

- 阿部 紀行 の投稿
ZRさんのがあれば安心です.見つけられていないのですが,どこでしょうか?
阿部 紀行 への返信

Re: 均等割り(\kintou)における全角空白の扱いについて(LuaLaTeX)

- 奥村 晴彦 の投稿
このスレッドの少し上の 2020年 12月 08日(火曜日) 14:52 のコメントです。