![使用 TikZ 绘制规定密度的虚线](https://linux22.com/image/283539/%E4%BD%BF%E7%94%A8%20TikZ%20%E7%BB%98%E5%88%B6%E8%A7%84%E5%AE%9A%E5%AF%86%E5%BA%A6%E7%9A%84%E8%99%9A%E7%BA%BF.png)
有没有办法获得具有规定密度的虚线,例如每厘米 10 个点,而不是默认值?
杰西的评论如下:
\documentclass[10pt,a4paper,french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fourier}
\usepackage{tikz}
\usetikzlibrary{calc,intersections,through,backgrounds}
\tikzstyle{cm dotted}=[dash pattern=on \pgflinewidth off .85mm ]
\begin{document}
\begin{tikzpicture}
\draw[cm dotted,line width=.15mm,step=.5] (0,0) grid (5,4) ;
\end{tikzpicture}
\end{document}
仍然有半个线宽的不必要偏移。水平和垂直交叉点不在正确的位置。我明白原因,但我不知道如何修复它。
答案1
我思考这样就行了。点的大小由线宽决定。诀窍是使用长度为 0 的短划线。我认为这不应该起作用,但似乎可以。
\documentclass[tikz,border=0.125cm]{standalone}
\tikzset{%
dots/.style args={#1per #2}{%
line cap=round,
dash pattern=on 0 off #2/#1
}
}
\begin{document}
\foreach \i in {1,...,20}{
\begin{tikzpicture}
\draw [help lines] grid (4,1);
\draw [very thick, dots=\i per 1cm]
(0,.5) -- (4,.5)
node [at start, above right] {\i\ dot\ifnum\i>1s\fi\ per 1cm};
\end{tikzpicture}
}
\end{document}
答案2
在dotsep
PSTricks 中。
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{multido}
\psset{linewidth=1mm,linestyle=dotted}
\begin{document}
\begin{pspicture}(6,8)
\multido{\i=0+1,\n=.1+.1}{9}{\psline[dotsep=\n](0,\i)(6,\i)}
\end{pspicture}
\end{document}
编辑
\documentclass[pstricks,border=12pt]{standalone}
\psset{linewidth=3pt,linestyle=dotted}
\newlength\dotsep
\def\line#1{%
\dotsep=\dimexpr\dimexpr\psunit-#1\pslinewidth\relax/\numexpr#1-1\relax\relax
\psline[dotsep=\dotsep](0,1)(6,1)}
\begin{document}
\foreach \i in {2,...,10}{%
\begin{pspicture}[showgrid](6,2)
\rput[t](3,1.75){\i\ dots per cm}
\line{\i}
\end{pspicture}}
\end{document}
答案3
实际上,“旧”的普通 TeX 只需一行就可以完成此操作,而不需要外部复杂的包:
my text\leaders\hbox to 1em{\hss.\hss}\hfill other text
其他选项包括:
- 用
\hskip 5cm
代替\hfill
画出 5 厘米长的虚线 - 使用
\hbox to 0.1cm
代替hbox to 1em
将点间距更改为 1mm - 使用
\cleaders
而不是 来\leaders
使领导者居中,而不是让他们对齐 - 用于
\xleaders
将领导者扩大到填满整个空间(在这种情况下,提供的分离仅仅是下限)。