如何有条件地旋转 TikZ 中的标签?

如何有条件地旋转 TikZ 中的标签?

我想创建一个宏,将标签放在 TiZ\draw环境;按照以下规律旋转:alfa<180,then rotate=alfa,else rotate=alfa-180

我的代码(其中#7是角度,#6是标签)

\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary[calc,intersections]
\newcommand{\llave}[7]
{ \pgfmathifthenelse{#7<180}{#7}{#7-180};
    \draw[rotate around={#7:#2},#1] #2 %
    ..controls +(90:#4mm) and +(-90:#4mm) .. ++(2,#4mm)%
    ..controls +(-90:#4mm) and +(90:#4mm) .. +(2,-#4mm)%
    ($#2+(#3,#4mm+#5mm)$) node[rotate=\pgfmathresult]{#6, \pgfmathresult};
}
\begin{document}
    \begin{tikzpicture}[scale=1.2]
     \llave{blue!50!black}{(5,-2)}{2}{3}{3}{$H_1$}{181}
    \end{tikzpicture}
\end{document}

总是返回-8.53581一个标签的角度,在181-->的例子中\pgfmathresult应该是1。有什么想法吗?(请避免倾斜的范围)

答案1

我怀疑它\pgfmathresult在你设置和使用它之间被覆盖了。无论如何,以下代码似乎有效:

\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary[calc,intersections]
\newcommand{\llave}[7]
{ \pgfmathsetmacro\myangle{ifthenelse(#7<180,#7,#7-180)}
    \draw[rotate around={#7:#2},#1] #2 %
    ..controls +(90:#4mm) and +(-90:#4mm) .. ++(2,#4mm)%
    ..controls +(-90:#4mm) and +(90:#4mm) .. +(2,-#4mm)%
    ($#2+(#3,#4mm+#5mm)$) node[rotate=\myangle]{#6, \myangle};
}
\begin{document}
    \begin{tikzpicture}[scale=1.2]
     \llave{blue!50!black}{(5,-2)}{2}{3}{3}{$H_1$}{181}
    \end{tikzpicture}
\end{document}

输出为:

在此处输入图片描述

如果你希望角度为整数,那么你应该使用

\pgfmathsetmacro\myangle{ifthenelse(#7<180,int(#7),int(#7-180))}

相关内容