我正在尝试绘制一个 yz 轴,并在其上方绘制一个旋转的 y'z' 轴,用于一些数学运算。以下代码
\newcommand{\axislength}{2}
\draw [->, -latex]
(0,0) coordinate (O) node[above left] {}
-- (0,\axislength) coordinate (Z) node[above] {Z};
\draw [->, -latex]
(O) -- (\axislength,0) coordinate (Y) node[right] {Y};
\draw[->, -latex, dotted,rotate around={30:(0,0)}] (O) -- (Z) node[above left]
{Z'};
生产
然而
\newcommand{\axislength}{2}
\draw [->, -latex]
(0,0) coordinate (O) node[above left] {}
-- (0,\axislength) coordinate (Z) node[above] {Z};
\draw [->, -latex]
(O) -- (\axislength,0) coordinate (Y) node[right] {Y};
\draw[->, -latex, dotted,rotate around={30:(O)}] (0,0) -- (0,\axislength)
node[above left] {Z'};
生产
我所做的只是更改了最后一行。显然,当我引用 (O) 时,LaTex 不会将其准确解释为坐标。但是,在大多数情况下,我能够将坐标名称放在 Latex 期望看到实际坐标的位置,并且它有效。我的工作有错误吗,或者有些函数只是能够解释我所说的坐标名称,而其他函数则不能?
答案1
钛钾Z,标准变换不会变换符号坐标。(但是,你可以变换形状通过使用 键transform shape
,您可以通过说 来转换低级形状\pgflowlevelsynccm
。)可以使用 来转换符号坐标transform canvas
。但请注意,使用此键时要非常小心。它确实不是变换边界框。但是,它也非常强大,因为它允许您旋转球形阴影,而普通变换不会对其进行变换。不过,transform canvas
只有在绝对需要时才使用。
\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\begin{tikzpicture}[font=\sffamily,pics/brimborium/.style={code={\draw [->, -latex] (0,0) coordinate (O) node[above left] {}
-- (0,\axislength) coordinate (Z) node[above] {Z};
\draw [->, -latex] (O) -- (\axislength,0) coordinate (Y) node[right] {Y};}}]
\newcommand{\axislength}{2}
\begin{scope}[local bounding box=explicit,xshift=-8cm]
\pic {brimborium};
\draw[->, -latex, dotted,rotate around={30:(0,0)}] (0,0) -- (0,\axislength) node[above left] {Z'};
\end{scope}
\path (explicit.north) node[above]{explicit coordinates};
\begin{scope}[local bounding box=symbolic,xshift=-4cm]
\pic {brimborium};
\draw[->, -latex, dotted,rotate around={30:(0,0)}] (O) -- (Z) node[above left] {Z'};
\end{scope}
\path (symbolic.north) node[above]{symbolic coordinates};
\begin{scope}[local bounding box=canvas,xshift=0cm]
\pic {brimborium};
\draw[->, -latex, dotted,transform canvas={rotate around={30:(0,0)}}] (O) -- (Z) node[above left] {Z'};
\end{scope}
\path (canvas.north) node[above]{canvas transformation};
\end{tikzpicture}
\end{document}
如果在第一个范围内使用node[above left,transform shape] {Z'}
,您将获得与最后一个范围相同的输出。