我正在尝试从文件中读取一些坐标,然后使用TikZ绘制它们。 该文件采用以下格式:
timestamp 1.002132 3.2131231
timestamp 1.332132 2.9120
这是我的代码:
\begin{tikzpicture}
\draw[step=0.5,black,thin,xshift=0cm,yshift=0cm, opacity=0.3] (0,0) grid (8,4);
\draw [->](-.5,.5) -- (8.5,.5);
\draw [->] (4, -.5) -- (4, 4.5);
% read file and draw coordinates
\newread\file
\openin\file=recording2
\loop
\read\file to\fileline
\unless\ifeof\file
% Fetch coordinates in \coordX and \coordY
\StrSplit{\fileline}{14}{\ts}{\coords}
\def\coordX{\StrBefore{\coords}{ }}
\def\coordY{\StrBehind{\coords}{ }}
\draw (1,1) node {\coordX}; %this works fine
\draw (1,1) node {\coordY}; %this works fine
\draw (\coordX+4,\coordY+0.5) circle(1pt); %this cause the error
\repeat
\closein\file
\end{tikzpicture}
我已经打印了coordX和coordY的值,它们是正确的。 你知道导致错误的是什么吗?我是否必须“转换”值才能让TikZ将值解释为数值?
我尝试编辑LaTeX的内存设置没有运气,所以我认为错误在代码中(duh-uh)。
答案 0 :(得分:2)
好吧,我想我弄清楚它为什么不起作用。
xstring
包裹:
The macros of this package are not purely expandable
我认为这就是我的coordX
和coordY
无法作为参数进行评估的原因。
我通过切换
解决了这个问题\def\coordX{\StrBefore{\coords}{ }}
\def\coordY{\StrBehind{\coords}{ }}
到
\StrBefore{\coords}{ }[\coordX]
\StrBehind{\coords}{ }[\coordY]
这显然是xstring
的方式。