我读入了一些日期\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}