表格水平居中——数组包的替代方案

表格水平居中——数组包的替代方案

我对 LaTex 还很陌生,在表格中居中值时遇到了一些问题。我创建了如下所示的表格。

\documentclass[11pt. oneside]{article}
\usepackage{makecell}
\usepackage{geometry}                       % See geometry.pdf to learn the layout options. There are lots.
\geometry{letterpaper}                          % ... or a4paper or a5paper or ... 
\geometry{landscape}                        % Activate for rotated page geometry
\usepackage{graphicx}               % Use pdf. png. jpg\includegraphics[]{../../../../../../../Desktop/CenterTest.pdf}
\usepackage{array}                              % TeX will automatically convert eps --> pdf in pdflatex        
\usepackage{amssymb}
\usepackage{graphicx}

\usepackage[
singlelinecheck=false
]{caption}


\begin{document}
\begin{table}[h]
\centering
\caption{Overview of measures.}
\label{This is a label}
\begin{tabular}{llllllllllll}
\hline
\thead{Locus} & \thead{Population (\textit{N})} & \thead{Sequence\\length} &     \thead{Number of polymorphic\\sites} & \thead{Number of\\alleles} &     \thead{Allelic\\richness} & \thead{Amino acid\\variants} &     \thead{Nucleotide\\diversity}   & \thead{Haplotype\\diversity (S.D.)} & \thead{Ho}     & \thead{He} & \thead{H.W.E. \textit{P} (S.E.)} \\
\hline \\
Numb1 & S (10)  &       & 3 & 1 & 5.60  & 1 & 12.4  & 0.423     & 0.50  & 0.43  & 0.006 \\
   & F(10)      &       & 2 & 6 & 5.80  & 2 & 13.6  & 0.423     & 0.70  & 0.45      & 0.309 (0.017) \\
   & S(7)       &       & 1 & 2 & 1.00  & 1 & 0     & 0.123     & 0.00  & 0.00      & NA                \\
   & Tot (27)       & 423 bp  & 10  & 8 &       & 2 & 12.4  & 0.321 (0.037) &       &           &                 \\
Numb2 & S (11)  &           & 4 & 5 & 5.12  & 1 & 3.4       & 0.423     & 0.73  & 0.32      & 1.000 (0.000)   \\
   & F (10)         &           & 3 & 1 & 3.12  & 2 & 12.3  & 0.453     & 0.90  & 0.78      & 1.000 (0.000)   \\
   & S (10)         &           & 2 & 1 & 4.32  & 1 & 1     & 0.246     & 0.00      & 0.01      & NA               \\
   & Tot(31)        & 324 bp  & 1   & 4 &       & 2 & 10.9  & 0.625 (0.067) &               &           &                  \\  
\end{tabular}%
%}
\end{table}
\end{document}

表格1

该表格非常完美,只是我想将其中的值水平居中。在我的研究中,我发现,我应该使用\usepackage{array}然后定义一个列类型\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}并创建表格:

\begin{tabular}{|P{2.5cm}|P{2.5cm}|P{2.5cm}|P{2.5cm}|P{2.5cm}|P{2.5cm}|P{2.5cm}|P{2.5cm}|P{2.5cm}|P{2.5cm}|P{2.5cm}|P{2.5cm}|}

这样,我确实可以将值居中,但它也会完全改变表格布局/外观。有没有其他方法可以让值居中,而不改变布局?

表2

答案1

我建议您使用tabularx嵌套在sidewaystable环境中的环境。设置环境的宽度tabularxX并对 12 列中的第 9 列使用居中版本的列类型;这样做将允许自动换行(如果需要)。关于其余三列:我建议您l为第一列使用列类型,并c为以“Ho”和“He”为标题的列使用列类型。

在此处输入图片描述

\documentclass[11pt,letterpaper]{article}
\usepackage[margin=1in]{geometry}  % select page-related parameters
\usepackage{rotating} 
\usepackage[singlelinecheck=false]{caption}
\usepackage{tabularx,booktabs}
\newcolumntype{C}{>{\centering\arraybackslash\hspace{0pt}}X}

\begin{document}
\begin{sidewaystable}
\caption{Overview of measures.}
\label{This is a label}
\begin{tabularx}{\textwidth}{@{}l*{8}{C}ccC@{}}
\toprule
Locus & Population (\textit{N}) & Sequence length & Number of polymorphic sites & Number of alleles & Allelic richness & Amino acid variants & Nucleo\-tide diversity & Haplotype diversity (S.D.) & Ho & He & H.W.E. \textit{P} (S.E.) \\
\midrule
Numb1 & S (10) & & 3 & 1 & 5.60 & 1 & 12.4 & 0.423 & 0.50 & 0.43 & 0.006 \\
      & F(10) & & 2 & 6 & 5.80 & 2 & 13.6 & 0.423 & 0.70 & 0.45 & 0.309 (0.017) \\
      & S(7) & & 1 & 2 & 1.00 & 1 & 0 & 0.123 & 0.00 & 0.00 & NA \\
      & Tot (27) & 423 bp & 10 & 8 & & 2 & 12.4 & 0.321 (0.037) & & & \\
Numb2 & S (11) & & 4 & 5 & 5.12 & 1 & 3.4 & 0.423 & 0.73 & 0.32 & 1.000 (0.000) \\
      & F (10) & & 3 & 1 & 3.12 & 2 & 12.3 & 0.453 & 0.90 & 0.78 & 1.000 (0.000) \\
      & S (10) & & 2 & 1 & 4.32 & 1 & 1 & 0.246 & 0.00 & 0.01 & NA \\
      & Tot(31) & 324 bp & 1 & 4 & & 2 & 10.9 & 0.625 (0.067) & & &\\ 
