以下の例で、最後だけスペースの入り方が変わってしまいますが、変わらないようにする方法はありますか。
\documentclass[uplatex]{jlreq}
%\documentclass[uplatex]{jsarticle}
\begin{document}
彼は「よし」
\textgt{彼は}「よし」
やって来た。いつ
\textgt{やって来た。}いつ
ということです。「そうか」
\textgt{ということです。}「そうか」
\end{document}
これ,\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の微妙なことを詳細に検討して,
手を入れるパッケージを
公開されてたような気がするのですが,
どうでしたでしょうか.
話題になってました
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の微妙なことを詳細に検討して,
手を入れるパッケージを
公開されてたような気がするのですが,
どうでしたでしょうか.
> # f{}f でリガチャがなくなるか,リガチャのままか
> # にも通じるものがあるかなと
(u)platexの場合、今回の例では、
{ということです。}「そうか」
ということです。\label{page:kutoten}「そうか」
ということです。\index{句読点と開きカギカッコの狭間}「そうか」
でも、同様ですね。
# 場当たり的に、今回の(u)platexにかぎるなら、
# \futureletを使って、直前の句読点(、。,.)と直後の開き括弧類を見て、
# \inhibitglueする意味づけなマクロを作るぐらいになりそうです。
> ところで,
> どなたか(中国の方だったような・・・),
> このあたりのjfmの微妙なことを詳細に検討して,
> 手を入れるパッケージを
> 公開されてたような気がするのですが,
> どうでしたでしょうか.
fixjfm – Fix JFM (for *pTEX)
https://www.ctan.org/pkg/fixjfm
ですね。
> # にも通じるものがあるかなと
(u)platexの場合、今回の例では、
{ということです。}「そうか」
ということです。\label{page:kutoten}「そうか」
ということです。\index{句読点と開きカギカッコの狭間}「そうか」
でも、同様ですね。
# 場当たり的に、今回の(u)platexにかぎるなら、
# \futureletを使って、直前の句読点(、。,.)と直後の開き括弧類を見て、
# \inhibitglueする意味づけなマクロを作るぐらいになりそうです。
> ところで,
> どなたか(中国の方だったような・・・),
> このあたりのjfmの微妙なことを詳細に検討して,
> 手を入れるパッケージを
> 公開されてたような気がするのですが,
> どうでしたでしょうか.
fixjfm – Fix JFM (for *pTEX)
https://www.ctan.org/pkg/fixjfm
ですね。
># \inhibitglueする意味づけなマクロを作るぐらいになりそうです。
そうですよね.
直前は\lastnodechar関係で拾って,
直後は\futureletで拾って,
その組み合わせが事前に設定しておいたものに合致すれば
\inhibitglueを発行するという感じでしょうか.
合致のチェックにいろいろ方法がありそうですね.
>fixjfm – Fix JFM (for *pTEX)
>https://www.ctan.org/pkg/fixjfm
これです,これ.
どうしても思い出せなかったので,
すっきりしました.
ありがとうございます.
そうですよね.
直前は\lastnodechar関係で拾って,
直後は\futureletで拾って,
その組み合わせが事前に設定しておいたものに合致すれば
\inhibitglueを発行するという感じでしょうか.
合致のチェックにいろいろ方法がありそうですね.
>fixjfm – Fix JFM (for *pTEX)
>https://www.ctan.org/pkg/fixjfm
これです,これ.
どうしても思い出せなかったので,
すっきりしました.
ありがとうございます.
お返事ありがとうございます。
単純な話かなと思っていたのですが、意外と複雑でしたね。
以前、どこかでこういう話題があったような気がしたけど思い出せずにいましたが、TeX & LaTeX Advent Calendar 2014 にあったのですね。記憶がよみがえりました。
とはいえ、マクロは不得手だし、こういう場面は私には少ないので、\inhibitglue\mbox{} でしのぎたいと思います。
LuaLaTeX も試してみました。私が普段使うパッケージが pLaTeX 専用なので、スタイルファイルの zw を \zw に置き換え、\NeedsTeXFormat{pLaTeX2e} を削除して試しましたが、パッケージが別のパッケージを呼び出し、よくわからないエラーになったので、断念しました。また、スピードもあまりにも遅く、忍耐力を試されます。やはり、昔から使い慣れている (u)pLaTeX がいいですね。
単純な話かなと思っていたのですが、意外と複雑でしたね。
以前、どこかでこういう話題があったような気がしたけど思い出せずにいましたが、TeX & LaTeX Advent Calendar 2014 にあったのですね。記憶がよみがえりました。
とはいえ、マクロは不得手だし、こういう場面は私には少ないので、\inhibitglue\mbox{} でしのぎたいと思います。
LuaLaTeX も試してみました。私が普段使うパッケージが pLaTeX 専用なので、スタイルファイルの zw を \zw に置き換え、\NeedsTeXFormat{pLaTeX2e} を削除して試しましたが、パッケージが別のパッケージを呼び出し、よくわからないエラーになったので、断念しました。また、スピードもあまりにも遅く、忍耐力を試されます。やはり、昔から使い慣れている (u)pLaTeX がいいですね。
ご教示ありがとうございます。そういえば、前の投稿で、もう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}
使い方を拝見しました。\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}