更改 pgfplotstable 中的默认行分隔符/每行的命令顺序

更改 pgfplotstable 中的默认行分隔符/每行的命令顺序

我编辑了问题并添加了 MWE。请随意更改标签或主题标题,因为我不确定如何对我的问题进行分类。

我正在使用 tabu 包和 pgfplotstable 进行自动 csv 输出。

该 csv 文件名为 testfile.dat,内容如下

Header
1,2
3,4
5,6

MWE 中的第一个表自动读取文件并创建表输出。MWE 中的第二个表显示了我想要创建的表。

我现在面临以下问题:

  • 有时,会打印列索引行,header=false此处的命令没有什么区别
  • 我希望使用整数计数器动态创建 pgfmarks(如第二张表所示)。如建议的那样在这个话题。但是,我无法在不产生misplaced noalign错误的情况下在每行的正确位置添加所需的计数器增量和输出(可以使用 MWE 中当前注释的第二行重新创建该问题)。

在下面的 MWE 中,可以看到两个表格。第一个是工作自动输出(请注意上述问题以\noalign和开头的行)。\stepcounter

第二张表显示了我认为可行的输出。请注意,\stepcounter没有提供该命令只是因为我找不到任何方法将 id 正确添加到表行中。

梅威瑟:

\documentclass[english,listof=totoc]{scrartcl}
\usepackage{helvet}
\renewcommand{\familydefault}{\sfdefault}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\setlength{\parskip}{\medskipamount}
\setlength{\parindent}{0pt}
\usepackage{float}

\usepackage{tabu}

\usepackage{pgfplotstable} %package for automated csv-table-creation
\usepackage{pgfplots} %see above
\usepackage{colortbl} %allows coloring in tables

\definecolor{lightergray}{RGB}{242,242,242} % define a color for later use

\usepackage{hhline} %% Alternative horizontal line for tables

\usepackage{tikz}
\usetikzlibrary{tikzmark}

\begin{document}

First the automatically created table:

\newcounter{mycounter}

\pgfplotstabletypeset[
debug=true,
col sep = comma,
%row sep = newline, %% This does not change anything
skip coltypes=true,
begin table={\tikzmark{tabstartmaindim}%
\begin{tabu} to \textwidth {|>{\columncolor{lightergray}}X|X|} \hhline{--} },
end table={\end{tabu}\tikzmark{tabendmaindim}},
skip first n=1,
columns={[index]0,[index]1},
%header=false,
every col no 0/.style={string type},
every col no 1/.style={string type},
every head row/.append style={
before row={%
\multicolumn{2}{|l|}{\cellcolor{lightergray}\textbf{Custom Title}} \\%
\hhline{--} 
},
after row={%
            \noalign{\pgfmark{testmark}}\hhline{--}
%               \stepcounter{mycounter}\noalign{\pgfmark{testmark}}\hhline{--}
},
},
every nth row = {1}{ before row =\noalign{\pgfmark{a4}}\hhline{--}},
every last row/.style ={ after row ={\hhline{--}  \tabuphantomline}}
]
{testfile.dat}

This is the table I want to create:

\tikzmark {tabstartnew}%
\begin {tabu} to \textwidth {|>{\columncolor {lightergray}}X|X|} \hhline{--}
\multicolumn {2}{|l|}{\cellcolor {lightergray}\textbf {Custom Title}} \\\hhline{--}
%0&1\\\hhline{--} %% Note: I don't really understand why this line is created, the option "header=false" does not change anything.
1&2 \\\noalign{\pgfmark{testmark1}}\hhline{--}
3&4 \\\noalign{\pgfmark{testmark2}}\hhline{--}
5&6 \\\noalign{\pgfmark{testmark3}}\hhline{--}
\tabuphantomline %
\end {tabu}%
\tikzmark {tabendnew}%

\end{document}

在思考了我的问题之后,我想我重新表述的问题是:

pgfplotstable 根据 .csv 数据创建的表格。每行应有一个计数器和一个动态命名的 pgfmark(或 tikzmark),该标记不会增加行高。

答案1

好吧,我想我找到了我的错误。我在这里发布它以供其他人查看。

下面是我的最终 pgfplotstable 命令:

\newcounter{linespgf}
\newcounter{forloopcount}
\setcounter{linespgf}{0}

\pgfplotstabletypeset[
%debug=true,
col sep = comma,
skip coltypes=true,
begin table={\tikzmark{tabstartmaindim}%
\begin{tabu} to \textwidth {|>{\columncolor{lightergray}}X|X|} \noalign{\stepcounter{linespgf}\pgfmark{maindim\thelinespgf}} },
end table={\end{tabu}\tikzmark{tabendmaindim}},
skip first n=1,
columns/Species/.style={string type},
%header=false,
columns={[index]0,[index]1},
every col no 0/.style={string type},
every col no 1/.style={string type},
every head row/.append style={
before row={%
\multicolumn{2}{|l|}{\cellcolor{lightergray}\textbf{Title}} \\%
\noalign{\stepcounter{linespgf}\pgfmark{maindim\thelinespgf}}
},
after row={%
            \noalign{\stepcounter{linespgf}\pgfmark{maindim\thelinespgf}}
},
},
every nth row = {1}{ before row =\noalign{\stepcounter{linespgf}\pgfmark{maindim\thelinespgf}}},
every last row/.style ={ after row ={\noalign{\stepcounter{linespgf}\pgfmark{maindim\thelinespgf}}}}
]
{testfile.dat}

\forloop{forloopcount}{1}{\value{forloopcount} < \eval{\value{linespgf}+1}}%
{%
\tikz[overlay,remember picture]\draw[red,]  ({pic cs:tabstartmaindim} |- {pic cs:maindim\theforloopcount}) --({pic cs:tabendmaindim} |- {pic cs:maindim\theforloopcount});%
}

相关内容