使用 PgfplotsTable 对齐小数元组

使用 PgfplotsTable 对齐小数元组

这个问题,Jake 给出了一个很棒的答案,展示了如何使用 PgfplotsTable 从文件中读取制表符分隔的数据,并以科学计数法排版解析的小数,以使列中的所有小数都在小数点处对齐。这里有一张图片可以说明我的意思。

小数表

Jake 的解决方案是否可以推广到允许使用小数元组?更具体地说,假设我希望排版一个数字数据表,其中一些是我想表示为元组的向量。所有小数(包括元组的组成部分)都记录在一个制表符分隔的文本文件中。这是一个示例文本文件。

Iteration   x_1 x_2
1   13.44   0.0000000448
2   1232.1249   -393.0000424
3   0.01    1

我希望输出看起来像下面的图像。

在此处输入图片描述

编辑

我意识到将整个元组放在一列下可能不是一个好主意,因为这会导致不必要的混乱,使表格更难阅读。请参阅我的部分答案以获取更多信息,以及由于数据性质可能出现的其他问题。

感谢您的帮助!

答案1

我这里有一个部分解决方案,因为我没有实现解析文件输入的功能。但是,在查看输出后,我可能会建议将组件向量排版在单独的列中。逗号(以及可能的括号和转置上标)给表格添加了很多视觉混乱。我不会创建一个名为 $\mathbf{x}$ 的列,而是为向量的每个组件创建一列(例如 $x_1$、...、$x_n$)。这也大大简化了 LaTeX 代码。

下面是我所寻找的输出类型的图像以及代码。要使括号与小数点齐平,您需要对选项进行修改table-formatsiunitx如果最左边的一些数字以负号为前缀,而其他数字则没有,这会导致美观问题。对于没有以符号为前缀的数字,左括号和小数点的整数部分之间会有间隙。

\documentclass[11pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{booktabs}
\usepackage{siunitx}

\begin{document}
\begin{tabular}{
    S
    @{(}
    S[round-mode=figures, round-precision=4, scientific-notation=true, table-format=1.3e-1]@{,\ }
    S[round-mode=figures, round-precision=4, scientific-notation=true, table-format=-1.3e-1]
    @{$)^t$}
}
\toprule
\multicolumn{1}{c}{$k$} & \multicolumn{2}{c}{$\mathbf{x_k}$} \\
\midrule
1 & 13.44 & 0.00000004448 \\
2 & 1232.1249 & -393.0000424 \\
3 & 0.1 & 1 \\
\bottomrule
\end{tabular}
\end{document}

在此处输入图片描述

相关内容