使用 TikZ 和 for 循环替换数字中的字符时出现问题

使用 TikZ 和 for 循环替换数字中的字符时出现问题

我正在尝试使用以下代码编写 for 循环作为绘制 tikz 图片的一部分:

\documentclass[tikz, border=12 pt]{standalone}

\usepackage{stix}
\usetikzlibrary{math, calc}

\newcommand \Label [1]{
    \tikzmath{ 
        \n = #1;
        if \n<0 
        then {\a= -1*\n;  {$\pgfmathprintnumber \a$$-$};}
        else { \a= \n; {$\a$};}
            ;}

}
\begin{document}
\begin{tikzpicture}

\foreach \x in {-13.1,-12.1,...,-1.1} {%
    \draw ($(\x,0) + (0,2pt)$) -- ($(\x,0) + (0,-2pt)$)
        node [below,below=0mm] {\Label \x};
}
\end{tikzpicture}
\end{document}

\x我需要以自定义格式正确显示标签,因此我定义了新命令 \Label。lualatex 我需要在命令中添加一个额外功能\Label,即用字符“٫”替换数字中的每个“.”(如果存在),而这正是我遇到的问题。

我尝试使用该xstring包的一些命令,但它们不起作用。我还有另一个限制,即所有功能都应包含在单个命令中,即\label

谢谢你!

答案1

\Label似乎正在取绝对值。有一个数学函数abs()来执行此操作,因此我只需\Label用如下宏进行替换:

\newcommand\abs[1]{\pgfmathparse{abs(#1)}\pgfmathresult}

这样做会产生:

在此处输入图片描述

完整代码如下:

\documentclass[tikz, border=12 pt]{standalone}

\usepackage{stix}
\usetikzlibrary{math, calc}

\newcommand\abs[1]{\pgfmathparse{abs(#1)}\pgfmathresult}
\begin{document}
\begin{tikzpicture}
  \foreach \x in {-13.1,-12.1,...,-1.1} {%
      \draw ($(\x,0) + (0,2pt)$) -- ($(\x,0) + (0,-2pt)$)
          node [below,below=0mm] {$\abs\x$};
  }
\end{tikzpicture}
\end{document}

相关内容