定义 pgfplot 表的别名

定义 pgfplot 表的别名

我有一个绘制 tikzpicture 的文件。我希望能够使用 pgfplot 表(\loadedtableI\loadedtableII下面的 MWE)绘制两次相同的图形。如何在不重新加载表的情况下定义表的别名?

平均能量损失

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}

\usepackage{filecontents}
\begin{filecontents}{data1.txt}
 X    Y
 1    1
 2    2
\end{filecontents}

\begin{filecontents}{data2.txt}
 X    Y
 1    1
 2    1
\end{filecontents}

\begin{filecontents}{myfig.tex}
  \begin{tikzpicture}
        \begin{axis}
        \addplot table {\loadedtable};
        \end{axis}
    \end{tikzpicture}
  \end{filecontents}

  \begin{document}

  \pgfplotstableread{data1.txt}\loadedtableI
  \pgfplotstableread{data2.txt}\loadedtableII

  % \def\loadtable{\loadedtableI} Something like this
  \input{myfig}
  % \def\loadtable{\loadedtableII}
  \input{myfig}

\end{document}

答案1

你可以使用一些扩展。下面似乎在这种情况下有效

\edef\Temp{\unexpanded{\addplot} table {\expandonce\CurrentTable}}\Temp

enter image description here

代码:

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.16}

\usepackage{etoolbox}

\usepackage{filecontents}
\begin{filecontents}{data1.txt}
 X    Y
 1    1
 2    2
\end{filecontents}

\begin{filecontents}{data2.txt}
 X    Y
 1    1
 2    1
\end{filecontents}

\begin{filecontents}{myfig.tex}
  \begin{tikzpicture}
        \begin{axis}
        \edef\Temp{\unexpanded{\addplot} table {\expandonce\CurrentTable}}\Temp;
        \end{axis}
    \end{tikzpicture}
  \end{filecontents}

  \begin{document}

  \pgfplotstableread{data1.txt}\loadedtableI
  \pgfplotstableread{data2.txt}\loadedtableII

  \def\CurrentTable{\loadedtableI}
  \input{myfig}
  \def\CurrentTable{\loadedtableII}
  \input{myfig}

\end{document}

相关内容