具有多个条件的 \ifdim 命令

具有多个条件的 \ifdim 命令

这是我第一次在这里寻求帮助,所以请不要嘲笑我。
我正在编写一些宏来使用自动检测和标记图表(在 t 中ikz/pgfplots)中的峰值\ifdim。问题是,我有两个条件要结合使用:峰值是>615pt<650pt但我无法让它工作。下面是我目前正在使用的代码,它可以很好地标记高于一个阈值(在本例中为 615pt)的峰值。(代码或多或少是从这里复制的原始代码

\pgfplotsset{
/tikz/max node/.style={mark=none},
mark max/.style={
    point meta rel=per plot,
    visualization depends on={x \as \xvalue},
    scatter/@pre marker code/.code={
        \ifdim\pgfplotspointmetatransformed pt>615pt           
           \def\markopts{mark=none}
            \node[coordinate ,pin = {[rotate=-45]left,inner sep=3pt:{\pgfmathprintnumber[fixed,precision=2,zerofill=true]{\xvalue}}}] at (0,1) {};
        \else
            \def\markopts{mark=none}
        \fi
        \expandafter\scope\expandafter[\markopts]
    },
    scatter/@post marker code/.code={%
        \endscope
    },
    scatter
}}

是否可以用于\ifdim多种条件?我很想有这样的东西: \ifdim\pgfplotspointmetatransformed pt>615pt AND \ifdim\pgfplotspointmetatransformed pt<650pt

答案1

正如史蒂文所说,你可以使用

  \ifdim\mydim>615pt\relax
    \ifdim\mydim<650pt\relax
      in range%
    \else
      above 650%
    \fi
  \else
    below 615%
  \fi

如果两个超出范围的情况的代码相同,并且你不想重复,那么你可以将其构造为

\ifdim\ifdim\mydim>615pt\mydim\else\maxdimen\fi<650pt\relax
  in range%
\else
  out of range%
\fi

答案2

将它们嵌套起来。

\documentclass{article}
\newcommand\mytest{%
  \ifdim\mydim>615pt\relax%
    \ifdim\mydim<650pt\relax%
      in range%
    \else%
      above 650%
    \fi%
  \else%
    below 615%
  \fi}
\begin{document}
\newlength\mydim
\mydim=630pt\relax
\mytest

\mydim=500pt\relax
\mytest

\mydim=700pt\relax
\mytest
\end{document}

enter image description here

相关内容