我正在尝试制作一个由 4 行和用户指定数量的列组成的表格,其中第一列包含行号。我按如下方式执行此操作:
\documentclass{article}
\usepackage{pgfplotstable}
\newcommand{\myemptytable}[1]{
\pgfplotstableset{
create on use/new1/.style={create col/expr={\pgfplotstablerow+1}},
create on use/new2/.style={},
create on use/new3/.style={},
create on use/new4/.style={},
}
{\pgfplotstablenew[columns={new1,new2,new3,new4}]{#1}\loadedtable
\pgfplotstabletypeset[
columns={new1,new2,new3,new4},
string type,
columns/new1/.style={column name=Nr.},
columns/new2/.style={column name=PersonName},
columns/new3/.style={column name=Signature},
columns/new4/.style={column name=Received,column type/.add={}{|}},
before row=\hline,
every last row/.style={after row=\hline},
column type/.add={|}{}%
]\loadedtable}
}
\begin{document}
\myemptytable{25}
\end{document}
这完美地运行,只是行号采用科学计数法,即第 17 行第一列的值为 1.7e1。
我尝试了各种方法来修复它,但都无济于事,这可能是因为我不完全理解它的pgfplotstableset
工作原理。有没有一种简单的方法可以关闭整个文档中的科学记数法?反正我也不会用它……
答案1
只需删除您的string type
声明即可。这将推翻数字(以及其他内容)的标准样式。
\documentclass{article}
\usepackage{pgfplotstable}
\newcommand{\myemptytable}[1]{
\pgfplotstableset{
create on use/new1/.style={create col/expr={\pgfplotstablerow+1}},
create on use/new2/.style={},
create on use/new3/.style={},
create on use/new4/.style={},
}
{\pgfplotstablenew[columns={new1,new2,new3,new4}]{#1}\loadedtable
\pgfplotstabletypeset[
columns={new1,new2,new3,new4},
columns/new1/.style={column name=Nr.},
columns/new2/.style={column name=PersonName},
columns/new3/.style={column name=Signature},
columns/new4/.style={column name=Received, column type/.add={}{|}},
before row=\hline,
every last row/.style={after row=\hline},
column type/.add={|}{}%
]\loadedtable}
}
\begin{document}
\myemptytable{25}
\end{document}
如果其他列实际上包含字符串,那么您可以将添加string type
到它们的样式中。如果您确实想要一个全局string type
声明,那么可以使用以下方法覆盖第一列numeric type
:
\pgfplotstabletypeset[
columns={new1,new2,new3,new4},
string type,
columns/new1/.style={column name=Nr., numeric type},
columns/new2/.style={column name=PersonName},
columns/new3/.style={column name=Signature},
columns/new4/.style={column name=Received, column type/.add={}{|}},
...
答案2
如果您只是想要表格,那么可以使用tabular
和forloop.sty
。
\documentclass{article}
\usepackage{forloop}
\newcounter{PersonNumber}
\newcommand\MyEmptyTable[2][1]{%
\begin{tabular}{|r|*{3}{l|}}
\hline
Nr. & Person Name & Signature & Received\\\hline
\forLoop{#1}{#2}{PersonNumber}{\thePersonNumber &&&\\\hline}
\end{tabular}
}
\begin{document}
\MyEmptyTable[5]{25}
\end{document}