
表のセルの垂直方向の中央揃えに関する回答が何十件もあったにもかかわらず、手で折り返された複数行のセルの同じ行にあるセルの垂直方向の中央揃えという、一見単純なニーズに対する解決策を見つけることができませんでした (私のせいです)。
\documentclass[12pt]{article}
\usepackage{xcolor}
\usepackage{array}
\begin{document}
\pagecolor{yellow!10}
\newcommand{\methoda}[1]{{\parbox[c]{\linewidth}{\centering#1}}}
\newcommand{\methodb}[3]{\begin{tabular}[c]{@{}c@{}}#1\\#2\\#3\end{tabular}}
\newcommand{\methodc}[1]{\begin{minipage}[m]{\linewidth}\centering#1\end{minipage}}
\newcommand{\methodd}[1]{{\begin{center}#1\end{center}}}
\newcommand{\methoddfix}[1]{{\setlength{\topsep}{0pt}\begin{center}#1\end{center}}}
\centering\begin{tabular}{>{\raggedright\arraybackslash}m{0.28\linewidth}>{\centering\arraybackslash}m{0.33\linewidth}}
\tabularnewline\hline
\centering Column 1 & Column 2\tabularnewline\hline
2 lines vertically centered & This cell contains more than one line of automatically wrapped text. \tabularnewline\hline
Fail of vertical centering & \methoda{Hand-wrapped\\ multiline\\ method A} \tabularnewline\hline
Vert. center. fail & \methodb{Hand-wrapped}{multiline}{method B} \tabularnewline\hline
Fail of vertical centering & \methodc{Hand-wrapped multiline\\ method C\\ too much padding} \tabularnewline\hline
Vert. center. OK & \methodd{Hand-wrapped multiline\\ method D\\ too much padding} \tabularnewline\hline
Success column 1, fail column 2 & \methoddfix{Hand-wrapped multiline\\ method Dfix\\ cannot remove\\ bottom padding} \tabularnewline\hline
Just a last row & Just a last row \tabularnewline\hline
\end{tabular}
\end{document}
私の実際のテーブルは、おそらく、または他の追加の高度なパッケージlongtable
を使用しており、XeLaTeX でコンパイルされています。multirow
tabularx
ご協力いただければ幸いです。
答え1
makecell
またはネストされたtabular
と2 番目の列のタイプがある場合p
:
\documentclass[12pt]{article}
\usepackage{array}
\usepackage{makecell}
\begin{document}
With a multicolumn around the automatically wrapped columns:
\centering\begin{tabular}{>{\raggedright\arraybackslash}m{0.28\linewidth}>{\centering\arraybackslash}p{0.33\linewidth}}
\hline
some automatically wrapped text & \makecell[cc]{Some \\ manually \\ linebroken \\ text \\ over multiple lines}\\ \hline
some automatically wrapped text & \begin{tabular}[c]{@{}c@{}}Some \\ manually \\ linebroken \\ text \\ over multiple lines\end{tabular}\\ \hline
some automatically wrapped text & \multicolumn{1}{>{\centering\arraybackslash}m{0.33\linewidth}}{some longer but also automatically wrapped text}\\ \hline
\end{tabular}
With a multicolumn around the manually wrapped columns:
\begin{tabular}{>{\raggedright\arraybackslash}m{0.28\linewidth}>{\centering\arraybackslash}m{0.33\linewidth}}
\hline
some automatically wrapped text & \multicolumn{1}{>{\centering\arraybackslash}p{0.33\linewidth}}{\makecell[cc]{Some \\ manually \\ linebroken \\ text \\ over multiple lines}}\\ \hline
some automatically wrapped text & \multicolumn{1}{>{\centering\arraybackslash}p{0.33\linewidth}}{\begin{tabular}[c]{@{}c@{}}Some \\ manually \\ linebroken \\ text \\ over multiple lines\end{tabular}}\\ \hline
some automatically wrapped text & some longer but also automatically wrapped text\\ \hline
\end{tabular}
\end{document}
アップデート:手動改行と自動改行を組み合わせるには、初期列定義を\let\newline\\\arraybackslash\hspace{0pt}
だけではなくを含めるように変更できます\arraybackslash
。
\documentclass[12pt]{article}
\usepackage{array}
\usepackage{makecell}
\begin{document}
\begin{tabular}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{0.28\linewidth}>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{0.33\linewidth}}
\hline
some automatically wrapped text & some longer but also automatically wrapped text\\ \hline
some automatically wrapped text & some\newline automatically wrapped text with a\newline few \newline manual linebreaks\\ \hline
manual \newline linebreak & more text here\\
\hline
\end{tabular}
\end{document}