问题

问题

问题

我想以线宽(笔划宽度)为单位移动一些 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

坐标已缩放,但线宽未缩放。

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

在此处输入图片描述

相关内容