将表格中的某些列水平居中到页面

将表格中的某些列水平居中到页面

我想将此表的第二列和第三列水平置于页面中央,以便“结构合金”和“覆层”突出到左侧: 在此处输入图片描述

\documentclass{article}
\usepackage{booktabs, multirow, threeparttable}
\usepackage{siunitx}

\begin{document}
\begin{table}[htpb] \footnotesize
    \centering
    \begin{threeparttable}
        \caption{Material properties of cladding alloys compared to structural alloys at \SI{705}{\celsius}}
        \label{tab:properties}
        \begin{tabular}{rlc}
             \cmidrule[0.08em]{2-3}
            & Material & CTE (\SI{e-3}{\per\celsius}) \\ 
            \cmidrule[0.05em]{2-3}
            \multirow{2}{*}{Structural alloys \bigg\{} & 316H & 18.8 \\
            & 800H & 17.2 \\ 
            \cmidrule[0.05em]{2-3}
            \multirow{3}{*}{Claddings \Bigg\{} & Ni-201 & 15.8  \\ 
            & Hastelloy N & 14.3  \\ 
            & Haynes 242 & 13  \\ 
            \cmidrule[0.08em]{2-3}
        \end{tabular}
    \end{threeparttable}
\end{table}
\end{document}

答案1

无论如何,桌子看起来都会不平衡。

不用也可以\multirow;按照惯例,空白单元格表示重复的值。

\documentclass{article}
\usepackage{booktabs, multirow, threeparttable}
\usepackage{siunitx}

\begin{document}

\begin{table}[htpb]
\centering
\begin{threeparttable}

\caption{Material properties of cladding alloys compared 
  to structural alloys at \SI{705}{\celsius}}
\label{tab:properties}

\begin{tabular}{@{}llS[table-format=2.1]@{}}
\toprule
Type & Material & {CTE (\SI{e-3}{\per\celsius})} \\
\midrule
Structural alloy & 316H        & 18.8 \\
                 & 800H        & 17.2 \\
\midrule
Cladding         & Ni-201      & 15.8 \\
                 & Hastelloy N & 14.3 \\
                 & Haynes 242  & 13   \\
\bottomrule
\end{tabular}

\end{threeparttable}

\end{table}

\end{document}

在此处输入图片描述

替代方案看起来不太有吸引力:

\documentclass{article}
\usepackage{booktabs, multirow, threeparttable}
\usepackage{siunitx}

\begin{document}
\begin{table}[htpb]
    \centering
    \begin{threeparttable}
        \caption{Material properties of cladding alloys compared to structural alloys at \SI{705}{\celsius}}
        \label{tab:properties}
        \begin{tabular}{@{}r@{}lc}
             \cmidrule[0.08em]{2-3}
            & Material & CTE (\SI{e-3}{\per\celsius}) \\ 
            \cmidrule[0.05em]{2-3}
            \multirow{2}{*}{\llap{Structural alloys \bigg\{\ }} & 316H & 18.8 \\
            & 800H & 17.2 \\ 
            \cmidrule[0.05em]{2-3}
            \multirow{3}{*}{\llap{Claddings \Bigg\{\ }} & Ni-201 & 15.8  \\ 
            & Hastelloy N & 14.3  \\ 
            & Haynes 242 & 13  \\ 
            \cmidrule[0.08em]{2-3}
        \end{tabular}
    \end{threeparttable}
\end{table}
\end{document}

在此处输入图片描述

答案2

编辑: 在下面 OP 评论之后,似乎他希望将列标题为“材料”的列放置在文本宽度的中间。这可以通过将表格移到左侧来实现。这可以通过多种方式实现......使用隐形规则在我threeparttable看来是最简单的。因此,我从第一个版本的答案中更正了我的 MWE:

在此处输入图片描述

\documentclass{article}
\usepackage{booktabs, multirow, threeparttable}
\usepackage{siunitx}
\newlength\tabshift% added

%-------------------------------------------- to show page layout
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\begin{document}
\begin{table}[htpb] 
    %\footnotesize
    \centering
    \begin{threeparttable}
        \caption{Material properties of cladding alloys compared to structural alloys at \SI{705}{\celsius}}
        \label{tab:properties}
        \begin{tabular}{rlS}
             \cmidrule[0.08em]{2-3}
            & Material & {CTE (\SI{e-3}{\per\celsius})} \\
            \cmidrule[0.05em]{2-3}
            \multirow{2}{*}{Structural alloys \bigg\{} & 316H & 18.8 \\
            & 800H & 17.2 \\
            \cmidrule[0.05em]{2-3}
            \multirow{3}{*}{Claddings \Bigg\{} & Ni-201 & 15.8  \\
            & Hastelloy N & 14.3  \\
            & Haynes 242 & 13  \\
            \cmidrule[0.08em]{2-3}
        \end{tabular}
    \end{threeparttable}%
        \rule{0.5\tabshift}{0pt}% added
\end{table}
\end{document}

我使用包将最后一个表列更改为S列类型siunitx。您可以对列进行详细规范S,例如S[table-format=2.1](建议这样做)。在您的特定情况下,两种情况下的结果是相同的。

注释(1):请以后始终提供小而完整的文档(MWE:最小(非)工作示例),就像我上面做的那样。帮助那些愿意帮助你的人。写缺失的序言并不好玩……

笔记2): 以后请更准确地表述您的问题 :)。您收到的两个答案都基于错误的假设(关于您下面的评论)。顺便说一句,表格的原始位置(向左移动之前)似乎很好...

0.5您可以通过改变因素的值来对表格定位进行微调,\rule{0.5\tabshift}{0pt}以便根据您的喜好将表格放置在页面上的最佳位置。

附录: 形成页面上表格更好的视觉居中我将重新设计您的表格,如下所示:

\documentclass{article}
\usepackage{booktabs, makecell, multirow, threeparttable}
\usepackage{siunitx}

%---------------------------------------------------------------%
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\begin{document}
\begin{table}[htpb]
    \centering
    \begin{threeparttable}
        \caption{Material properties of cladding alloys compared to structural alloys at \SI{705}{\celsius}}
        \label{tab:properties}
        \begin{tabular}{rlS}
             \cmidrule[0.08em]{2-3}
            & Material & {CTE (\SI{e-3}{\per\celsius})} \\
            \cmidrule[0.05em]{2-3}
            \multirow{2}{*}{\makecell{Structural\\ alloys} \bigg\{} & 316H & 18.8 \\
            & 800H & 17.2 \\
            \cmidrule[0.05em]{2-3}
            \multirow{3}{*}{Claddings \Bigg\{} & Ni-201 & 15.8  \\
            & Hastelloy N & 14.3  \\
            & Haynes 242 & 13  \\
            \cmidrule[0.08em]{2-3}
        \end{tabular}
    \end{threeparttable}
\end{table}
\end{document}

在此处输入图片描述

答案3

我想将此表的第二列和第三列水平居中

c这可以通过使用所需的列来实现\begin{tabular}{rcc}

相关内容