在 Tikz 中,绘制线条的最简单方法是什么,其中一端或两端都以 ... 的形式继续延伸,以表示它们无限延伸?我可以用省略号定义箭头吗?
答案1
事实上,最简单的方法是创建自定义箭头。
版本 3.0.0,新增arrows.meta
代码
\documentclass[tikz]{standalone}
\usetikzlibrary{backgrounds}
\usetikzlibrary{arrows.meta}
\tikzset{
.../.tip={[sep=0pt 1]
Round Cap[]. Circle[length=0pt 1] Circle[length=0pt 1] Circle[length=0pt 1, sep=0pt]},
sss/.tip={[sep=0pt 1]
Butt Cap[] . Square[length=0pt 1] Square[length=0pt 1] Square[length=0pt 1, sep=0pt]}}
\tikzset{every picture/.append style={gridded,line width=2pt}}
\begin{document}
\tikz \path[...-...] (0,0) edge (1,1);
\tikz \path[sss-sss] (0,0) edge (1,1);
\end{document}
输出
版本 2.10,旧箭头
我创建了两个,...
和sss
(s
用于s包括三个小点(或平方)的正方形。查看示例和设置line cap
如何影响间距。这些点可能太细,不适合通常的线宽,.4pt
因此您可以更改半径、边长或点之间的间距或……
*
其他解决方案可能涉及和箭头的组合space
以及使用特殊的dash pattern
。
代码
\documentclass[tikz]{standalone}
\usetikzlibrary{backgrounds}
\makeatletter
\pgfarrowsdeclare{...}{...}{%
\pgfutil@tempdima\pgflinewidth
\pgfarrowsrightextend{+6.5\pgfutil@tempdima}%
\pgfarrowsleftextend{+6.5\pgfutil@tempdima}%
}{
\pgfutil@tempdima\pgflinewidth
\pgfpathcircle{\pgfqpoint{+2\pgfutil@tempdima}{+0pt}}{+.5\pgfutil@tempdima}%
\pgfpathcircle{\pgfqpoint{+4\pgfutil@tempdima}{+0pt}}{+.5\pgfutil@tempdima}%
\pgfpathcircle{\pgfqpoint{+6\pgfutil@tempdima}{+0pt}}{+.5\pgfutil@tempdima}%
\pgfusepathqfill
}
\pgfarrowsdeclare{sss}{sss}{%
\pgfutil@tempdima\pgflinewidth
\pgfarrowsrightextend{+6\pgfutil@tempdima}%
\pgfarrowsleftextend{+6\pgfutil@tempdima}%
}{
\pgfutil@tempdima\pgflinewidth
\pgfpathrectangle{\pgfqpoint{+2\pgfutil@tempdima}{+.5\pgfutil@tempdima}}{\pgfqpoint{-\pgfutil@tempdima}{-\pgfutil@tempdima}}
\pgfpathrectangle{\pgfqpoint{+4\pgfutil@tempdima}{+.5\pgfutil@tempdima}}{\pgfqpoint{-\pgfutil@tempdima}{-\pgfutil@tempdima}}
\pgfpathrectangle{\pgfqpoint{+6\pgfutil@tempdima}{+.5\pgfutil@tempdima}}{\pgfqpoint{-\pgfutil@tempdima}{-\pgfutil@tempdima}}
\pgfusepathqfill
}
\makeatother
\tikzset{every picture/.append style={gridded,line width=2pt}}
\begin{document}
\tikz \path[...-...,line cap=round] (0,0) edge (1,1);
\tikz \path[...-..., line cap=rect] (0,0) edge (1,1);
\tikz \path[sss-sss] (0,0) edge (1,1);
\end{document}
输出