我想在 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>pt
45pt
\z@
0pt
注意使用%
以避免出现虚假空格。请参阅%
行末百分号 ( ) 有什么用?