texjporg / platex

pLaTeX community edition
BSD 3-Clause "New" or "Revised" License
49 stars 8 forks source link

CJK の前後の \textsuperscript, \textsubscript で xkanjiskip が入る #82

Open h-kitagawa opened 5 years ago

h-kitagawa commented 5 years ago

元は LuaTeX-ja のチケット (https://ja.osdn.net/projects/luatex-ja/ticket/38787) です:

In CJK text, there is a space before superscripts and subscripts which are made by commands like \textsuperscript.

pLaTeX でも同様の現象が起こるようなので(直すべきかはともかく)共有しておきます. 私の手元のサンプルは以下のとおりです:

\ifdefined\directlua
  \documentclass{ltjarticle}
\else
  \documentclass{jarticle}
\fi

\begin{document}
\ifdefined\directlua
  \ltjsetparameter{xkanjiskip=10pt}
\else
  \xkanjiskip=10pt
\fi

漢字\textsuperscript{1}漢字\textsubscript{1}漢字
\end{document}
h-kitagawa commented 5 years ago

\textsuperscript の内部で実行される命令 \@textsuperscript の定義が以下のようになっている (latex.ltx) ことを考えると,以前の(pTeX 仕様変更に伴う)脚注番号前後の空き修正 (http://acetaminophen.hatenablog.com/entry/new-platex-20160507-01#main-3-1) と同じ話ですね.

\def\@textsuperscript#1{%
  {\m@th\ensuremath{^{\mbox{\fontsize\sf@size\z@#1}}}}}

ただ,元々の LaTeX では,以下のように \textsuperscript を利用して記号類が定義されているので,ただ \textsuperscript, \textsubscript を再定義するだけだと不安です.

\DeclareTextCommandDefault{\texttrademark}{\textsuperscript{TM}}
\DeclareTextCommandDefault{\textordfeminine}{\textsuperscript{a}}
\DeclareTextCommandDefault{\textordmasculine}{\textsuperscript{o}}
aminophen commented 5 years ago

見落としていました。

h-kitagawa commented 5 years ago
  • \textsuperscript, \textsubscript を直に使うとき,\xkanjiskip が入ることを「期待するか,しないか」の時点で意見が分かれそうです。

私もよくわからないです.どういうときに実際に使われるのかもあまり思いつきませんし.

  • ところで \texttrademark は TS1 (textcomp) にすると \xkanjiskip が周囲に入りますよね。

この挙動って,pLaTeX 2016-06-10 で 128--255 の \xspcode が 3(両側とも \xkanjiskip 挿入許可)になったことによりますよね (#6).その時に同様の「\textcopyright ってどうなるのが正解でしょうか?」という話がちらっと出ましたが,結論は出ないままでしたっけ?

aminophen commented 5 years ago

pLaTeX 2016-06-10 で 128--255 の \xspcode が 3(両側とも \xkanjiskip 挿入許可)になったことによりますよね (#6).

そういえばそうでした。\textcopyright も結論は出ていませんね…。

そうするとやはり

  • そこでむしろ,直にではなく \@makefnmark の中といった「暗に使われるケース」を考えたほうが良いかもしれません。

に頼る可能性が出てくるので,他にそういう例はないか探してみましょうか。

aminophen commented 5 years ago

かなり間が空きましたが,今思っていることです。


\textsubscript について,試しに「ありえそうな例」を作ってみた。

\documentclass{jarticle}
\begin{document}

問1.下線部を漢字に直しなさい。

ここは\textsubscript{1}\underline{ジュウヨウ}です。

\end{document}
subscript

この例だと前者(アキあり)が自然に見える…わけですが,そもそも「2015 年以降」しか存在しない命令なので,こういう用法は無視することにして「直す」方を支持します。具体的なコードは未検討です。

aminophen commented 3 years ago

この件ですが,今回 (pLaTeX2e 2020-10-01) は見送りとします。

なお,本家 LaTeX2e 2020-10-01 で \@textsuperscript\@textsubscript の元の定義が変更されるようです(具体的には \fontsize の第二引数(ベースライン)がゼロではなく \sf@size になる)。