
Редактировать:Меня интересует, как можно или нельзя решить эту проблему с помощью декораций в формате pgf, а не как нарисовать эту конкретную форму.
Я пытаюсь использовать линейные украшения pgf, чтобы рисовать пунктирные линии, где точки — это квадраты, как в:
Однако pgf автоматически вращает среду, в которой рисуются квадраты, как в следующем коде:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,decorations}
\pgfdeclaredecoration{Squares}{initial}{
\state{initial}[width=10pt]{
\fill (0cm,0cm) rectangle (5pt,5pt);
}
\state{final}{
\pgfpathlineto{\pgfpointdecoratedpathlast}
}
}
\begin{document}
\begin{center}
\begin{tikzpicture}
\draw[decorate,decoration=Squares] (0,0) -- (5,5);
\end{tikzpicture}
\end{center}
\end{document}
что выводит это:
Есть ли способ компенсировать автоматическое вращение или наоборот отключить его?
решение1
Поверните \fill
команду декорирования в направлении, противоположном вращению при вводе кода декорирования (заданного как \pgfdecoratedangle
):
\documentclass[tikz]{standalone}
\usetikzlibrary{calc,decorations}
\pgfdeclaredecoration{Squares}{initial}{
\state{initial}[width=10pt]{
\fill[rotate=-\pgfdecoratedangle] (0cm,0cm) rectangle (5pt,5pt);
}
\state{final}{
\pgfpathlineto{\pgfpointdecoratedpathlast}
}
}
\begin{document}
\begin{tikzpicture}
\draw[decorate,decoration=Squares] (0,0) -- (1,5);
\draw[decorate,decoration=Squares] (0,0) -- (5,5);
\draw[decorate,decoration=Squares] (0,0) to[out=0,in=-90] (5,5);
\draw[decorate,decoration=Squares] (0,0) -- (5,1);
\end{tikzpicture}
\end{document}