如何在所有情况下让 xstring 方法变量与 pgfmacros 一起工作,反之亦然?

如何在所有情况下让 xstring 方法变量与 pgfmacros 一起工作,反之亦然?

我正在尝试用我的命令绘制简单的图形:

\documentclass{article}
\usepackage{tikz}
\usepackage{xstring}
\usepackage{float}

\begin{document}
\newcommand{\lT}[4]{  \draw[line cap=round, line width = 0.5] (#1, #2) -- (#3,#4){}; }

\newcommand{\drawGraph}[1]{
\StrLen{#1}[\mylen];    
\foreach \x in {1,...,\mylen}
{
\pgfmathtruncatemacro{\second}{\x+1};
\foreach \y in {\second}
{
    \StrChar{#1}{\x}[\numA];        
    \StrChar{#1}{\y}[\numB];        
    \pgfmathsetmacro{\rA}{\numA * 0.5};
    \pgfmathsetmacro{\rB}{5 * 0.5};           % problem
    \lT{\x-1}{\rA}{\x}{\rB};        
}}}

  \begin{figure}[H]%
 \begin{tikzpicture}[font=\sffamily, scale=0.50, every node/.style=      {scale=1.00}]  

\drawGraph{1482449257683314302317851};

\end{tikzpicture}%
\end{figure}
\end{document}

像这样,它画了一些东西。问题是,如果我改变线:

\pgfmathsetmacro{\rB}{5 * 0.5}; 

更改为:

\pgfmathsetmacro{\rB}{\numB * 0.5};

它会抛出“!缺少数字,视为零。”错误。带有 \numA 的行正在运行...这可能是我使用不同代码的第十次尝试。我尝试过:\newcounter、\newcount、pgfmacrosss,但总是在某个时候出现相同的错误。那么我遗漏了什么?谢谢。

在我之前的尝试中我尝试了没有第二次 foreach:

\StrChar{#1}{\x}[\numA];
\pgfmathtruncatemacro{\y}{\x + 1};      
\StrChar{#1}{\y}[\numB];        
\pgfmathsetmacro{\rA}{\numA * 0.5};
\pgfmathsetmacro{\rB}{\numB * 0.5};  
\lT{\x-1}{\rA}{\x}{\rB};

同样的错误…

答案1

\x将字符串长度作为最后一个值:

\StrLen{#1}[\mylen];
\foreach \x in {1,...,\mylen}
{

然后\second

\pgfmathtruncatemacro{\second}{\x+1};

大于字符串长度,但是

\StrChar{#1}{\y}[\numB];

\y现在是空的,因为#1在字符串结束后没有提供任何数字,并且空\numB在乘法中是无效的:

\pgfmathsetmacro{\rB}{\numB * 0.5};           % problem

只要提供一个额外的数字,错误就会消失:

\StrChar{#10}{\y}[\numB];

但我不知道其目的是什么,因此我无法说出正确的解决方法是什么。

结果

相关内容