Re: 表の縦方向の中央揃えについて

名前: misc
日時: 2004-04-01 00:55:57
IPアドレス: 210.230.18.*

>>27775 その場しのぎとしては,表の中に \rule による支柱を追加する, という方法が使えます. \documentclass{jarticle} \begin{document} \def\arraystretch{1.7} \begin{tabular}{|c|c|} \hline 左上 & 右上 \\ \hline 左下 & 右下 \\ \hline \end{tabular} % 支柱 \rule[-0.65\normalbaselineskip]{0pt}{1.7\normalbaselineskip} を % 表の個々の行に追加 % (-0.65,1.7 という係数は適宜変更してください) \begin{tabular}{@{}|c|c|@{\protect\rule[-0.65\normalbaselineskip]{0pt}{1.7\normalbaselineskip}}} \hline 左上 & 右上 \\ \hline 左下 & 右下 \\ \hline \end{tabular} \end{document} 表の中の個々の行に対して用いられる支柱 \box\@arstrutbox の 作成処理の部分に手を加えて次のようにすることもできます. # ただし,array パッケージなどの表作成処理を書き換えるパッケージを # 使用した場合には,それらのパッケージによって変更された後の # 定義に対して下記の例にある変更と同様の変更を施すことになります. \documentclass{jarticle} \makeatletter \def\@array[#1]#2{% \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi \bgroup %%% original %%% \setbox\@arstrutbox\hbox{% %%% \vrule \@height\arraystretch\ht\strutbox %%% \@depth\arraystretch \dp\strutbox %%% \@width\z@}% \setbox\@arstrutbox\hbox{% \dimen@\ht\strutbox \advance\dimen@\dp\strutbox \@tempdima\arraystretch\dimen@ \advance\@tempdima-\dimen@ \divide\@tempdima\tw@ \@tempdimb\@tempdima \advance\@tempdima\ht\strutbox \advance\@tempdimb\dp\strutbox \vrule \@height\@tempdima \@depth\@tempdimb \@width\z@}% %%% \@mkpream{#2}% \edef\@preamble{% \ialign \noexpand\@halignto \bgroup \@arstrut \@preamble \tabskip\z@skip \cr}% \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox \let\tabularnewline\\% \let\par\@empty \let\@sharp##% \set@typeset@protect \lineskip\z@skip\baselineskip\z@skip \ifhmode \@preamerr\z@ \@@par\fi \@preamble} \makeatother \begin{document} \def\arraystretch{1.7} \begin{tabular}{|c|c|} \hline 左上 & 右上 \\ \hline 左下 & 右下 \\ \hline \end{tabular} \end{document} # さらに別の方法としては,“表の個々の行の高さを測定した結果を用いて # 表の個々の配列要素を天地中央に置く”処理を追加する,というものも # あります.

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)