\bottomrule
\end{tabularx}
\end{sidewaystable}
\end{document}

附录:如果您不想在表格主体的单元格中允许换行,建议使用不间断空格(~),切换到较小的字体大小(例如,\footnotesize),并将列间空白的值减少三分之一(从 6 点减少到 4 点)。

在此处输入图片描述

\documentclass[11pt,letterpaper]{article}
\usepackage[margin=1in]{geometry}  % select page-related parameters
\usepackage{rotating} 
\usepackage[singlelinecheck=false]{caption}
\usepackage{tabularx,booktabs}
\newcolumntype{C}{>{\centering\arraybackslash\hspace{0pt}}X}

\begin{document}
\begin{sidewaystable}
\footnotesize
\setlength\tabcolsep{4pt}
\caption{Overview of measures.}
\label{This is a label}
\begin{tabularx}{\textwidth}{@{}l*{8}{C}ccC@{}}
\toprule
Locus & Population (\textit{N}) & Sequence length & Number of polymorphic sites & Number of alleles & Allelic richness & Amino acid variants & Nucleo\-tide diversity & Haplotype diversity (S.D.) & Ho & He & H.W.E. \textit{P} (S.E.) \\
\midrule
Numb1 & S (10) & & 3 & 1 & 5.60 & 1 & 12.4 & 0.423 & 0.50 & 0.43 & 0.006 \\
      & F(10) & & 2 & 6 & 5.80 & 2 & 13.6 & 0.423 & 0.70 & 0.45 & 0.309~(0.017) \\
      & S(7) & & 1 & 2 & 1.00 & 1 & 0 & 0.123 & 0.00 & 0.00 & NA \\
      & Tot (27) & 423 bp & 10 & 8 & & 2 & 12.4 & 0.321~(0.037) & & & \\ \addlinespace
Numb2 & S (11) & & 4 & 5 & 5.12 & 1 & 3.4 & 0.423 & 0.73 & 0.32 & 1.000~(0.000) \\
      & F (10) & & 3 & 1 & 3.12 & 2 & 12.3 & 0.453 & 0.90 & 0.78 & 1.000~(0.000) \\
      & S (10) & & 2 & 1 & 4.32 & 1 & 1 & 0.246 & 0.00 & 0.01 & NA \\
      & Tot(31) & 324 bp & 1 & 4 & & 2 & 10.9 & 0.625~(0.067) & & &\\ 
\bottomrule
\end{tabularx}
\end{sidewaystable}
\end{document}

答案2

要将元素置于表格的中心,您只需将所有 l 替换为 c,如下所示:

\begin{tabular}{|c|c|}
1 & 2 \\
\hline
3 & 4 \\
\hline
\end{tabular}

答案3

我现在发现 siuntix 包可以满足我的需求。

\documentclass[19pt. oneside]{article} 
\usepackage{geometry}
\geometry{landscape}  
\geometry{letterpaper}
\usepackage{makecell}
\usepackage{booktabs}
\usepackage{siunitx}            
\usepackage{array}                              
\usepackage{changepage}
\usepackage[
singlelinecheck=false 
]{caption}



\usepackage[
singlelinecheck=false
]{caption}


\newcommand{\boldentry}[2]{%
  \multicolumn{1}{S[table-format=#1,
                   mode=text,
                    text-rm=\fontseries{b}\selectfont
                   ]}{#2}}

\begin{document}
\thispagestyle{empty} %Removes page number
\begin{table}[h]
 \begin{adjustwidth}{-3cm}{} %Adjusts table to the left, so all can be seen
    \caption{This is the caption}
    \begin{tabular}{lSSSSSSSSSSl} \toprule
{Header 1} & {\shortstack{Header (\textit{2})}} & {\shortstack{Header\\number     3}} & {\shortstack{Header\\ number 4}} &{ \shortstack{Header\\ 5}} &     {\shortstack{Header\\number 6}} & {\shortstack{Header\\number 7}} & {Header number (8)}   & {\shortstack{Header\\number (9)}} & {Header number 10} & {Header number 11} & {\shortstack{Header \textit{Number 12}}} \\
\midrule
{TLR1234}       & {Total (10)}  & {100 mm}  & 100   & 2.00  & 300   & 400   & 500       & 600 {(700)}   &               &               &                 \\
& {ST (10)}         &               & 100           & 2.00          & 300           & 400       & 500       & 600   & 700           & 800   & 900 \\
& {FG (10)}         &               & 100       & 20.13         & 300        & 400      & 500       & 600       & 700           & 800   & {900 (1000)} \\
& {SN (10)}             &           & 100           & 20.02        & 300        & 400       & 500       & 600       & 700           & 800       & 900                \\
 \\ \bottomrule
\end{tabular}
 \end{adjustwidth}
\end{table}

\end{document}

这样,我可以让表格的条目按小数点对齐,同时列本身与标题的中心对齐。如下所示:

对齐

答案4

我不知道我是否得到了我想要的东西,但我愿意尝试一下。

下面的代码是如何将表格中的一行与其他行对齐的示例:

\documentclass[12pt]{article}
\begin{document}
\begin{table}
\begin{tabular}{|c|c|r|r|}
\hline
Centered&Centered&Right&Right\\
\hline
Centered&\multicolumn{1}{l|}{Left}&\multicolumn{1}{l|}{Left}&r\\
\hline
\end{tabular}
\end{table}
\end{document}

您只需使用\multicolumn命令将相关单元格对齐即可。您真正要做的是告诉单元格它是一个多列单元格,大小为一个单元格,并按您想要的对齐方式排列。

有关\multicolumn命令的更多信息,请参阅此链接

相关内容