我目前正在试验这个pgfplotstable
包,并且正在研究我想要用于我的表的默认设置。
如果我的表格包含文本和数值,就会出现问题。我设法区分了这两种情况,剩下的唯一问题是列中文本的对齐方式。
问题是我想使用该dec sep align
选项来正确格式化我的数值。
在……的帮助下这个问题我设法将文本放入表格中,而不会干扰其他单元格。
问题是文本现在总是放在左侧“子单元格”中,如果同一列中有数字,文本将向左移动,以便为该数字的小数腾出空间。
我认为我可以通过简单地使我的文本单元格跨越两列(以便它使用两个“子单元格”)来避免此问题\multicolumn{2}{c}{#1}
(见下文)。但是,当我尝试这样做时,插入的内容&
不会被解释为表格的一部分,并且 LaTex 告诉我:
Extra alignment tab has been changed to \cr.
这是我正在使用的代码:
\documentclass{article}
\usepackage{filecontents}
\usepackage{pgfplotstable}
\usepackage{booktabs}
\usepackage{array}
\usepackage{xstring}
\usepackage{multicol}
\pgfplotstableset{
col sep = comma,
dec sep align={c},
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=\bottomrule},
/pgfplots/table/assign cell content/.code={
\IfDecimal{#1}{
% format as number
\pgfkeyssetvalue{/pgfplots/table/@cell content}{\pgfutilensuremath{\pgfmathprintnumber{#1}}}
}{
% use as String -> add second col in order to unmess dec sep align
\ifnum\pgfplotstablepartno=0%
\pgfkeyssetvalue{/pgfplots/table/@cell content}{\multicolumn{2}{c}{#1}}
\pgfkeys{/pgfplots/table/@cell content/.add={}{&}}
\fi
}
},
}
\begin{document}
\begin{filecontents}{Sample.csv}
Col 1, Col 2, Col 3, Col 4, Col 5, Col 6, Col 7
1.34, 2.73, 358000, 0.003, 5, 1500, 0.000374
1.34, 2.73, 358000, 0.003, 7, 1325.4, 0.012356
1.34, 2.734, 358000, 0.003, 12, 998.331, 0.12345
1.34, 5.073, 358000, 0.003, 17, 12353.274583, 0.0505134567
1.34, 22.77, 358000, test, 356, 9999.99, 0.3
\end{filecontents}
\pgfplotstabletypeset {Sample.csv}
\end{document}
所以我的问题是:如何才能让我的文本位于列的中心(位于两个“子单元格”的中心)?
答案1
我发现了这个问题:使用时\multicol
我根本不需要额外的对齐选项卡。
因此代码必须如下所示:
\documentclass{article}
\usepackage{filecontents}
\usepackage{pgfplotstable}
\usepackage{booktabs}
\usepackage{array}
\usepackage{xstring}
\usepackage{multicol}
\pgfplotstableset{
col sep = comma,
dec sep align={c},
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=\bottomrule},
/pgfplots/table/assign cell content/.code={
\IfDecimal{#1}{
% format as number
\pgfkeyssetvalue{/pgfplots/table/@cell content}{\pgfutilensuremath{\pgfmathprintnumber{#1}}}
}{
% use as String -> add second col in order to unmess dec sep align
\ifnum\pgfplotstablepartno=0%
\pgfkeyssetvalue{/pgfplots/table/@cell content}{\multicolumn{2}{c}{#1}}
\fi
}
},
}
\begin{document}
\begin{filecontents}{Sample.csv}
Col 1, Col 2, Col 3, Col 4, Col 5, Col 6, Col 7
1.34, 2.73, 358000, 0.003, 5, 1500, 0.000374
1.34, 2.73, 358000, 0.003, 7, 1325.4, 0.012356
1.34, 2.734, 358000, 0.003, 12, 998.331, 0.12345
1.34, 5.073, 358000, 0.003, 17, 12353.274583, 0.0505134567
1.34, 22.77, 358000, test, 356, 9999.99, 0.3
\end{filecontents}
\pgfplotstabletypeset {Sample.csv}
\end{document}