我有一个绘制 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
代码:
\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}