%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjext}[2017/05/05 v1.2g-ltj-5 Macros for vertical writing]
+\ProvidesPackage{lltjext}[2017/07/17 v1.2g-ltj-6 Macros for vertical writing]
\RequirePackage{luatexja}
\newcount\ltj@ext@dir
{\catcode`\*=11
% \item |[b]|指定のとき\\最終行のベースラインが周囲のそれと一致(罫線の場合は和文ベースラインの位置)
% \end{itemize}
% \item 周囲の組方向が縦組かつ組方向が|<z>|指定の場合
-% [TODO] 未定!
-%^^A \begin{itemize}
-%^^A \item |[t]|指定のとき\\表組の上端が周囲の和文ベースラインと一致
-%^^A \item |[c]|指定のとき\\表組の中心が周囲の数式軸を通る(欧文ベースラインシフトの影響下)
-%^^A \item |[b]|指定のとき\\表組の下端が周囲の和文ベースラインと一致
-%^^A \end{itemize}
+% \begin{itemize}
+% \item |[t]|指定のとき\\一行目の欧文ベースラインが周囲のそれと一致
+% \item |[c]|指定のとき\\表組の中心が周囲の数式軸を通る(欧文ベースラインシフトの影響下)
+% \item |[b]|指定のとき\\最終行の欧文ベースラインが周囲のそれと一致
+% \end{itemize}
\def\fork@array@option<#1>[#2]{%
\ifnum\ltjgetparameter{direction}=4 % yoko
\ifx\box@dir\yoko
\let\@begin@alignbox\vcenter
\let\@end@alignbox\relax
\fi\fi
- \else
+ \else\ifx\box@dir\tate
\if #2t\relax
\let\@begin@alignbox\vtop
\let\@end@alignbox\relax
\let\@begin@alignbox\vcenter
\let\@end@alignbox\relax
\fi\fi
- \fi\fi
+ \else % utod
+ \if #2t\relax
+ \def\@begin@alignbox{\lower\dimexpr
+ \ltjgetparameter{talbaselineshift}-\ltjgetparameter{yalbaselineshift}\vtop}
+ \let\@end@alignbox\relax
+ \else\if #2b\relax
+ \def\@begin@alignbox{\lower\dimexpr
+ \ltjgetparameter{talbaselineshift}-\ltjgetparameter{yalbaselineshift}\vbox}
+ \let\@end@alignbox\relax
+ \else
+ \let\@begin@alignbox\vcenter
+ \let\@end@alignbox\relax
+ \fi\fi
+ \fi\fi\fi
\fi\fi%
}
\def\@end@parbox{\m@th$\null}%
\fi
\fi\fi
+ \else\ifx\box@dir\tate
+ \if #2t\relax
+ \let\@begin@parbox\vtop
+ \let\@end@parbox\relax
+ \else\if #2b\relax
+ \let\@begin@parbox\vbox
+ \let\@end@parbox\relax
+ \else
+ \ifmmode
+ \let\@begin@parbox\vcenter\let\@end@parbox\relax
+ \else
+ \def\@begin@parbox{\null$\vcenter}%
+ \def\@end@parbox{\m@th$\null}%
+ \fi
+ \fi\fi
\else\ifx\box@dir\dtou % 180 度回転→vtop, vbox を入れ替える
\if #2t\relax
\let\@begin@parbox\vbox %%% !!!
\def\@end@parbox{\m@th$\null}%
\fi
\fi\fi
- \else
+ \else % \utod
\if #2t\relax
- \let\@begin@parbox\vtop
- \let\@end@parbox\relax
+ \def\@begin@parbox{\raise\cht\vtop\bgroup\kern\z@\vtop}%
+ \let\@end@parbox\egroup
\else\if #2b\relax
- \let\@begin@parbox\vbox
- \let\@end@parbox\relax
+ \def\@begin@parbox{\lower\cdp\vbox\bgroup\kern\z@\vbox}%
+ \let\@end@parbox\egroup
\else
\ifmmode
\let\@begin@parbox\vcenter\let\@end@parbox\relax
\def\@end@parbox{\m@th$\null}%
\fi
\fi\fi
- \fi\fi
+ \fi\fi\fi
\fi\fi%
}
\def\ltj@lltjext@patch@array{%
\patchcmd{\@tabular}{\hbox\bgroup}{%
\hbox\bgroup\ltj@ext@dir=\ltjgetparameter{direction}}{}{}
- \pretocmd{\@array}%
+ \pretocmd{\array}%
{\ltj@ext@dir=\ltjgetparameter{direction}\relax}{}{}
\def\@startpbox##1{\bgroup
\box@dir\adjustbaseline%%% これを追加