Padrão de traço que começa com espaço

Padrão de traço que começa com espaço

Costumo desenhar vetores meio cheios e meio tracejados (a outra parte do vetor é "invisível" (veja MWE abaixo). Normalmente desenho duas linhas separadamente (não conheço nenhum outro método).

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}

\draw[very thin] (0,-1) -- (0,1);
\draw[ultra thick] (-2,0) -- (0,0);
\draw[ultra thick,dashed,->] (0,0) -- (2,0);

\end{tikzpicture}
\end{document}

O problema é que a segunda parte sempre começa com linha e eu gostaria que começasse com espaço. Como eu posso fazer isso? Tentei definir um novo estilo com \tikzset{mydashed/.style={dash pattern=off 3pt on 3pt}}, mas não funcionou.

Por favor me diga, o que fazer?

insira a descrição da imagem aqui

Responder1

Você pode usar shorten <=<length>para que a linha comece a ser desenhada após o comprimento especificado:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}

\draw[very thin] (0,-1) -- (0,1);
\draw[ultra thick] (-2,0) -- (0,0);
\draw[ultra thick,dashed,->,shorten <=3] (0,0) -- (2,0);

\end{tikzpicture}
\end{document}

insira a descrição da imagem aqui

Responder2

Você pode mudar o padrão de traço de forma que ele pule a primeira onparte. Para a definição dos padrões de traço você pode pesquisar o tikz.code.texarquivo. Para referência rápida;

\tikzstyle{dashed}=                  [dash pattern=on 3pt off 3pt]
\tikzstyle{densely dashed}=          [dash pattern=on 3pt off 2pt]
\tikzstyle{loosely dashed}=          [dash pattern=on 3pt off 6pt]

Então, para começar, você precisa mudar o padrão de traço em 3 pontos ou -3 pontos ou múltiplos deles. Então você pode criar o seu próprio mydashedatravés

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[mydashed/.style={dashed,dash phase=3pt}]
\draw[very thin] (0,-1) -- (0,1);
\draw[ultra thick] (-2,0) -- (0,0);
\draw[ultra thick,mydashed,->] (0,0) -- (2,0);
\draw[solid,mydashed,->] (0,-0.5) -- (2,-0.5);
\draw[ultra thin,mydashed,->] (0,-0.25) -- (2,-0.25);
\end{tikzpicture}
\end{document}

insira a descrição da imagem aqui

Para desenhar o vetor combinado de uma só vez, dependendo do que você precisa, você pode usar uma decoração. Se for sempre uma parte conhecida do vetor tracejada (em termos de porcentagem, etc.), é relativamente fácil. Caso contrário, pode precisar de algum trabalho.

Responder3

Alguns ajustes com dash pattern:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}

\draw[very thin] (0,-1) -- (0,1);
\draw[ultra thick] (-2,0) -- (0,0);
\draw[ultra thick,dash pattern=on 0pt off 3pt on 3pt off -1pt,->] (0,0) -- (2,0);

\end{tikzpicture}
\end{document}

insira a descrição da imagem aqui

Responder4

Existe uma chave exatamente para esse propósito, a dash phase. Ele simplesmente muda o padrão de traço com o valor fornecido. O exemplo do Manual:

\begin{scope}[dash pattern=on 20pt off 10pt]
\draw[dash phase=0pt] (0pt,3pt) -- (3.5cm,3pt);
\draw[dash phase=10pt] (0pt,0pt) -- (3.5cm,0pt);
\end{scope}

Exemplo retirado do manual TikZ

Aplicado a este MWE:

\documentclass[tikz]{standalone}

\begin{document}
 \begin{tikzpicture}
  \draw[very thin] (0,-1) -- (0,1);
  \draw[ultra thick] (-2,0) -- (0,0);
  \draw[ultra thick,dashed,->, dash phase=3pt] (0,0) -- (2,0);
 \end{tikzpicture}
\end{document}

Fase de traço aplicada ao MWE

informação relacionada