pgfplotstable 缺少错误和 strig 类型

pgfplotstable 缺少错误和 strig 类型

我已经搜索了使用 pgfplotstable 的问题的解决方案,但没有找到任何有用的方法。

我正在使用 pgfplotstable 将 csv 数据导入我的 latex 代码。我的表有四列。第一列包含字符串数据,其他列包含数值。

我指出了第一个列字符串的列类型,然后收到以下消息 - 错误(1):

!缺少 $ 插入。$ l.17 ]{teste.csv}

数据位于文件 teste.csv 中

如果我从第一列删除字符串类型样式,则会收到以下错误(2):

!PGF 软件包数学错误:无法将输入“B030_01”解析为浮点数,抱歉。无法读取的部分位于“B030_01”附近。

我的乳胶代码:

\documentclass{article}

\usepackage{pgfplotstable}
\usepackage{array}

\usepackage[utf8]{inputenc}

\pgfplotsset{compat=1.9}

%\pgfplotstableread[col sep=tab]{teste.csv}\mytable

\begin{document}

\pgfplotstabletypeset[col sep=tab,
    columns={Instance,CAP,CUSTO,TIME}
    columns/Instance/.style={string type}   % if commented get error 2, else get error 1
]{teste.csv}

\end{document}

我的数据表:

Instance    CAP CUSTO   TIME
B030_01 3   15673   0.136264
B030_02 3   16732   0.143577
...
B030_28 8   99998.5 1.28447
B030_29 17  93604.5 1.110965
B030_30 17  96460.5 1.19836

也许,这个错误可能非常简单,但直到现在我还没有弄清楚。

答案1

这是因为字符串类型需要文本模式并看到下划线,这是一个数学模式字符,如果你不使用字符串类型,它会尝试将其保留为数字,但事实并非如此。相反,你可以搜索并将其替换为字符串兼容版本_。在这里,我只是将示例简化为内联表:

\pgfplotstabletypeset[
    columns={Instance,CAP,CUSTO,TIME},
    columns/Instance/.style={string type,string replace*={_}{\textunderscore}}
]{
Instance CAP CUSTO TIME
B030_01 3   15673   0.136264
B030_02 3   16732   0.143577
B030_28 8   99998.5 1.28447
B030_29 17  93604.5 1.110965
B030_30 17  96460.5 1.19836
}

在此处输入图片描述

答案2

第一列包含_,它是数学模式下下标的特殊字符。因此,TeX 需要数学模式并报错。

这可以通过逐字模式读取第一列来解决,可以通过类型设置verb string type

\documentclass{article}
\usepackage[T1]{fontenc}

\usepackage{pgfplotstable}
\usepackage{array}

\usepackage[utf8]{inputenc}

\pgfplotsset{compat=1.9}

\begin{document}

\pgfplotstabletypeset[col sep=tab,
    columns={Instance,CAP,CUSTO,TIME},
    columns/Instance/.style={verb string type},
]{teste.csv}

\end{document}

结果

相关内容