-
Notifications
You must be signed in to change notification settings - Fork 8
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
tabbing 環境の JFM グルーの入り方 #53
Comments
上の例はさしあたり \gdef\@startline{%
\ifnum \@nxttabmar >\@hightab
\@badtab
\global\@nxttabmar \@hightab
\fi
\global\@curtabmar \@nxttabmar
\global\@curtab \@curtabmar
\global\setbox\@curline \hbox {}%
\@startfield
\strut\inhibitglue} のように |
「最初の要素の左側」とは別に、今度は「要素の右側」の JFM グルーが気になってきました。 pLaTeX カーネルは %\makeatletter
% LaTeX
%\gdef\@stopfield{\color@endgroup\egroup}
% pLaTeX
%\gdef\@stopfield{\null\color@endgroup\egroup}
%\makeatother
\documentclass{jarticle}
\begin{document}
\verb+\'+の前後に空白があるとき
\begin{tabbing}
ほげほげほげ \= ほげほげほげほげ \= ほげほげ \= ほげほげほげほげほげ \\
(一) \> (二) \> (三) \> (四) \+\+\\
(三) \> (四) \\
(二右) \' (三) \> (四)
\end{tabbing}
\verb+\'+の前後に空白がないとき
\begin{tabbing}
ほげほげほげ \= ほげほげほげほげ \= ほげほげ \= ほげほげほげほげほげ \\
(一)\>(二)\>(三)\>(四)\+\+\\
(三)\>(四)\\
(二右)\'(三)\>(四)
\end{tabbing}
\end{document}
%#!pdflatex
\documentclass{article}
\begin{document}
with spaces
\begin{tabbing}
1++++++++++++ \= 2+++++++ \= 3+++++++++++ \\
first \> second \> third \+\\
second \> third \\
first \' second \> third
\end{tabbing}
without spaces
\begin{tabbing}
1++++++++++++ \= 2+++++++ \= 3+++++++++++ \\
first\>second\>third\+\\
second\>third\\
first\'second\>third
\end{tabbing}
\end{document}
\gdef\@tablab{%
\unskip
\@stopfield
\global\setbox\@curline\hbox{%
\box\@curline
\hskip-\wd\@curfield \hskip-\tabbingsep
\box\@curfield
\hskip\tabbingsep}%
\@startfield
\ignorespaces} |
とりあえず,tabbing 先頭の JFM グルーを消すコードをカーネルに移しました。 さて,plcore.dtx に
とあるのですが,この「\null がないと和欧文間スペースが入ってしまう」とはどんなソースで確認できるのでしょうか? 少なくとも \null の影響で,ここに書いたような「末尾に JFM グルーが来た場合」の挙動が変化しているわけですが,他にも \null が意図しない変化を生んでいたりしないかが心配です。 |
ようやく理解しました。LaTeX のママだと要素間に \xkanjiskip が入る行と入らない行ができてしまい,「かきくけこ」と「カキクケコ」が揃わなくなっていますが,pLaTeX だと要素間の \xkanjiskip が一律に抑制され,揃うようになっているということですね。 \documentclass{jarticle}
\def\TEST{%
\begin{tabbing}
あいう\=AAA\=かきくけこ\=さし\\
アイウ\>AAA\>カキクケコ\>サシ
\end{tabbing}}
\begin{document}
\makeatletter
% LaTeX
\gdef\@stopfield{\color@endgroup\egroup}
\TEST
% pLaTeX
\gdef\@stopfield{\null\color@endgroup\egroup}
\TEST
\end{document} ということは,この意図を壊さずに右寄せ |
pLaTeX と LuaTeX-ja の間でなるべく共通な方がわかりやすいと思ったので,両方でいろいろ処理してみることにしました。結果的に,以下のコード(pLaTeX dev と記したもの)にたどり着きました。
比較上の便宜のため,本家 LaTeX のコードや現行の pLaTeX のコードを併記しています。(LuaTeX-ja は pLaTeX dev のコードを使わないとタブが揃わないような気が…?) \documentclass{article}
\ifx\directlua\undefined\else\usepackage{luatexja}\fi
\begin{document}
\makeatletter
%
%% \@startline patch
% LaTeX
\gdef\@startline{%
\ifnum \@nxttabmar >\@hightab
\@badtab
\global\@nxttabmar \@hightab
\fi
\global\@curtabmar \@nxttabmar
\global\@curtab \@curtabmar
\global\setbox\@curline \hbox {}%
\@startfield
\strut}
% pLaTeX dev
\gdef\@startline{%
\ifnum \@nxttabmar >\@hightab
\@badtab
\global\@nxttabmar \@hightab
\fi
\global\@curtabmar \@nxttabmar
\global\@curtab \@curtabmar
\global\setbox\@curline \hbox {}%
\@startfield
\strut\inhibitglue}
%
%% \@stopfield patch
% LaTeX
\gdef\@stopfield{\color@endgroup\egroup}
% pLaTeX
\gdef\@stopfield{\null\color@endgroup\egroup}
% pLaTeX dev
\gdef\@stopfield{%
\inhibitglue
\@tempskipa\lastskip\unskip
\hskip\@tempskipa
\color@endgroup\egroup}
%
\makeatother
\tabbingsep15pt
% ===== test for \xkanjiskip and alignment =====
\def\TEST{%
\begin{tabbing}
あいう\=AAA\=かきくけこ\=さし\\
アイウ\>AAA\>カキクケコ\>サシ
\end{tabbing}}
% ===== test for JFM glue and alignment =====
\def\TESTA{%
[1]
\begin{tabbing}
ほげほげほげ \= ほげほげほげほげ \= ほげほげ \= ほげほげほげほげほげ \\
(一) \> (二) \> (三) \> (四) \+\+\\
(三) \> (四) \\
(二右) \' (三) \> (四)
\end{tabbing}
[2]
\begin{tabbing}
ほげほげほげ \= ほげほげほげほげ \= ほげほげ \= ほげほげほげほげほげ \\
(一)\>(二)\>(三)\>(四)\+\+\\
(三)\>(四)\\
(二右)\'(三)\>(四)
\end{tabbing}
[3]
\begin{tabbing}
ほげほげほげ\=ほげほげほげほげ\=ほげほげ\=ほげほげほげほげほげ\\
(一) \> (二) \> (三) \> (四) \+\+\\
(三) \> (四) \\
(二右) \' (三) \> (四)
\end{tabbing}
[4]
\begin{tabbing}
ほげほげほげ\=ほげほげほげほげ\=ほげほげ\=ほげほげほげほげほげ\\
(一)\>(二)\>(三)\>(四)\+\+\\
(三)\>(四)\\
(二右)\'(三)\>(四)
\end{tabbing}}
% ===== test for \tabbingsep compatibility =====
\def\TESTB{%
[1]
\begin{tabbing}
AAA \= BBBB \= CC \= DDDDD \\
A\>B\>C\>D\+\+\\
C\>D\\
rB\'C\>D
\end{tabbing}
[2]
\begin{tabbing}
AAA\=BBBB\=CC\=DDDDD\\
A\>B\>C\>D\+\+\\
C\>D\\
rB\'C\>D
\end{tabbing}
[3]
\begin{tabbing}
AAA \= BBBB \= CC \= DDDDD \\
A \> B \> C \> D \+\+\\
C \> D \\
rB \' C \> D
\end{tabbing}
[4]
\begin{tabbing}
AAA\=BBBB\=CC\=DDDDD\\
A \> B \> C \> D \+\+\\
C \> D \\
rB \' C \> D
\end{tabbing}}
\TEST
\TESTA\newpage
\TESTB
\end{document} |
現行では、tabbing 環境の各行で最初のモノだけ冒頭 JFM グルーが残り、以降のモノは消えます。最近 #43 で tabular 環境を修正したので、tabbing 環境も修正したいと思います。
明日 8/27 までにコードが間に合えば、exppl2e.sty に入れた状態にする予定です。
The text was updated successfully, but these errors were encountered: