考虑以下代码:
\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
;您也可以尝试其他方法。斜率似乎是使用文字节点坐标而不是实际位置来计算的。
那么这是一个错误还是我做错了什么?如何获得正确倾斜的标签?
我正在使用tikz
MacLive 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}
...你正在垂直镜像一切......