问题
我想以线宽(笔划宽度)为单位移动一些 TikZ 坐标。当我使用一些外部定义的长度作为线宽时,它不受缩放的影响,这正是我想要的。但是,在该长度中指定的坐标、偏移量或类似内容是。
如何根据实际使用的线宽指定一些 TikZ 坐标、偏移量或类似内容?我更喜欢使用非整数倍线宽的解决方案,但我对那些不适用的解决方案也很感兴趣。
例子
\documentclass{standalone}
\usepackage{tikz}
\newlength{\mylinewidth}
\setlength{\mylinewidth}{10pt}
\newcommand{\twolines}{
\draw[line width=\mylinewidth, yshift= \mylinewidth] (-1,0) -- (1,0);
\draw[line width=\mylinewidth, yshift=-\mylinewidth] (-1,0) -- (1,0);
}
\begin{document}
\begin{tikzpicture}
\twolines
\node[font=\tiny] {one line width};
\end{tikzpicture}
\begin{tikzpicture}[scale=0.7]
\twolines
\node[font=\tiny] {not one line width};
\end{tikzpicture}
\end{document}
我希望第二对线与第一对线一样有一个线宽的距离。
我发现了什么
这个问题类似。但是,我不能使用,shift only
因为在我的例子中,受影响的是移位。理论上我可以使用宏来缩放,但这在我的实际应用中可能非常繁琐,因为我使用了许多复杂的宏,如上所示。
答案1
坐标已缩放,但线宽未缩放。
pic
transform shape
除非提供选项,否则通常不会缩放。
\documentclass[border=1cm]{standalone}
\usepackage{tikz}
\newlength{\mylinewidth}
\setlength{\mylinewidth}{10pt}
\tikzset{
twolines/.pic={
\draw[line width=\mylinewidth, yshift= \mylinewidth] (-1,0) -- (1,0);
\draw[line width=\mylinewidth, yshift=-\mylinewidth] (-1,0) -- (1,0);
}
}
\begin{document}
\begin{tikzpicture}
\pic{twolines};
\node[font=\tiny] {one line width};
\end{tikzpicture}
\begin{tikzpicture}[scale=0.7]
\pic{twolines};
\node[font=\tiny] {scaled but one line width};
\end{tikzpicture}
\begin{tikzpicture}[scale=0.7]
\pic[transform shape]{twolines};
\node[font=\tiny] {scaled but not one line width};
\end{tikzpicture}
\end{document}