减少表中某些条目的大小

减少表中某些条目的大小

在 epsilon 列中,如何使小数点后四位数字形成的条目与三位数字形成的条目占用相同的空间? 在此处输入图片描述

编辑:假设 0.015 为 n 厘米/英寸宽。

...占用与三位数字组成的条目相同的空间?

我的意思是,我怎样才能让 0.0222 这样的数字占据的面积不超过 n 厘米/英寸?

编辑 2:我想这样做是因为多余的数字导致这一侧的表格被放在下面。

答案1

你可能想看看希尼奇包。它提供用于在表中对齐数字的列类型S。有关分组等问题,请查看包文档。

我提出以下解决方案:

\documentclass{scrartcl}
\usepackage{fontspec}
\usepackage{booktabs}
\usepackage{siunitx}

\setmainfont[Numbers={Monospaced}]{SourceSerifPro}

\begin{document}

\begin{table}[htb]
\caption{A table with some numbers.}
\begin{center}
\begin{tabular}{
    S[table-format = 1.2]
    S[table-format = 2.1]
    S[table-format = 1.4]
    S[table-format = 1.7]
    S[table-format = 1.7]
}
\toprule
{\(\gamma\)} & {\(C\)} & {\(\epsilon\)} & {TR error} & {VS error}\\ \midrule
0.09 & 20 & 0.01 & 0.5158379 & 1.1113319\\
0.09 & 20 & 0.0175 & 0.0007536 & 1.1128601\\
0.1 & 17.5 & 0.02 & 0.4906799 & 1.1131233\\
0.1 & 25 & 0.015 & 0.4372142 & 1.1151788\\ \bottomrule
\end{tabular}
\end{center}
\end{table}

\end{document}

结果:

使用 siunitx 制作的包含一些数字的表格

你可以看到我又做了两件事:

  • 请用书签用于创建漂亮的表格
  • 有些字体像源衬线专业版提供可在表格中使用的等宽数字。当然,对于 otf 或 ttf 字体,您必须使用 lualatex 等编译文档。

答案2

目前尚不清楚您的问题是什么,而且您没有提供任何有关文档类别、页面布局等的信息。目前我们只知道您喜欢并行拥有两个tabular环境。

采用与@Sebastian 答案(+1)类似的方法,您的表格可以格式化如下:

\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}

\begin{document}
    \begin{table}[ht]
    \centering
\begin{tabular}[t]{ S[table-format=1.2]
                    S[table-format=2.1]
                    S[table-format=1.4]}
    \toprule
{$\gamma$} & {$C$} & {$\epsilon$}   \\
    \midrule
0.09 & 20   & 0.01      \\
0.09 & 20   & 0.0125    \\
0.09 & 22.5 & 0.015      \\
    \bottomrule
\end{tabular}
\begin{tabular}[t]{ S[table-format=1.7]
                    S[table-format=1.7]}    
    \toprule
{TR error} & {VS error} \\
    \midrule
0.5158379 & 1.1113319   \\
0.0007536 & 1.1128601   \\
0.0008913 & 1.1130204   \\
    \bottomrule
\end{tabular}
    \end{table}
\end{document}

在此处输入图片描述

(红线表示文本边框)

如果您喜欢将表格连接起来,则将其放在第一个表格\end{tabular}符号后面%

如果您有两列文档,则一列中仍有足够的空间供表格使用:

在此处输入图片描述

编辑: 显然,您希望压缩较长数字的字母宽度,使其与较短数字的宽度相同。可以通过减小字体大小或使用其他字体来实现此要求,这些字体的字母大小较窄,适合此特定数字。考虑第一种可能性,您可以通过以下方式实现:

\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}

\begin{document}
    \begin{table}[ht]
    \centering
\begin{tabular}[t]{ S[table-format=1.2]
                    S[table-format=2.1]
                    S[table-format=1.4]}
    \toprule
{$\gamma$} & {$C$} & {$\epsilon$}   \\
    \midrule
0.09 & 20   & 0.01      \\
0.09 & 20   &\footnotesize 0.0125    \\
0.09 & 22.5 & 0.015      \\
    \bottomrule
\end{tabular}
\begin{tabular}[t]{ S[table-format=1.7]
                    S[table-format=1.7]}
    \toprule
{TR error} & {VS error} \\
    \midrule
