使用 TikZ 绘制规定密度的虚线

使用 TikZ 绘制规定密度的虚线

有没有办法获得具有规定密度的虚线,例如每厘米 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

dotsepPSTricks 中。

\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将领导者扩大到填满整个空间(在这种情况下,提供的分离仅仅是下限)。

相关内容