按比例调整表格大小(而不是文本宽度)

按比例调整表格大小(而不是文本宽度)

我的论文中有几个表格。我希望将它们都缩小一点,缩小到常规尺寸的约 85%。

有很多关于如何使用 来做到这一点的帖子\resizebox,但它们都使用\textwidth以下内容作为基础:

\begin{table}[htbp]
  \centering
  \resizebox{0.85\textwidth}{!}{
        \caption{Table caption}
        \begin{tabular}{|c|c|c|c|}
          \hline
          $t_0~(MeV\cdot fm^3 ) $ & $t_3~(MeV\cdot fm^6)$ & $v_0/\mu~(MeV\cdot fm)$ & $1/\mu~(fm)$\\
          \hline
          $$ -497.726 & $17270$ & $-166.924$ & $0.45979$\\
          \hline
        \end{tabular}
   }
\end{table}

但是使用此代码,它会将表格缩放到文本宽度的 85%。这很好,但我有多个不同宽度的表格,我需要它们都具有相同的字体大小,这样看起来才不会太荒谬。如果我对每个表格都使用上述代码,所有表格的宽度都会相同,这意味着自然宽度的表格字体大小会较小,而自然宽度较窄的表格字体大小会很大。

有没有办法使用\resizebox相对于表格自然大小的大小,而不是\textwidth

答案1

你可以使用

\resizebox{0.85\width}{<contents>}

因为在这种情况下\width指的是的宽度<contents>

无论如何,这不应该包含标题,因为标题应该在整个文档中具有相同的大小。此外,您无法真正控制结果。

最好使用字体大小命令。可以按照 操作\tabcolsep,网站上有几个示例。

\documentclass{article}
\usepackage{graphicx}
\usepackage{siunitx,booktabs,caption}

\sisetup{inter-unit-product=\ensuremath{\cdot}}

\begin{document}

\begin{table}[htbp]
\centering\footnotesize
\caption{Table caption}

\begin{tabular}{
  S[table-format=-3.3]
  S[table-format=5.0]
  S[table-format=-3.3]
  S[table-format=1.5]
}
\toprule
{$t_0$ (\si{\mega\eV\femto\meter\cubed})} & 
{$t_3$ (\si{\mega\eV\femto\meter\tothe{6}})} &
{$v_0/\mu$ (\si{\mega\eV\femto\meter})} &
{$1/\mu$ (\si{\femto\meter})} \\
\midrule
-497.726 & 17270 & -166.924 & 0.45979\\
-497.726 & 17270 & -166.924 & 0.45979\\
-497.726 & 17270 & -166.924 & 0.45979\\
\bottomrule
\end{tabular}

\end{table}

\end{document}

在此处输入图片描述

我使用siunitx,而不是数学模式(这是错误的),作为单位,并正确格式化数据。

答案2

