\section 中的 \pgfplotstablegetelem 不起作用

\section 中的 \pgfplotstablegetelem 不起作用

我读入了一些日期\pgfplotstableread并想使用这些日期。我的想法是,我希望能够更改其值而无需更改我的 LaTeX 代码。

如果我取消注释部分命令,则以下 MWE 将无法编译(在 Win 8、MiKTeX 2.9 上)。我认为我的宏dateFROMtable对于部分来说不够强大。

\documentclass{article}
\usepackage{filecontents}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\usetikzlibrary{calendar}

\newcommand{\julianTOdate}[1]{%
\pgfcalendarjuliantodate{#1}{\myyear}{\mymonth}{\myday}%
\edef\outdate{\myyear-\mymonth-\myday}\outdate}

\newcommand{\dateFROMtable}[2]{%
\pgfplotstablegetelem{0}{#2}\of{#1}%
\julianTOdate{\pgfplotsretval}}

\begin{filecontents}{table.dat}
first.date last.date
2457039 2457041
\end{filecontents}

\begin{document}%
\pgfplotstableread{table.dat}{\mytable}
This is a JulianTOdate test \julianTOdate{2457040}. The first date is \dateFROMtable{\mytable}{first.date}. The last date is \dateFROMtable{\mytable}{last.date}.
\section{This is a JulianTOdate test \julianTOdate{2457040}} %% works
%\section{The last date is \dateFROMtable{\mytable}{last.date}.} %% does not work
%\section{{\pgfplotstablegetelem{0}{last.date}\of{\mytable}}\pgfplotsretval}  %% does not work
\pgfplotstablegetelem{0}{last.date}\of{\mytable}
\section{The last value is \pgfplotsretval.}  %% works
\end{document}

我该如何修复它?我希望能够在我的文档和各种环境中多次使用此宏(pgfplots等等)。

答案1

我按照 percusse 的建议去做了。我将值保存在宏中(其名称由新的第三个参数给出)。由于它已经扩展,因此可以在部分等中使用。

\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\usetikzlibrary{calendar}

\newcommand{\dateFROMtableTOmacro}[3]{\pgfplotstablegetelem{0}{#2}\of{#1}%
\pgfcalendarjuliantodate{\pgfplotsretval}{\myyear}{\mymonth}{\myday}%
\edef#3{\myyear-\mymonth-\myday}}

\pgfplotstableread{
first.date last.date
2457039 2457041
}\mytable

\begin{document}%
\dateFROMtableTOmacro{\mytable}{first.date}{\myFirstDate}
The first date is \myFirstDate.
\section{The first date is \myFirstDate.} %% works
\end{document}

相关内容