我正在尝试使用以下代码编写 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}