如何将 pgfplotstable 中的列与科学计数法的点对齐?

如何将 pgfplotstable 中的列与科学计数法的点对齐?

当我尝试对齐 pgfplots 表中的值时,如果科学计数法中的指数有更多数字,就会遇到问题。

目前我使用的风格:

columns/0/.style={column type={r},column name=\makecell{Column 0},sci,sci 10e,precision=3, column type/.add={}{@{\hspace{1em}}}},

当我有如下值时,现在遇到了问题

1.1234 · 10⁹
 1.12 · 10¹¹

如果没有右对齐,我得到

1.1234 · 10⁹
1.12 · 10¹¹

我想要的是

1.1234 · 10⁹
  1.12 · 10¹¹

或者用零填充

1.1234 · 10⁹
1.1200 · 10¹¹

示例代码:

\documentclass[a4paper,10pt]{article}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstabletypeset[
    columns/1/.style={column type={r},sci,sci 10e,precision=3, column type/.add={}{@{\hspace{1em}}}},
    col sep=&,
    row sep=\\,
]{
    1 & 1234000000   \\
    2 & 120000000000 \\
}
\end{document}

答案1

您可以使用 siunitx 的 S 类型列。

\documentclass[a4paper,10pt]{article}
\usepackage{siunitx} % Formats the units and values
\usepackage{pgfplotstable}

\usepackage[hang,bf,small]{caption}
\begin{document}
  \pgfplotstabletypeset[
  columns/1/.style={column type={r},sci,sci 10e,precision=3, column type/.add={}{@{\hspace{1em}}}},
  col sep=&,
  row sep=\\,
  ]{
    1 & 1234000000   \\
    2 & 120000000000 \\
  }

  \pgfplotstabletypeset[
  string type,
  columns/1/.style={column type={S[
      round-mode=places,
      round-precision = 3,
      exponent-mode = scientific,
      drop-zero-decimal=true,
      table-format=1.3e1,
      ]}},
  col sep={&},
  row sep={\\},
  header=false,
  ]{
    1 & 1234000000   \\
    2 & 120000000000 \\
  }
\end{document}

产生

在此处输入图片描述

答案2

我现在使用sci,sci zerofill,sci 10e左对齐列的样式column type={l}。它将点对齐,因为现在它们左边的所有数字都具有相同的长度。

相关内容