中间节点的斜率不遵循全局坐标变换

中间节点的斜率不遵循全局坐标变换

考虑以下代码:

\documentclass{article}

\usepackage{tikz}

\begin{document}

Sloped label with scaling:

\begin{tikzpicture}[yscale=-1]
  \draw (0,0) -- (2,2) node[midway,sloped] {Label};
\end{tikzpicture}

Sloped label without scaling:

\begin{tikzpicture}
  \draw (0,0) -- (2,2) node[midway,sloped] {Label};
\end{tikzpicture}

\end{document}

这是输出:

输出

因此,该选项似乎sloped以某种方式忽略了全局坐标变换矩阵。没有什么特别之处yscale=-1;您也可以尝试其他方法。斜率似乎是使用文字节点坐标而不是实际位置来计算的。

那么这是一个错误还是我做错了什么?如何获得正确倾斜的标签?

我正在使用tikzMacLive 2017 中的软件包(如何检查确切版本?)。

答案1

更新

默认情况下,转换不适用于节点(请参阅文档),而是sloped用作节点选项。所以您的问题似乎不是错误。

你可以使用

sloped/.append style={transform shape,yscale=-1}

对于tikzpicture。这会影响图片中的所有倾斜节点。

例子:

\documentclass{article}
\usepackage{tikz}

\begin{document}

Sloped label with scaling:

\begin{tikzpicture}[yscale=-1,sloped/.append style={transform shape,yscale=-1}]
  \draw (0,0)node{x} -- (2,2) node[midway,sloped]{Label};
\end{tikzpicture}

\end{document}

结果:

在此处输入图片描述


原始答案

以下是另一个建议(影响图片中的所有节点):

\documentclass{article}
\usepackage{tikz}

\begin{document}

Sloped label with scaling:

\begin{tikzpicture}[yscale=-1,transform shape,nodes={yscale=-1}]
  \draw (0,0)node{x} -- (2,2) node[midway,sloped] {Label};
\end{tikzpicture}

\end{document}

或者(影响单个节点):

\documentclass{article}
\usepackage{tikz}

\begin{document}

Sloped label with scaling:

\begin{tikzpicture}[yscale=-1]
  \draw (0,0)node{x} -- (2,2) node[midway,sloped,transform shape,yscale=-1] {Label};
\end{tikzpicture}

\end{document}

答案2

一个选项是使用decorations.markings。(我没有得到想要的结果transform shape,因为它已被esdd 建议总体来说这是一个好主意。

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{decorations.markings,calc}
\begin{document}

Sloped label with scaling and \verb|decorations.markings|:

\begin{tikzpicture}[yscale=-1]
  \draw[postaction=decorate,decoration={markings,
  mark=at position 0.5 with {\path (0,0) coordinate (aux0) (1,0) coordinate
  (aux1);
  \pgftransformreset
  \path let \p1=($(aux1)-(aux0)$),\n1={atan2(\y1,\x1)} in 
  (aux0) node[rotate=\n1]{Label};} }] (0,0) -- (2,2);
\end{tikzpicture}

Sloped label with scaling and \verb|transform shape|:

\begin{tikzpicture}[yscale=-1,transform shape]
  \draw (0,0) -- (2,2) node[midway,sloped] {Label};
\end{tikzpicture}


Sloped label without scaling:

\begin{tikzpicture}
  \draw (0,0) -- (2,2) node[midway,sloped] {Label};
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案3

使用是transform shape可行的,但结果可能出乎意料:

\documentclass{article}
\usepackage{tikz}
\begin{document}

Sloped label with scaling:

\begin{tikzpicture}[yscale=-1]
  \draw (0,0) -- (2,2) node[midway,sloped, transform shape] {Label};
\end{tikzpicture}

Sloped label without scaling:

\begin{tikzpicture}
  \draw (0,0) -- (2,2) node[midway,sloped] {Label};
\end{tikzpicture}

\end{document}

在此处输入图片描述

...你正在垂直镜像一切......

相关内容