其中tkz-euclide
有一个快捷方式:
\tkzDrawPolygon(A1,A...,A13)
平原中有类似的东西吗tikz-pgf
? 我正在寻找以下内容的快捷方式:
\draw (A1) -- (A2) -- (A3) -- (A4) -- (A5) -- (A5) -- (A6) -- (A7) -- (A8) -- (A9) -- (A10) -- (A11) -- (A12) -- (A13) -- cycle;
答案1
给定一组坐标(A1)
, (A2)
, ... (A<n>)
,我们可以通过它们绘制多边形
\draw plot[samples at={1,...,<n>}] (A\x) -- cycle;
它仅比tkz-euclide
语法稍微长一点。
由于没有 MWE,我不得不创建一些节点。
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
\path foreach \X in {1,...,13} {(360*\X/14:2+rnd) coordinate (A\X)};
\draw plot[samples at={1,...,13}] (A\x) -- cycle;
\end{tikzpicture}
\end{document}
当然,也可以更改情节处理程序,例如
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
\path foreach \X in {1,...,13} {(360*\X/14:2+rnd) coordinate (A\X)};
\draw plot[smooth cycle,samples at={1,...,13}] (A\x);
\end{tikzpicture}
\end{document}
和往常一样,你可以为此定义样式。下面是一个样式polygon through
,它生成上面的多边形,
\draw[polygon through={A1,A...,A13}];
然后可以在路径中使用其中的几个,例如
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[polygon through/.style={insert path={
plot[samples at={#1}] (\x) -- cycle}}]
\path foreach \X in {1,...,13} {(360*\X/14:3+rnd) coordinate (A\X)
(360*\X/14:1.5+rnd) coordinate (B\X)};
\fill[even odd rule,blue,
polygon through={A1,A...,A13},polygon through={B1,B...,B13}];
\end{tikzpicture}
\end{document}
答案2
tkz-euclide 后面是 TikZ。您可以重新创建相同的宏
\def\tkzDrawPolygon[#1](#2,#3){%
\begingroup
\draw[#1] (#2)
\foreach \pt in {#2,#3}{--(\pt)}--cycle;
\endgroup
}
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\path foreach \X in {1,...,13} {(360*\X/14:2+rnd) coordinate (A\X)};
\draw[thick,blue] (A1) foreach \pt in {A1,A...,A13} {--(\pt)} --cycle;
\end{tikzpicture}
\end{document}
答案3
可能不如薛定谔的猫技术,这里是另一个基于的expl3
(\int_step_function:nnN
它是“受限可扩展的”,在这里这就足够了)。
\documentclass[tikz, border=2mm]{standalone}
\usepackage{expl3}
\ExplSyntaxOn
\cs_new_eq:NN \intstepfunction \int_step_function:nnN
\ExplSyntaxOff
\begin{document}
\begin{tikzpicture}
% Define some coordinates
\foreach \i in {1,...,13} {
\coordinate (A\i) at (360/13*\i:3);
}
% Use them in the prescribed way
\def\tmp#1{-- (A#1)}
\draw[blue] (A1) \intstepfunction{2}{13}{\tmp} --cycle;
\end{tikzpicture}
\end{document}
当然,也可以使用shapes.geometric
Ti钾Z 库:
\documentclass[tikz, border=2mm]{standalone}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}
\node[regular polygon, regular polygon sides=13, draw=blue,
inner sep=3cm] at (0,0) {};
\end{tikzpicture}
\end{document}