我编辑了问题并添加了 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});%
}