表: 列幅を垂直方向と水平方向に中央揃えで自動調整

表: 列幅を垂直方向と水平方向に中央揃えで自動調整

tabularx私は、列タイプが中央揃えになっているのと同じように、自動幅の列を水平方向と垂直方向に中央揃えにできる方法を探していますX

それで、私がこれまでに試したことは次のとおりです:

\documentclass{article}
\usepackage{tabularx,booktabs}
\newcolumntype{Z}[0]{>{\centering\arraybackslash\let\newline\\\hspace{0pt}}X}%
\begin{document}
\begin{table}
\begin{tabularx}{7cm}{l|X|X}
& long\newline heading 1 & short heading\\
\toprule
row 1 & 2314 & 2134
\end{tabularx}
\end{table}
\begin{table}
\begin{tabularx}{7cm}{l|Z|Z}
& long\linebreak heading 1 & short heading\\
\toprule
row 1 & 2314 & 2134
\end{tabularx}
\end{table}
\end{document}

ここに画像の説明を入力してください ここに画像の説明を入力してください

2 番目はほぼ希望どおりですが、3 番目の列の垂直方向の中央揃えが欠けています。これを修正するにはどうすればよいでしょうか?

答え1

m垂直方向の中央揃えには、列ではなくp列の後ろに配置するのが望ましいX

\documentclass{article}
\usepackage{tabularx,booktabs}
\newcolumntype{Z}[0]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}X}%
\renewcommand\tabularxcolumn[1]{m{#1}}
\begin{document}
\begin{table}
\begin{tabularx}{7cm}{l|X|X}
& long\newline heading 1 & short heading\\
\toprule
row 1 & 2314 & 2134
\end{tabularx}
\end{table}
\begin{table}
\begin{tabularx}{7cm}{l|Z|Z}
& long\linebreak heading 1 & short heading\\
\toprule
row 1 & 2314 & 2134
\end{tabularx}
\end{table}
\end{document}

答え2

makecellパッケージとそのコマンドを使用するだけです\thead:

        \documentclass{article}
        \usepackage{tabularx,booktabs, makecell}
        \newcolumntype{Z}[0]{>{\centering\arraybackslash\let\newline\\\hspace{0pt}}X}%

        \begin{document}

        \begin{table}
        \begin{tabularx}{7cm}{l|X|X}
        &\thead{ long\\ heading 1} & \thead{short heading}\\
        \toprule
        row 1 & 2314 & 2134
        \end{tabularx}
        \end{table}

        \begin{table}
        \begin{tabularx}{7cm}{l|Z|Z}
        &\thead{long\\ heading 1} & \thead{short heading}\\
        \toprule
        row 1 & 2314 & 2134
        \end{tabularx}
        \end{table}

        \end{document} 

ここに画像の説明を入力してください

makecell を使用すると、ヘッド セルの内容を簡単にフォーマットできることに注意してください。booktabs: で垂直線を使用しないでください。ご覧のとおり、水平線はカットされません。

関連情報