0.5158379 & 1.1113319   \\
0.0007536 & 1.1128601   \\
0.0008913 & 1.1130204   \\
    \bottomrule
\end{tabular}
    \end{table}
\end{document}

在此处输入图片描述 我不清楚这种表格格式有什么好处。表格宽度?从上面的 MWE 中你可以看到,你的表格可以毫无问题地适应列宽。但是,你也可以通过减少列\tabcolsep内容单元格边框之间的大小来轻松缩小其宽度。例如

\setlength\tabcolsep{4pt}

从默认值 6 pt 更改为 4 pt,导致5 x 2 x 2pt = 20 pt表格更窄。

我鼓励您重新思考一下您的桌子应该是什么样子。

答案3

我已经解释了既定目标

使小数点后四位数字组成的条目与三位数字组成的条目占用相同的空间

如下:“将数字四舍五入为(最多) 3 位数字”。

如果这个解释是正确的,我建议您使用该siunitx包及其S列类型,因为它可以四舍五入到预先指定的小数位数。

顺便说一句,我会将所有五个数据列中的数字与各自的(显式或隐式)小数标记对齐。

在此处输入图片描述

\documentclass{article}
\usepackage{siunitx,array}
\newcolumntype{T}[1]{S[table-format=#1]}
\sisetup{group-digits=false}

\begin{document}

Without rounding in the $\epsilon$ column:

\begin{tabular}{ | T{1.2} T{2.2} 
                   T{1.4} || 
                   T{1.7} | T{1.7} | }
{$\gamma$} & {$C$} & {$\epsilon$} & {TR error} & {VS error} \\
\hline
0.01 & 20   & 0.01   & 0.5158379 & 1.1113319 \\
0.09 & 17.5 & 0.0125 & 0.5399814 & 1.1150787 \\
0.1  & 25   & 0.015  & 0.4372142 & 1.1151788 \\
\end{tabular}

\bigskip
With rounding to 3 decimal digits:

\begin{tabular}{ | T{1.2} T{2.2} 
                   T{1.3,round-mode=places,round-precision=3} || 
                   T{1.7} | T{1.7} | }
{$\gamma$} & {$C$} & {$\epsilon$} & {TR error} & {VS error} \\
\hline
0.01 & 20   & 0.01   & 0.5158379 & 1.1113319 \\
0.09 & 17.5 & 0.0125 & 0.5399814 & 1.1150787 \\
0.1  & 25   & 0.015  & 0.4372142 & 1.1151788 \\
\end{tabular}

\end{document} 

答案4

注意!如果您在问题中加载表格的代码,则更容易为您提供建议。

我假设你想将列在小数点处对齐,在这种情况下,加载并使用 D{.}{.}{1.4}。

如果你真的想把四位数字压缩到三位数字的空间里,那么加载大批,并使用固定宽度的w列,wc{25pt}。您将收到一些关于“overfull hbox”的警告。

在你的序言中,加载大批

\usepackage{array}

在表格前言中,使用wc{25pt}而不是第 3 列的定义。增加或减少列的宽度,直到两个表格适合。您还可以减少列之间的空间:

\setlength{\tabcolsep}{4pt}

可能的 MWE:

如果它是一个表格:

在此处输入图片描述

\documentclass{article}
\usepackage{array}

\setlength{\tabcolsep}{4pt}
\begin{document}

\begin{tabular}{|c c wc{20pt}||c c|}
$\gamma$ & $C$ & $\epsilon$ & TR error & VS error \\

\hline

0.09 & 20 & 0.01 & 0.5158379 & 1.1113319\\
0.09 & 20 & 0.0175 & 0.0007536 & 1.1128601\\ 


\end{tabular}

\end{document}

或者如果有两个表格:

在此处输入图片描述

\documentclass{article}
\usepackage{array}

\setlength{\tabcolsep}{4pt}
\begin{document}

\begin{tabular}{|c c wc{20pt}|}
$\gamma$ & $C$ & $\epsilon$ \\
\hline
0.09 & 20 & 0.01 \\
0.09 & 20 & 0.0175 \\ 
\end{tabular}
\begin{tabular}{|c c|}
TR error & VS error \\
\hline
0.5158379 & 1.1113319\\
0.0007536 & 1.1128601\\ 
\end{tabular}

\end{document}

相关内容