头行索引不以 1 开头

头行索引不以 1 开头

这看起来是一个非常简单的问题,但我找不到答案。


我有一个非常简单的 CSV 文件,我想用它制作一个 LaTeX 表。

微小的.csv

-1, 1, -1, 1
2, 4, 6, 8
3, 9, 27, 81

LaTeX 文件

\documentclass{standalone}
\usepackage{pgfplotstable}

\begin{document}

\pgfplotstabletypeset[col sep=comma]{tiny.csv}

\end{document}

然后我有如下表格:

 0  1   2   3       <- head row
−1  1  −1   1
 2  4   6   8
 3  9  27  81

我希望头行中的数字以 0 开头,而不是 1。我不想更改文件 tiny.csv,因为它将被其他脚本用于实验。如何将头行从“0 1 2 3”更改为“1 2 3 4”?

答案1

您可以更改分配数字列名的内部 PGFPlotstable 宏。以下是引入新键的方法first numeric column name=<number>,允许指定自动列名的起始数字。默认情况下,它设置为,0因此正常行为不会改变。如果您设置first numeric column name=1,编号将从开始1

\documentclass[border=5mm]{standalone}
\usepackage{pgfplotstable}

\makeatletter
\pgfplotstableset{first numeric column name/.initial=0}
\newcounter{numeric@colname}
\def\pgfplotstableread@create@column@names@with@numbers{%
    \pgfplotstableread@countreset\pgfplotstableread@curcol%
    \pgfutil@loop
    \ifnum\pgfplotstableread@curcol<\pgfplotstableread@numcols\relax
        \setcounter{numeric@colname}{\thepgfplotstableread@curcol}%
        \addtocounter{numeric@colname}{\pgfkeysvalueof{/pgfplots/table/first numeric column name}}%
        \edef\pgfplotstable@loc@TMPb{\thenumeric@colname}%
        \expandafter\pgfplotslistpushbackglobal\pgfplotstable@loc@TMPb\to\pgfplotstable@colnames@glob
        \pgfplotstableread@countadvance\pgfplotstableread@curcol
    \pgfutil@repeat
}
\makeatother

\begin{document}

\pgfplotstabletypeset[col sep=comma, first numeric column name=1]{
-1, 1, -1, 1
2, 4, 6, 8
3, 9, 27, 81
}

\end{document}

答案2

一个选项是column name在列样式中使用:

\documentclass{standalone}
\usepackage{pgfplotstable}

\begin{document}

\pgfplotstabletypeset[col sep=comma,
columns/0/.style={column name=$1$},
columns/1/.style={column name=$2$},
columns/2/.style={column name=$3$},
columns/3/.style={column name=$4$},
]{tiny.cvs}

\end{document}

在此处输入图片描述

相关内容