Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
h-kitagawa opened this issue Dec 4, 2018 · 6 comments

Comments

@h-kitagawa
Copy link
Member

元は 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
Copy link
Member Author

\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
Copy link
Member

見落としていました。

  • \textsuperscript, \textsubscript を直に使うとき,\xkanjiskip が入ることを「期待するか,しないか」の時点で意見が分かれそうです。
    • 私はこれについては「よくわからない」派です。
  • そこでむしろ,直にではなく \@makefnmark の中といった「暗に使われるケース」を考えたほうが良いかもしれません。
    • 例えば endnotes.sty も \@makeenmark\@textsuperscript を使っていて,影響がモロに及びます。この例については \xkanjiskip が入らないべきです。
  • ところで \texttrademark は TS1 (textcomp) にすると \xkanjiskip が周囲に入りますよね。

@h-kitagawa
Copy link
Member Author

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

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

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

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

@aminophen
Copy link
Member

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

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

そうするとやはり

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

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

@aminophen
Copy link
Member

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

  • \textsuperscript は古くからある命令なので,「昔の pTeX + pLaTeX の挙動」に戻したい。つまり,アキが入らないように改修したい。
    • こうすれば「endnotes.sty 等で,注釈が不自然に空かなくなる」というメリットがある。
    • この修正を入れて,代わりに \@makefnmark の修正を外したい。
  • 一方,\textsubscript は LaTeX2e 2015-01-01 で新しく追加されたので,元に戻すという考えは通用しない。ただし,利用者はきっと少ないので,変えても影響は極めて小さいだろう。

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

\documentclass{jarticle}
\begin{document}

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

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

\end{document}

subscript

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

@aminophen
Copy link
Member

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants