Узор тире, начинающийся с пробела

Узор тире, начинающийся с пробела

Я часто рисую векторы, которые наполовину заполнены, а наполовину пунктирны (остальная часть вектора «невидима» (см. MWE ниже). Обычно я рисую две линии по отдельности (другого способа я не знаю).

\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}

Проблема в том, что вторая часть всегда начинается со строки, а я бы хотел, чтобы она начиналась с пробела. Как это сделать? Я пытался определить новый стиль с помощью \tikzset{mydashed/.style={dash pattern=off 3pt on 3pt}}, но это не работает.

Подскажите, пожалуйста, что делать?

введите описание изображения здесь

решение1

Вы можете использовать shorten <=<length>, чтобы линия начала рисоваться после указанной длины:

\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}

введите описание изображения здесь

решение2

Вы можете сместить шаблон штрихов так, чтобы он пропустил первую onчасть. Определение шаблонов штрихов вы можете найти в tikz.code.texфайле. Для быстрой справки;

\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]

Итак, чтобы начать с off, вам нужно сместить шаблон штриха либо на 3pt, либо на -3pt, либо на кратные им значения. Затем вы можете создать свой собственный mydashedс помощью

\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}

введите описание изображения здесь

Чтобы нарисовать объединенный вектор за один раз, в зависимости от того, что вам нужно, вы можете использовать декорацию. Если это всегда известная часть вектора, которая заштрихована (в процентах и ​​т. д.), это относительно просто. В противном случае это может потребовать некоторой работы.

решение3

Небольшая доработка 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}

введите описание изображения здесь

решение4

Для этого как раз и есть клавиша dash phase— . Она просто сдвигает штриховой рисунок на заданное значение. Пример из руководства:

\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}

Пример взят из руководства TikZ

Применительно к данному 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}

Применена фаза тире к MWE

Связанный контент