我对 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}
该表格非常完美,只是我想将其中的值水平居中。在我的研究中,我发现,我应该使用\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}|}
这样,我确实可以将值居中,但它也会完全改变表格布局/外观。有没有其他方法可以让值居中,而不改变布局?
答案1
我建议您使用tabularx
嵌套在sidewaystable
环境中的环境。设置环境的宽度tabularx
,X
并对 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
命令的更多信息,请参阅此链接。