我设置了一个命令来计算节点的变换位置,因为我想将这些节点置于已旋转的矩形上方。因此,我没有使用计算器手动计算值,而是尝试将其自动化。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{physics}
\newcommand{\rotateX}[5]{\pgfmathparse{cos(#5)*(#1-#3)-sin(#5)*(#2-#4)+#3}\pgfmathresult}
\newcommand{\rotateY}[5]{\pgfmathparse{sin(#5)*(#1-#3)+cos(#5)*(#2-#4)+#4}\pgfmathresult}
\begin{document}
\begin{tikzpicture}
...
% Line 27
\node at (\rotateX{-0.5}{3.5}{-2}{1}{40},\rotateY{-0.5}{3.5}{-2}{1}{40}) {$\mathcal{C}\left(\vb*{A}^\top\right)$};
...
\end{tikzpicture}
\end{document}
该\rotateX
命令本身运行良好,但我无法将此输出用作 TikZpicture 中节点的位置。
我收到的错误:
Incomplete \iffalse; all text was ignored after line 27.
<inserted text>
\fi
<*> main.tex
我想要的(手动输入的位置):
\node at (-2.4579,3.87929) {$\mathcal{C}\left(\vb*{A}^\top\right)$};
(我添加了网格线和轴来显示它正好位于(-2.4579,3.87929))
任何帮助,将不胜感激。 :)
答案1
只需删除\pgfmathparse
和\pgfmathresult
,Ti钾无论如何,Z 都会解析坐标。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{physics}
\newcommand{\rotateX}[5]{{cos(#5)*(#1-#3)-sin(#5)*(#2-#4)+#3}}
\newcommand{\rotateY}[5]{{sin(#5)*(#1-#3)+cos(#5)*(#2-#4)+#4}}
\begin{document}
\begin{tikzpicture}
...
% Line 27
\node at (\rotateX{-0.5}{3.5}{-2}{1}{40},\rotateY{-0.5}{3.5}{-2}{1}{40})
{$\mathcal{C}\left(\vb*{A}^\top\right)$};
...
\end{tikzpicture}
\end{document}
由于您对 x 和 y 使用相同的参数,因此您可以将它们放在一个宏中(如果您确实想使用宏)。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{physics}
\newcommand{\rotateX}[5]{{cos(#5)*(#1-#3)-sin(#5)*(#2-#4)+#3}}
\newcommand{\rotateY}[5]{{sin(#5)*(#1-#3)+cos(#5)*(#2-#4)+#4}}
\newcommand{\rotateXY}[5]{(\rotateX{#1}{#2}{#3}{#4}{#5},\rotateY{#1}{#2}{#3}{#4}{#5})}
\begin{document}
\begin{tikzpicture}
...
% Line 27
\node at \rotateXY{-0.5}{3.5}{-2}{1}{40}
{$\mathcal{C}\left(\vb*{A}^\top\right)$};
...
\end{tikzpicture}
\end{document}
答案2
请始终发布可用的示例,这未定义\vb
,但您需要将计算与\node
必须扩展为数字的参数分开。
\documentclass{standalone}
\usepackage{tikz}
\newcommand{\rotateX}[5]{\pgfmathparse{cos(#5)*(#1-#3)-sin(#5)*(#2-#4)+#3}\let\myX\pgfmathresult}
\newcommand{\rotateY}[5]{\pgfmathparse{sin(#5)*(#1-#3)+cos(#5)*(#2-#4)+#4}\let\myY\pgfmathresult}
\begin{document}
\begin{tikzpicture}
...
% Line 27
\rotateX{-0.5}{3.5}{-2}{1}{40}%
\rotateY{-0.5}{3.5}{-2}{1}{40}%
\node at (\myX,\myY) {$\mathcal{C}\left(\vb*{A}^\top\right)$};
...
\end{tikzpicture}
\end{document