使用etoolbox
、ifthen
或其他形式的条件检查,如何检查某个值是否是 4 的倍数?例如,如果数字是 4、8、12、16 等,则返回“true”。
答案1
你可以使用pgfmath
以下方法:
\documentclass{article}
\usepackage{pgf}
\begin{document}
\newcommand\ifismultiple[4]{%
\pgfmathparse{mod(#1,#2)==0}
\ifnum \pgfmathresult=1
#3%
\else
#4%
\fi
}
\ifismultiple{15}{4}{true}{false}
\end{document}
答案2
\ifodd
就足以做到这一点
\documentclass[]{scrartcl}
\newcount\myint
\def\IsFourMultiple#1{%
\myint#1\relax
\ifodd\myint
false
\else
\divide\myint by2\relax
\ifodd\myint
false
\else
true
\fi
\fi}%
\begin{document}
\IsFourMultiple{4}
\IsFourMultiple{32}
\IsFourMultiple{15}
\end{document}
答案3
使用 eTeX \numexpr
,您可以轻松做到这一点。
\makeatletter
\newcommand{\doifmultipleof}[2]{%
\ifnum\numexpr((#2)/(#1))*(#1)-(#2)=0
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi}
\makeatother
\documentclass{article}
\begin{document}
\doifmultipleof{4} {6}{true}{false} % => false
\doifmultipleof{5}{10}{true}{false} % => true
\end{document}
答案4
\documentclass{minimal}
\def\IsFourMultiple#1{%
\ifdim\dimexpr#1pt/4=\numexpr#1/4pt true\else false\fi}
\begin{document}
\IsFourMultiple{4}
\IsFourMultiple{32}
\IsFourMultiple{15}
\end{document}