![如何引用 pgfplots-table 之外的单元格?](https://linux22.com/image/334609/%E5%A6%82%E4%BD%95%E5%BC%95%E7%94%A8%20pgfplots-table%20%E4%B9%8B%E5%A4%96%E7%9A%84%E5%8D%95%E5%85%83%E6%A0%BC%EF%BC%9F.png)
我编写了一个动态 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 - 命令:
- \pgfplotstableread{测试数据.dat}\mytable
- \pgfplotstabletypeset[....]\mytable
其他一切都正常,但就我而言,我必须从标题名称切换到索引才能从表外部访问表数据:
\pgfplotstablegetelem{2}{0}\of{\mytable}
\pgfmathsetmacro{\MM}{\pgfplotsretval}
通过此命令,我可以使用表的第一列中的第三行,然后引用每个元素。
但现在我发现,虽然我可以引用 pgftable 中的数据,但我无法从(在 pgfplotstabletypeset 中)新创建的列中读取数据。因此,我可以引用表中的静态数据,但无法引用新单元格。