在 2 列环境中使表格适合 1 列

在 2 列环境中使表格适合 1 列

我想让下面的表格在双列文章环境中适合一列。我在考虑要么预定义列宽,要么重新缩放表格以使其适合一列。有人能帮我吗?提前谢谢。

\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*将环境的目标宽度设置\columnwidth0.9\textwidth

  • 将长度参数设置\tabcolsep0pt(默认值:6pt),让 LaTeX 计算出可能的列间空白填充量

  • 去掉多余的\centering指令并删除该\small指令

补充三条评论:

  • 切勿在tabular*环境中使用垂直规则。请用\hlinebooktabs 包中间距合适的宏进行替换:\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适合表列宽度的尺寸。

你在这里

相关内容