\relax 的解释

\relax 的解释

我想制作附件中所示的图像排列。但我不知道如何制作这样的图像排列。请提供解决方案。在此处输入图片描述

答案1

像这样吗?

\documentclass[tikz, border=2mm]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (0,0)--(10,0);
\foreach \i in {1,3,...,9}
    \draw (\i,0) node[below]{0.\i} --++(90:2mm) node[above] {\includegraphics[width=1cm, height=1cm]{example-image-a}};
\foreach \i in {2,4,...,8}
    \draw (\i,0) node[below]{0.\i} --++(90:2mm) +(0,1mm) [<-]--++(90:1.2cm) node[above] {\includegraphics[width=1cm, height=1cm]{example-image-a}};
\draw (10,0) node[below]{1.0} --++(90:2mm) +(0,1mm) [<-]--++(90:1.2cm) node[above] {\includegraphics[width=1cm, height=1cm]{example-image-a}};
\draw (0,0) node[below]{0.0}--++(90:2mm);   

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

以下是使用 TeX\ifodd测试并\pgfmathprintnumber沿水平轴打印刻度的一种方法:

\documentclass{article}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{calc, positioning}

\newcommand*{\myImgWidth}{1.3cm}% to avoid repeating a hardcoded value

\newlength{\myImgHeight}
\settoheight{\myImgHeight}{\includegraphics[width=\myImgWidth]{example-image-a}}

\begin{document}

\begin{tikzpicture}[x=10cm]
  \foreach \X in {0, 1, ..., 10} {
    \pgfmathsetmacro{\XF}{0.1*\X} % \XF is a float

    \node[below] at (\XF,0) {%
      \pgfkeys{/pgf/number format/.cd, fixed, precision=1, fixed zerofill}
      \pgfmathprintnumber{\XF}};
    \draw (\XF,0) -- (\XF,0.2); % the tick mark

    \ifodd\X\relax
      \node[above] at (\XF,0.2)
        {\includegraphics[width=\myImgWidth]{example-image-a}};
    \else
      \draw[->]
        % You may want to replace \myImgHeight with your max. image height
        ($(\XF,0.4) + (0,\myImgHeight)$)
        node[above] {\includegraphics[width=\myImgWidth]{example-image-b}}
        -- (\XF,0.25);
    \fi
  }

  \draw (0,0) -- (1,0);
\end{tikzpicture}

\end{document}

截屏

\relax 的解释

以下是很好的做法,因为在 之后,TeX 会扩展标记\relax,直到收集到 〈number〉。在我们的例子中,它将\ifodd\X\ifodd不是扩展 后停止\X。事实上,\X不是 \countdef示例中的标记(寄存器的别名\count——是一个 〈number〉),它是一个扩展为一位或两位十进制数字。根据 TeX 语法中的 〈number〉,在这些数字之后,TeX 将继续扩展记号,直到找到一个非十进制数字的不可扩展记号(根据语法规则,如果第一个这样的记号是空格记号,则会被吞掉)。因此,如果没有\relax(不可扩展记号),它将尝试扩展\node,这可能会导致麻烦,具体取决于扩展的结果。有了\relax,我们可以确定下面的 〈number〉由和\ifodd的扩展给出\X没有其他的。 你可以阅读这里了解有关此主题的更多详细信息。

相关内容