后处理行时精度设置丢失

后处理行时精度设置丢失

我想从 CSV 文件生成格式化的表格:

  • 每隔一行使用不同的颜色
  • 使用 4 位数字精度

现在我似乎无法同时拥有这两者。

这是一个示例代码来说明我的问题:

测试.csv

a,b,c
d,0.4897844135,0.489789797
e,0.4897844135,0.489789797
f,0.4897844135,0.489789797

测试.tex

\documentclass[a4paper,10pt]{article}

\usepackage{pgfplotstable}
\usepackage{colortbl}

\begin{document}


  \pgfplotstabletypeset[
    dec sep={$,$},
    col sep=comma,
    columns={a,b,c},
    columns/a/.style={string type, column type={|c}},
    columns/b/.style={precision=4, column type={|c}},
    columns/c/.style={precision=4, column type={|c|}},
    every head row/.style={before row=\hline,after row=\hline},
    every row/.style={after row=\hline},
    every last row/.style={after row=\hline},
    postproc cell content/.code={
        \ifodd\pgfplotstablerow\relax
        \else
            % ah - an even row number.
            % ah - introduce a cell color:
            \pgfkeysalso{@cell content={\cellcolor[gray]{0.9}#1}}%
        \fi
    }
    ,]{test.csv}
  }


\end{document}

输出: 插图

请注意,我还丢失了小数点分隔符设置。

我应该在代码中添加什么才能使其按照我想要的方式运行?

我是否应该使用其他包/语法来实现我期望的结果?我愿意使用任何其他可以实现相同结果的包。

答案1

通过设置,\pgfkeysalso{@cell content={\cellcolor[gray]{0.9}#1}}%您将覆盖 PGFPlotstable 生成的单元格内容(仅指#1单元格的原始值,而不是四舍五入的输出)。您只需将命令添加\cellcolor[gray]{0.9}到单元格内容中,其余部分保持不变。您可以使用键执行此操作

\pgfkeysalso{@cell content/.prefix={\cellcolor[gray]{0.9}}}%

\documentclass[a4paper,10pt]{article}

\usepackage{pgfplotstable}
\usepackage{colortbl}

\begin{document}


  \pgfplotstabletypeset[
    dec sep={$,$},
    col sep=comma,
    columns={a,b,c},
    columns/a/.style={string type, column type={|c}},
    columns/b/.style={precision=4, column type={|c}},
    columns/c/.style={precision=4, column type={|c|}},
    every head row/.style={before row=\hline,after row=\hline},
    every row/.style={after row=\hline},
    every last row/.style={after row=\hline},
    postproc cell content/.code={
        \ifodd\pgfplotstablerow\relax
        \else
            % ah - an even row number.
            % ah - introduce a cell color:
            \pgfkeysalso{@cell content/.prefix={\cellcolor[gray]{0.9}}}%
        \fi
    }
    ,]{
a,b,c
d,0.4897844135,0.489789797
e,0.4897844135,0.489789797
f,0.4897844135,0.489789797    
    }


\end{document}

答案2

杰克的回答是正确的,但我最终做了一些略有不同的事情并认为我会分享:

\documentclass[a4paper,10pt]{article}

\usepackage{pgfplotstable}
\usepackage{colortbl}
\usepackage{xcolor}


\begin{document}
text
\begin{table}[!h]
\center

  \pgfplotstabletypeset[
    dec sep={$,$},
    col sep=comma,
    columns={a,b,c},
    columns/a/.style={string type, column type={c}},
    columns/b/.style={precision=5, column type={c}},
    columns/c/.style={precision=5, column type={c}},
    every even row/.style={before row={\rowcolor{blue!10}}},
    every odd row/.style={before row={\rowcolor{blue!3}}},
    ,]{
    a,b,c
    d,0.4897844135,0.489789797
    e,0.4897844135,0.489789797
    f,0.4897844135,0.489789797    
    }

\caption{Blah blah blah}
\end{table}
text
\end{document}

正如您所看到的,这样的语法更容易理解。

相关内容