texjporg / platex

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

\strutbox の仕様 #20

Closed aminophen closed 7 years ago

aminophen commented 8 years ago

(この件を考えるのは当面先になると思いますが、一旦トピックとして立てておきます。)

「横組を前提とした LaTeX パッケージが縦組でうまく動かない」というケースのうち幾つかが、\strutbox の仕様に絡んでいるのではないか、という件です。

たとえば(これはよく知られている現象なのでしょうか?)、pLaTeX 縦組で amsmath の align 環境を使うと、「&」が奇数個のときだけ数式番号が \textwidth の端に付かず揃いません。また、leqno のときも、今度は「&」が偶数個のときに上端に付かず揃いません。

\expandafter\def\csname ver@plext.sty\endcsname{} % plext のせいでないことを保証
\documentclass{tarticle} % [leqno] も付けてみる
\usepackage{amsmath}
\setlength{\parindent}{0cm}
\setlength{\textwidth}{8cm}
\begin{document}

align環境、\verb+&+が1つ %% 少し上へ
\begin{align}
a_1& =b_1+c_1\\
a_2& =b_2+c_2-d_2+e_2
\end{align}

align環境、\verb+&+が3つ %% 少し上へ
\begin{align}
a_{11}& =b_{11}&
  a_{12}& =b_{12}\\
a_{21}& =b_{21}&
  a_{22}& =b_{22}+c_{22}
\end{align}

align環境、\verb+&+が2つ %% 下端に付く
\begin{align}
a_{11}& =b_{11}&
  a_{12}\\
a_{21}& =b_{21}&
  a_{22}
\end{align}

align環境、\verb+&+なし %% 下端に付く
\begin{align}
a_1=b_1+c_1
\end{align}

\end{document}

なぜ偶奇で挙動が変わるのかがわかっていませんが、今回のケースに限れば冒頭に

\let\origstrutbox\strutbox
\def\strutbox{\iftdir\tstrutbox\else\origstrutbox\fi}

を足してみると期待どおりになります。もう少し詳しい例は順次 gist に出します。

aminophen commented 7 years ago

現在 exppl2e に入れているパッチを書いたときに、 \strutbox の再定義を \set@fontsize のなかに入れてしまっていたことに今さら気づきました。これはまずかったので、のちほど

\def\strutbox{\iftdir\tstrutbox\else\ystrutbox\fi}

を外へ出しておきます。(メモ:tlb0014.lvt などで垂直位置がずれる)

aminophen commented 7 years ago

微妙すぎて判断つかずにいるので、どなたかわかるでしょうか?

%\RequirePackage{exppl2e}
\documentclass{tarticle}
\begin{document}
ほげ\footnote{テスト}ふが。
\end{document}

これの結果が exppl2e を読むか読まないかで数ポイントだけずれるのですが、これは本来あるべき挙動として現行カーネルが正しいのでしょうか、それとも exppl2e 有りが正しいのでしょうか。(変わる原因に \@footnotetext\@finalstrut\strutbox が絡んでいることまでは判っています。)

→ どうやら exppl2e 有りが正しいような気がする。