在 \ifnum 中对两个数字求和

在 \ifnum 中对两个数字求和

我想在 LaTeX 中实现一个命令,该命令将两个数字相加,然后将它们与第三个数字进行比较,如下所示:

\ifnum #1+45>0
    above
\else 
    left
\fi

其中#1是角度,单位为度。

不幸的是,它不起作用。

请问,你能帮我解决这个问题吗?

非常感谢。

遵循 Werner 的建议后的完整代码:

\documentclass{memoir}
\usepackage{tikz}
\usetikzlibrary{arrows}

\makeatletter
\newcommand{\compare}[1]{%
  \ifdim\dimexpr#1pt+45pt\relax>\z@\relax
    above%
  \else 
    left%
  \fi
}
\makeatother

% define arrows
% general right to left double harpoon
% define four connection position #5 and connect the arrows in +-5degrees
% first parameter define origin node 
% second parameter define destination node,
% third parameter label of top arrow
% fourth parameter label of bottom arrow
% fifth parameter define connection point - angle in degrees on the origin node
\newcommand{\grldh}[5]{
    \draw[-left to,thick] ({#1}.{#5+5}) -- node[\compare{#5}] {\scriptsize #3} ({#2}.{#5+175});
    \draw[left to-,thick] ({#1}.{#5+355}) -- node[below] {\scriptsize #4} ({#2}.{#5+185}); 
}

\begin{document}
\pagenumbering{gobble}
  \begin{tikzpicture}[
    state/.style={
    % The shape:
    circle,minimum size=3mm,rounded corners=3mm,
    },
     scale=1.5]
    % draw nodes
    \path
          (0,5)  node (N05) [state] {$C$}
          (1,5)  node (N15) [state] {$O$}
          (1,4)  node (N14) [state] {$I$};
    % draw paths
    \grldh{N05}{N15}{$\alpha$}{$\beta$}{0};
    \grldh{N05}{N14}{$\gamma$}{$\delta$}{-45};
    \grldh{N15}{N14}{$\gamma$}{$\delta$}{-90};

    \end{tikzpicture}    
 \end{document}

答案1

有人会认为你正在处理要比较的实数。从这个意义上讲,数字的比较并不合适,因为它们不适用于分数部分。另一方面,尺寸(或长度)则适用。你可以用以下方式欺骗函数,使其处理长度而不是数字:

在此处输入图片描述

\documentclass{article}
\makeatletter
\newcommand{\compare}[1]{%
  \ifdim\dimexpr#1pt+45pt>\z@
    above%
  \else 
    left%
  \fi
}
\makeatother
\begin{document}
$1$ is \compare{1}, % 1 + 45 = 46 > 0 -> above
while $-90$ is \compare{-90} % -90 + 45 = -45 < 0 -> left
and $-45$ is \compare{-45}. % -45 + 45 = 0 ... -> left
\end{document}

该函数以“维度”形式\compare{<num>}使用,将其添加到其中,检查它是否大于(或)并相应地设定条件。<num><num>pt45pt\z@0pt

注意使用%以避免出现虚假空格。请参阅%行末百分号 ( ) 有什么用?

相关内容