Я часто рисую векторы, которые наполовину заполнены, а наполовину пунктирны (остальная часть вектора «невидима» (см. 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}
Применительно к данному 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}