我想让下面的表格在双列文章环境中适合一列。我在考虑要么预定义列宽,要么重新缩放表格以使其适合一列。有人能帮我吗?提前谢谢。
\documentclass[twoside,twocolumn,9pt]{article}
\usepackage{sectsty}
\usepackage{extsizes}
\usepackage[super,sort&compress,comma]{natbib}
\usepackage[version=3]{mhchem}
\usepackage[left=1.5cm, right=1.5cm, top=1.785cm, bottom=2.0cm]{geometry}
\usepackage{balance}
\usepackage{mathptmx}
\usepackage{graphicx}
\usepackage{lastpage}
\usepackage[format=plain,justification=justified,singlelinecheck=false,font={stretch=1.125,small,sf},labelfont=bf,labelsep=space]{caption}
\usepackage{float}
\usepackage{fancyhdr}
\usepackage{fnpos}
\usepackage[english]{babel}
\addto{\captionsenglish}{%
\renewcommand{\refname}{References}
}
\usepackage{array}
\usepackage{droidsans}
\usepackage{charter}
\usepackage[T1]{fontenc}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{setspace}
\usepackage[compact]{titlesec}
\usepackage{hyperref}
\usepackage{amsmath}
\usepackage{subfig}
\usepackage{siunitx}
\usepackage{media9}%
%Define extra SI units
\DeclareSIUnit\bar{bar}
\DeclareSIUnit\mAh{mAh}
\usepackage{textcomp}
\usepackage{chemformula}
\usepackage{IEEEtrantools}
\begin{document}
\begin{table}[!h]
\centering
\small
\caption{Caption1.}
\label{table1}
\begin{tabular*}{0.9\textwidth}{@{\extracolsep{\fill}}l|cccccc}
\hline
\textbf{Column1} & \textbf{Column 2} & \textbf{Column 3} & \textbf{$N_{\text{column4}}$} & \textbf{$N_{\text{column5}}$} & \textbf{$N_{\text{column6}}$} & \textbf{$N_{column7}}$} \\
\hline
BLA & 1.0 & 1:6 & 78 & 468 & -- & 546 \\
& 3.0 & 1:2 & 183 & 366 & -- & 549 \\
\hline
BLABLAA & 1.0 & 1:1.2:2.2 & 125 & 150 & 275 & 550 \\
& 1.2 & 1:1.2:1.6 & 145 & 174 & 232 & 551 \\
& 1.5 & 1:1.2:1.2 & 172 & 172 & 206 & 550 \\
& 2.0 & 1:0.7:0.9 & 212 & 148 & 191 & 551 \\
& 3.0 & 1:0.5:0.6 & 262 & 131 & 157 & 550 \\
\hline
BLABLAA & 1.0 & 1:1.2:2.4 & 120 & 144 & 288 & 552 \\
& 1.2 & 1:1.2:1.8 & 138 & 166 & 288 & 552 \\
& 1.5 & 1:1.2:1.4 & 162 & 162 & 227 & 551 \\
& 2.0 & 1:0.8:1.0 & 196 & 157 & 196 & 549 \\
& 3.0 & 1:0.5:0.7 & 250 & 125 & 175 & 550 \\
\hline
\end{tabular*}
\end{table}
\end{document}
约翰
答案1
评论部分太长了:
- 即使将不正确的 替换为
\textwidth
(\columnwidth
或\linewidth
),您的表格仍然太宽。不过,我宁愿tabular
在其中使用简单的环境和较小的字体大小(\footnotesize) - 最后一列标题有语法错误。应该
\textbf{$N_{column7}}$}
改为\textbf{$N_{\text{column7}}$}
- 为了使表格更易读,我建议您使用一些列标题的缩写
\documentclass[twoside,twocolumn]{article}
\usepackage{extsizes}
\usepackage{lipsum} % <--- for dummy text filler
\begin{document}
\lipsum[1]
\begin{table}[ht]
\centering
\footnotesize
\caption{Caption1.}
\setlength\tabcolsep{3pt} % <---
\label{table1}
\begin{tabular}{@{} l*{6}{c} @{}}
\hline
\textbf{Col. 1} & \textbf{Col. 2} & \textbf{Col.l 3} & \textbf{Col. 4}
& \textbf{Col. 5} & \textbf{Col.l 6} & \textbf{Col. 7} \\
\hline
BLA & 1.0 & 1:6 & 78 & 468 & -- & 546 \\
& 3.0 & 1:2 & 183 & 366 & -- & 549 \\
\hline
BLABLAA & 1.0 & 1:1.2:2.2 & 125 & 150 & 275 & 550 \\
& 1.2 & 1:1.2:1.6 & 145 & 174 & 232 & 551 \\
& 1.5 & 1:1.2:1.2 & 172 & 172 & 206 & 550 \\
& 2.0 & 1:0.7:0.9 & 212 & 148 & 191 & 551 \\
& 3.0 & 1:0.5:0.6 & 262 & 131 & 157 & 550 \\
\hline
BLABLAA & 1.0 & 1:1.2:2.4 & 120 & 144 & 288 & 552 \\
& 1.2 & 1:1.2:1.8 & 138 & 166 & 288 & 552 \\
& 1.5 & 1:1.2:1.4 & 162 & 162 & 227 & 551 \\
& 2.0 & 1:0.8:1.0 & 196 & 157 & 196 & 549 \\
& 3.0 & 1:0.5:0.7 & 250 & 125 & 175 & 550 \\
\hline
\end{tabular}
\end{table}
\lipsum[2-7]
\end{document}
另一种选择是使用以下两列写表格
\begin{table*}
\centering
\begin{tabular}{<column specification}
% table
\end{tabular}
\end{table*}
插入后,表格将出现在下一页的顶部。
编辑: 考虑的是@Mico 评论
附录:
向您指出另一种使用包编写表格的可能性tabularray
:
\documentclass[twoside,twocolumn, 9pt]{article}
\usepackage{extsizes}
\usepackage{tabularray}
\UseTblrLibrary{amsmath, booktabs}
\usepackage{lipsum} % <--- for dummy text filler
\begin{document}
\lipsum[1]
\begin{table}[ht]
\footnotesize
\caption{Caption1.}
\label{table1}
\begin{tblr}{colsep=3pt,
colspec = {@{} l Q[c] X[c] *{4}{X[c, $]} @{}},
row{1} = {4-7}{mode=math}
}
\toprule
Col. 1 & Col. 2 & Col.l 3 & Col. 4
& N_{\text{col5}} & N_{\text{col6}} & N_{\text{col7}} \\
\midrule
BLA & 1.0 & 1:6 & 78 & 468 & -- & 546 \\
& 3.0 & 1:2 & 183 & 366 & -- & 549 \\
\midrule
BLABLAA & 1.0 & 1:1.2:2.2 & 125 & 150 & 275 & 550 \\
& 1.2 & 1:1.2:1.6 & 145 & 174 & 232 & 551 \\
& 1.5 & 1:1.2:1.2 & 172 & 172 & 206 & 550 \\
& 2.0 & 1:0.7:0.9 & 212 & 148 & 191 & 551 \\
& 3.0 & 1:0.5:0.6 & 262 & 131 & 157 & 550 \\
\midrule
BLABLAA & 1.0 & 1:1.2:2.4 & 120 & 144 & 288 & 552 \\
& 1.2 & 1:1.2:1.8 & 138 & 166 & 288 & 552 \\
& 1.5 & 1:0.5:0.7 & 250 & 125 & 175 & 550 \\
\bottomrule
\end{tblr}
\end{table}
\lipsum[2-7]
\end{document}
答案2
除了修复标题行中的语法错误之外,我建议您
缩写标题单元格中的部分文本
tabular*
将环境的目标宽度设置\columnwidth
为0.9\textwidth
将长度参数设置
\tabcolsep
为0pt
(默认值:6pt),让 LaTeX 计算出可能的列间空白填充量去掉多余的
\centering
指令并删除该\small
指令
补充三条评论:
切勿在
tabular*
环境中使用垂直规则。请用\hline
booktabs 包中间距合适的宏进行替换:\toprule
、\midrule
、\addlinespace
和\bottomrule
。不要使用大胆的除非你想让读者觉得你是一个喜欢喊他们的读者。当然,表格的标题行工作得很好无粗体。
我会
\usepackage{mathptmx}
在序言中删除该指令,因为它稍后会被该\usepackage{charter}
指令破坏。
\documentclass[twocolumn,twosided,9pt]{article}
\usepackage{sectsty}
\usepackage{extsizes}
\usepackage[super,sort&compress,comma]{natbib}
\usepackage[version=3]{mhchem} % don't you want 'version=4'?
\usepackage[left=1.5cm, right=1.5cm, top=1.785cm, bottom=2.0cm]{geometry}
\usepackage{balance}
%%%\usepackage{mathptmx} % this command gets clobbered later
\usepackage{graphicx}
\usepackage{lastpage}
\usepackage[format=plain,%justification=justified,
singlelinecheck=false,
font={stretch=1.125,small,sf},
labelfont=bf,
labelsep=space]{caption}
\usepackage{float}
\usepackage{fancyhdr}
\usepackage{fnpos}
\usepackage[english]{babel}
\addto{\captionsenglish}{%
\renewcommand{\refname}{References}
}
\usepackage{array}
\usepackage{droidsans}
\usepackage{charter}
\usepackage[T1]{fontenc}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{setspace}
\usepackage[compact]{titlesec}
\usepackage{hyperref}
%from line below the packages have been added by Wessel van Ekeren
\usepackage{amsmath}
\usepackage{subfig}
\usepackage{siunitx}
\usepackage{media9}%
%Define extra SI units
\DeclareSIUnit\bar{bar}
\DeclareSIUnit\mAh{mAh}
\usepackage{textcomp}
\usepackage{chemformula}
\usepackage{IEEEtrantools}
%% new:
\usepackage{lipsum}
\usepackage{booktabs} % for well-spaced horizontal lines
\begin{document}
\begin{table}[!h]
%\centering % <-- redundant
\setlength\tabcolsep{0pt} % <-- make LaTeX figure out intercol whitespace padding
%\small % <-- not needed
\caption{Caption1.}
\label{table1}
% use '\columnwidth' as the target width of 'tabular*' env.:
\begin{tabular*}{\columnwidth}{@{\extracolsep{\fill}} l cc cccc }
\toprule
Col 1 & Col 2 & Col 3 & $N_{\text{col4}}$ & $N_{\text{col5}}$ & $N_{\text{col6}}$ & $N_{\text{col7}}$ \\
\midrule
BLA & 1.0 & 1:6 & 78 & 468 & -- & 546 \\
& 3.0 & 1:2 & 183 & 366 & -- & 549 \\
\addlinespace
BLABLAA & 1.0 & 1:1.2:2.2 & 125 & 150 & 275 & 550 \\
& 1.2 & 1:1.2:1.6 & 145 & 174 & 232 & 551 \\
& 1.5 & 1:1.2:1.2 & 172 & 172 & 206 & 550 \\
& 2.0 & 1:0.7:0.9 & 212 & 148 & 191 & 551 \\
& 3.0 & 1:0.5:0.6 & 262 & 131 & 157 & 550 \\
\addlinespace
BLABLAA & 1.0 & 1:1.2:2.4 & 120 & 144 & 288 & 552 \\
& 1.2 & 1:1.2:1.8 & 138 & 166 & 288 & 552 \\
& 1.5 & 1:1.2:1.4 & 162 & 162 & 227 & 551 \\
& 2.0 & 1:0.8:1.0 & 196 & 157 & 196 & 549 \\
& 3.0 & 1:0.5:0.7 & 250 & 125 & 175 & 550 \\
\bottomrule
\end{tabular*}
\end{table}
\lipsum[2] % filler text
\end{document}
答案3
避免表格中的重复。除了减少间距外,这也是一种很好的做法。例如,X 列或者N 列 X可以放在额外的一行中并作为子标题,而下一行将包含其他索引。我提供的表格可能不是您所问的,但希望可以给您一些想法
编辑。感谢 Mico 和对缺失包的评论。
应用原始代码中的设置后,我意识到表格不需要全列宽。但是,在这种情况下,左对齐的标题不会与表格对齐。如果需要这种效果,可以将表格放在里面threeparttable
\documentclass[twoside,twocolumn,9pt]{extarticle}
\usepackage[left=1.5cm, right=1.5cm, top=1.785cm, bottom=2.0cm]{geometry}
\usepackage[compact]{titlesec}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{array}
\usepackage{threeparttable}
\usepackage{charter}
% \usepackage{sectsty}
\usepackage[super,sort&compress,comma]{natbib}
\usepackage[version=3]{mhchem}
\usepackage{chemformula}
\usepackage{balance}
\usepackage{mathptmx}
% \usepackage{graphicx}
\usepackage{lastpage}
\usepackage[format=plain,justification=justified,singlelinecheck=false,font={stretch=1.125,small,sf},labelfont=bf,labelsep=space]{caption}
\usepackage{float}
\usepackage{fancyhdr}
\usepackage{fnpos}
\usepackage[english]{babel}
\usepackage{droidsans}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
%from line below the packages have been added by Wessel van Ekeren
\usepackage{subfig}
\usepackage{media9}%
\usepackage{siunitx}
\usepackage{textcomp}
% Define extra SI units
\DeclareSIUnit\bar{bar}
\DeclareSIUnit\mAh{mAh}
\addto{\captionsenglish}{%
\renewcommand{\refname}{References}}
\usepackage{booktabs}
\usepackage{bm}
\usepackage{kantlipsum}
\begin{document}
\kant[1]
\begin{table}[tbh]
\small
\centering
\setlength\tabcolsep{0pt}
\begin{threeparttable}
\caption{Caption1.}
\label{table1}
\begin{tabular*}{0.8\linewidth}{
l @{\extracolsep{\fill}}
*2{wc{1cm}}
*4{S[table-format=3.0]}
}
\toprule
& \multicolumn{2}{c}{\textbf{Columns \textit{x}}}
& \multicolumn{4}{c}{\(\bm{N}_\textbf{column \itshape x}\)} \\
\cmidrule{2-3}\cmidrule{4-7}
\multicolumn{1}{r}{\textbf{\textit{x}:}} & \textbf{1} & \textbf{2} & \textbf{3} & \textbf{4} & \textbf{5} & \textbf{6} \\
\midrule[\heavyrulewidth]
BLA & 1.0 & 1:6 & 78 & 468 & {--} & 546 \\
& 3.0 & 1:2 & 183 & 366 & {--} & 549 \\
\midrule
BLABLAA & 1.0 & 1:1.2:2.2 & 125 & 150 & 275 & 550 \\
& 1.2 & 1:1.2:1.6 & 145 & 174 & 232 & 551 \\
& 1.5 & 1:1.2:1.2 & 172 & 172 & 206 & 550 \\
& 2.0 & 1:0.7:0.9 & 212 & 148 & 191 & 551 \\
& 3.0 & 1:0.5:0.6 & 262 & 131 & 157 & 550 \\
\midrule
BLABLAA & 1.0 & 1:1.2:2.4 & 120 & 144 & 288 & 552 \\
& 1.2 & 1:1.2:1.8 & 138 & 166 & 288 & 552 \\
& 1.5 & 1:1.2:1.4 & 162 & 162 & 227 & 551 \\
& 2.0 & 1:0.8:1.0 & 196 & 157 & 196 & 549 \\
& 3.0 & 1:0.5:0.7 & 250 & 125 & 175 & 550 \\
\bottomrule
\end{tabular*}
\end{threeparttable}
\end{table}
\kant
\end{document}
答案4
您需要使用\linewidth
而不是\textwidth
。后者看起来给出的是整个页面宽度而不是一列宽度。
\begin{document}
\begin{table}[!h]
\centering
\tiny
\caption{Caption1.}
\label{table1}
\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}l|cccccc}
\hline
\textbf{Column1} & \textbf{Column 2} & \textbf{Column 3} & \textbf{$N_{\text{column4}}$} & \textbf{$N_{\text{column5}}$} & \textbf{$N_{\text{column6}}$} & \textbf{$N_{column7}$} \\
\hline
BLA & 1.0 & 1:6 & 78 & 468 & -- & 546 \\
& 3.0 & 1:2 & 183 & 366 & -- & 549 \\
\hline
BLABLAA & 1.0 & 1:1.2:2.2 & 125 & 150 & 275 & 550 \\
& 1.2 & 1:1.2:1.6 & 145 & 174 & 232 & 551 \\
& 1.5 & 1:1.2:1.2 & 172 & 172 & 206 & 550 \\
& 2.0 & 1:0.7:0.9 & 212 & 148 & 191 & 551 \\
& 3.0 & 1:0.5:0.6 & 262 & 131 & 157 & 550 \\
\hline
BLABLAA & 1.0 & 1:1.2:2.4 & 120 & 144 & 288 & 552 \\
& 1.2 & 1:1.2:1.8 & 138 & 166 & 288 & 552 \\
& 1.5 & 1:1.2:1.4 & 162 & 162 & 227 & 551 \\
& 2.0 & 1:0.8:1.0 & 196 & 157 & 196 & 549 \\
& 3.0 & 1:0.5:0.7 & 250 & 125 & 175 & 550 \\
\hline
\end{tabular*}
\end{table}
\end{document}
\small
对于单列表格来说也太大了,需要使用\tiny
适合表列宽度的尺寸。