我正在尝试从线段上的一个点绘制多条线,该线段将给定点列表中的点连接到坐标原点 (0,0)。由于我想自动执行此过程,因此我使用了\foreach
。当我尝试使用这些calc
功能来计算点的坐标时,我遇到了错误。
这是我的代码
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\def\points{(-2,0), (-1.2, 1), (0, 1.55), (0.8, 1.65), (1.3, 1.4), (2, 0.1), (1.8, -0.7), (1,-1.6), (-1, -1)}
\begin{document}
\begin{tikzpicture}
\foreach \p in \points{
\draw[gray!80!white] \p--(0,0);
\draw[gray, ->] \p--($\p!0.1!(0,0)$);}
\end{tikzpicture}
\end{document}
这里是错误:
File ended while scanning use of \tikz@cc@parse@factor.
请注意,这个问题不同于这个因为我不使用该axis
环境。
答案1
这里有两种可能的选择。在第一个中,我将\points
宏的定义更改为不包括()
,并将其也添加到代码中。然后您需要使用{}
而不是()
in\points
来分隔“数组”中的条目。
另一个版本使用了 的定义\points
,但完全省去了坐标计算,而是使用decoration
来添加箭头提示。
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,decorations.markings}
\def\points{{-2,0}, {-1.2, 1}, {0, 1.55}, {0.8, 1.65}, {1.3, 1.4}, {2, 0.1}, {1.8, -0.7}, {1,-1.6}, {-1, -1}}
\begin{document}
\begin{tikzpicture}
\foreach \p in \points{
\draw[gray!80!white] (\p)--(0,0);
\draw[gray, ->] (\p)--($(\p)!0.1!(0,0)$);
}
\end{tikzpicture}
% second version
\def\points{(-2,0), (-1.2, 1), (0, 1.55), (0.8, 1.65), (1.3, 1.4), (2, 0.1), (1.8, -0.7), (1,-1.6), (-1, -1)}
\begin{tikzpicture}[decoration={markings,mark=at position 0.1 with \arrow{>}}]
\foreach \p in \points
\draw[gray!80!white, postaction={decorate}] \p--(0,0);
\end{tikzpicture}
\end{document}