这看起来是一个非常简单的问题,但我找不到答案。
我有一个非常简单的 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}