texjporg / platex

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

\fixcompositeaccent での \oalign #80

Closed aminophen closed 5 years ago

aminophen commented 5 years ago

2018-07-28 で導入した \fixcompositeaccent ですが,その中に \oalign を再定義があります。若干怖いなあと思いつつ「一旦数式モードに入ることで,\b \c \d \k などのアクセント合成文字周囲に \xkanjiskip を入れる」という変更だったわけですが,やっぱり副作用はありますね。

~~ 具体的には,「LaTeX2e 辞典 増補改訂版」に載っている \oalign{>\cr =} の結果が,\fixcompositeaccent 有効な時は壊れています。 ~~

\documentclass{article}
\begin{document}

%\nofixcompositeaccent

漢\oalign{>\cr =}漢

漢{\ooalign{△\cr ▽}}漢

漢{\ooalign{\hfil Y\hfil \cr \hfil =\hfil}}漢

漢\oalign{>\cr =}漢

漢\ooalign{△\cr ▽}漢

漢\ooalign{\hfil Y\hfil \cr \hfil =\hfil}漢

\fixcompositeaccent

漢\oalign{>\cr =}漢

漢{\ooalign{△\cr ▽}}漢

漢{\ooalign{\hfil Y\hfil \cr \hfil =\hfil}}漢

漢\oalign{>\cr =}漢

漢\ooalign{△\cr ▽}漢

漢\ooalign{\hfil Y\hfil \cr \hfil =\hfil}漢

\end{document}

そもそも「アクセント文字で問題が起きた時は \fixcompositeaccent を部分的に発行してください」という意図と仕様ですから,バグには当たらないはずですが,どこかに注意点ということで書いた方が良いかもしれないと思うので issue にします。

aminophen commented 5 years ago

そもそも上のソースは正しくなく,\ooalign をグループに入れていないことが直接の原因ですね。というわけで上の MWE は問題でもなんでもないみたい…

\documentclass{article}
\begin{document}

%\nofixcompositeaccent

\vbox{漢\oalign{>\cr =}漢

漢{\ooalign{△\cr ▽}}漢

漢{\ooalign{\hfil Y\hfil \cr \hfil =\hfil}}漢

漢\oalign{>\cr =}漢

%% グループに入れずに使うのは想定外

% 漢\ooalign{\hfil Y\hfil \cr \hfil =\hfil}漢

% 漢\oalign{>\cr =}漢
}

\fixcompositeaccent

\vbox{漢\oalign{>\cr =}漢

漢{\ooalign{△\cr ▽}}漢

漢{\ooalign{\hfil Y\hfil \cr \hfil =\hfil}}漢

漢\oalign{>\cr =}漢

%% グループに入れずに使うのは想定外

% 漢\ooalign{\hfil Y\hfil \cr \hfil =\hfil}漢

% 漢\oalign{>\cr =}漢
}

\end{document}

ただ,何か別に問題が見つかれば追記していきます。