如何引用 pgfplots-table 之外的单元格?

如何引用 pgfplots-table 之外的单元格?

我编写了一个动态 LaTeX 表,其中包含来自外部文件的数据,并根据某些标准从现有列中计算出一个新列。现在我想引用计算出的单元格并将其写入另一个tikzpicture。一个问题是,我无法命名通过导入数据和创建的表\pgfplotstabletypeset

为了进行比较,我引用了另一个表格(\mytable),\pgfplotstableread{testdatahead.dat}{\mytable}我可以从该表格中获取数据并将其插入文本(红色)中。(它与主文件中的数据相同)。

有没有办法引用单元格或寻址其组件,如第二个示例所示?

\documentclass{article}
\usepackage{pgfplotstable}
\usepackage{booktabs}

\begin{document}

\pgfkeys{/pgf/fpu=false} % bringt aber nichts...

% Berechung von Abzug, 30 (bei kleiner 9 Stunden) oder 45 Minuten (bei größer 9 Stunden)
\pgfmathdeclarefunction{vergleich}{2} {\pgfmathparse{(#1-#2)<9) ? (#1-#2-0.5) : (#1-#2-0.75)}}

\pgfplotstabletypeset[
    header=true,
    every head row/.style={before row=\toprule, after row=\midrule},
    every last row/.style={ after row=\bottomrule },
    display columns/0/.style={column name={Monat}},
    display columns/1/.style={column name={Tag}},
    display columns/2/.style={column name={Anfang}, fixed},
    display columns/3/.style={column name={Ende}, fixed},
    display columns/4/.style={dec sep align, column name={Arbeitszeit}},
    display columns/5/.style={column name={Spalte}, fixed},
    create on use/newcol/.style={
      create col/expr={vergleich(\thisrow{3},\thisrow{2})}
    },
    columns/newcol/.style={string type},
       highlightrow/.style={
        postproc cell content/.append code={
           \count0=\pgfplotstablerow
            \advance\count0 by1
            \ifnum\count0=#1
            \pgfkeysalso{@cell content/.add={\bfseries\color{red}}{}}
            \fi
        },
    },
    %% every first column/.style={column type/.add={|}{}},  % style the first column
    %% every last column/.style={column type/.add={}{|}},   % style the last column
    %% columns/.style = {column type/.add={|}{|}},  % style the designated column
       highlightrow={3},
    columns={0,1,2,3,newcol},
    outfile={zeitenout.dat}  % Aber nur al TeX-formatierte Tabelle
]{testdata.dat}\\

% This is working:
\pgfplotstableread{testdatahead.dat}{\mytable}

\pgfplotstablegetelem{2}{Monat}\of{\mytable}
\pgfmathsetmacro{\MM}{\pgfplotsretval}
\pgfplotstablegetelem{2}{Tag}\of{\mytable}
\pgfmathsetmacro{\TT}{\pgfplotsretval}
\pgfplotstablegetelem{2}{Anfang}\of{\mytable}
\pgfmathsetmacro{\Anfang}{\pgfplotsretval}
\pgfplotstablegetelem{2}{Ende}\of{\mytable}
\pgfmathsetmacro{\Ende}{\pgfplotsretval}

Im Monat {\MM}, am  \TT. Tag habe ich um {\Anfang} Uhr angefangen, bin um {\Ende} Uhr nach Hause gegangen.

\end{document}

图像

相应的数据文件“testdata.dat”:

1 01 8 16
1 02 7 15
1 03 6 17
1 04 6 17.5
1 05 6 15.5
1 05 7 17

答案1

经过一些阅读,我找到了一种命名表格并使用 \pgfplotstabletypeset 命令的方法:

我必须先使用不同的命令读取表格,然后使用 \pgfplotstabletypeset - 命令:

  1. \pgfplotstableread{测试数据.dat}\mytable
  2. \pgfplotstabletypeset[....]\mytable

其他一切都正常,但就我而言,我必须从标题名称切换到索引才能从表外部访问表数据:

\pgfplotstablegetelem{2}{0}\of{\mytable}
\pgfmathsetmacro{\MM}{\pgfplotsretval}

通过此命令,我可以使用表的第一列中的第三行,然后引用每个元素。

但现在我发现,虽然我可以引用 pgftable 中的数据,但我无法从(在 pgfplotstabletypeset 中)新创建的列中读取数据。因此,我可以引用表中的静态数据,但无法引用新单元格。

相关内容