makecell如果您使用(允许单元格中的换行符)和siunitx对齐数字数据,则无需调整表格大小。此外,如果您仅使用水平规则,您将获得更专业的表格booktabs。`标题已加载,以便为标题提供合理的垂直间距多于表。

\documentclass[12pt,leqno]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{siunitx, makecell, caption, booktabs}
\DeclareSIUnit \fm {\femto\meter}


\begin{document}

\begin{table}[!htbp]
\centering\sisetup{table-format=-3.3}
\setcellgapes{6pt}\makegapedcells
\caption{Table caption}
\begin{tabular}{|S|S[table-format=5]|S|S[table-format=1.5]|}
\hline
{\makecell{$t_0 $ \\ (\si{\MeV\cdot \fm^3 })}} & {\makecell{$t_3 $\\\si{(MeV\cdot fm^6)}}} & {\makecell{$v_0/\mu $\\(\si{\MeV\cdot \fm})}} & {\makecell{$1/\mu$\\(\si{\fm})}} \\
\hline
-497.726 & 17270 & -166.924 & 0.45979 \\
\hline
\end{tabular}
\end{table}

\begin{table}[!htbp]
\centering\sisetup{table-format=-3.3}
\caption{Table caption}
\begin{tabular}{SS[table-format=5]SS[table-format=1.5]}
\toprule
{\makecell{$t_0 $ \\ (\si{\MeV\cdot \fm^3 })}} & {\makecell{$t_3 $\\\si{(MeV\cdot fm^6)}}} & {\makecell{$v_0/\mu $\\(\si{\MeV\cdot \fm})}} & {\makecell{$1/\mu$\\(\si{\fm})}} \\
\midrule
-497.726 & 17270 & -166.924 & 0.45979 \\
\bottomrule
\end{tabular}
\end{table}

\end{document} 

在此处输入图片描述

答案3

如果我理解正确,你所面临的问题并不是表格材料太宽,而是太高了也就是说,它不会全部适合垂直在页面上。如果这个理解是正确的,请学习如何使用该longtable环境。

longtable下面显示了您的代码对设置的修改。它还使用包\si的宏siunitx根据国际认可(和要求!)的标准排版科学单位,并使用包的线条绘制宏booktabs使表格具有“开放”的外观。

无论如何,应该尽量避免仅仅为了适合页面而缩放(实际上是缩小)整个表格。

在此处输入图片描述

\documentclass{article}
\usepackage{siunitx,booktabs,array,longtable}
\newcolumntype{C}{>{$}c<{$}} % automatic math-mode version of "c"
\begin{document}
   \begin{longtable}{CCCC}
   %%% define headers and footers
   \caption{Table caption}\label{tab:long}\\
   \toprule
   t_0 & t_3 & v_0/\mu & 1/\mu\\[0.5ex]
   (\si{\mega\eV\femto\meter\cubed}) & (\si{\mega\eV\femto\meter\tothe{6}}) & 
   (\si{\mega\eV\femto\meter}) & (\si{\femto\meter})\\
   \midrule
   \endfirsthead
   %%
   \multicolumn{4}{l}{(Table \ref{tab:long}, continued)}\\
   \toprule
   t_0 & t_3 & v_0/\mu & 1/\mu\\[0.5ex]
   (\si{\mega\eV\femto\meter\cubed}) & (\si{\mega\eV\femto\meter\tothe{6}}) & 
   (\si{\mega\eV\femto\meter}) & (\si{\femto\meter})\\
   \midrule
   \endhead
   %%
   \midrule
   \multicolumn{4}{r}{(continued on following page)}\\
   \endfoot   
   %%
   \bottomrule
   \endlastfoot
   %%% body of longtable
   -497.726 & 17270 & -166.924 & 0.45979\\
   \end{longtable}
\end{document}

答案4

正如您所看到的,调整表格大小会导致文档中的字体不一致,而这并不能很好地替代良好的表格设计。不幸的是,您的示例tabular不是极简working文档,但猜测这是一个标准article类(默认边距、字体大小等),表格占用的文本宽度不到 85%,因此在这种情况下最好的解决办法就是什么也不做(当然,仅在此方面,不要遗漏垂直规则、数学模式中的单位等)。

如果您确实需要改变表格的自然宽度,请注意,您可以通过多种方式固定最大宽度,例如使用p{}列和/或使用tabular*环境(注意星号)或相应包的tabularxtabulary环境,而不改变字体大小。

一般来说,为了在固定的表格宽度内容纳一些较大的内容,最好的选择是:

  1. 重新设计表格(可能是最好的选择)。
  2. 更改列之间的分隔(即\tabcolsep)。
  3. 允许多行单元格(您已经使用p{}tabularxtabulary列实现了这一点,在其他情况下,\parbox在单元格内使用。)
  4. 作为最后的手段,使用\small或 甚至\foonotesize,但在整个文档中尽可能一致地这样做。如果这还不够,请放弃使用较小字体的诱惑,再次回到第 1 点。

接下来是一个使用 的示例tabulary。为简单起见,使用宏 制作了表格和显示最大允许宽度的虚线。请注意,第一个表格的宽度与使用正常宽度(小于 85% 文本宽度)\taby的宽度完全相同,但使用,您可以将其放大到 85% 并换行标题,或者将其缩小到 70% 而不缩小字体。只有在标题必须是一行的情况下,70% 的宽度才需要较小的字体。tabular\tabcolsep

姆韦

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{booktabs,tabulary,fp}
% just for the example
\parindent0pt\parskip1em 
% just for lazyness
\let\Sc\textsuperscript  
\def\taby#1{% Argument is the maximum table width
\FPeval{\result}{round(#1*100,0)}
\makebox[#1\textwidth]{\dotfill \result{} \%\dotfill}\par
\begin{tabulary}{#1\textwidth}{*4{C}}
\toprule 
$t_0$ (MeV·fm\Sc3) & 
$t_3$ (MeV·fm\Sc6) &  
$v_0/\mu$ (MeV·fm) & 
$ 1/\mu$ (fm)\\\midrule
$-$497.726 &
17270 & 
166.924 & 
0.45979\\\bottomrule
\end{tabulary}
\par}

\begin{document}\centering

\taby{.85} 
{\tabcolsep.9em\taby{.85}}     
{\tabcolsep1em\taby{.85}}     
\taby{.75}     
{\footnotesize\tabcolsep1em \taby{.75}} 

\end{document}

相关内容