\foreach 和 \StrLen

\foreach 和 \StrLen

我不知道如何制作一个包含 StrLen 的 foreach,这可能吗?

\documentclass[a4paper,12pt,hidelinks]{article}

\usepackage[utf8]{inputenc} 
\usepackage[brazil]{babel}
\usepackage[T1]{fontenc}

\usepackage{filecontents}
\usepackage{csvsimple}
\usepackage{xstring}
\usepackage{alphalph}
\usepackage{etoolbox}
\usepackage{tikz}

\newcommand \nveics {2}

\newcommand \alfanumchassi {136564765}
\newcommand \alfanumchassib {36564765}

\ifdef{\alfanumchassi}{\StrLen{\alfanumchassi}[\chassi]}{}
\StrLen{\alfanumchassib}[\chassib]

% \foreach \n in {b,...,\alphalph{\nveics}}{
% \IfStrEq{\csname \x \endcsname}{s}{\global\renewcommand \furtodanoimovel {n}}{}
% }

\begin{document}

{\chassi}\\

{\chassib}\\

\end{document}

如果我注释“\StrLen{\alfanumchassib}[\chassib]”并取消注释“\foreach \n in {b,...,\alphalph{\nveics}}{...”,则会出现很多错误。

答案1

很难猜出你想做什么。

  1. 您拥有\foreach \n并使用\x

  2. \csname\x\endcsname可能是一个错误,因为它通常是未定义的

  3. \global\renewcommand不会进行全球重新定义

  4. 在您的代码中\furtodanoimovel没有定义,因此\renewcommand无论如何都会引发错误。

以下版本或许能满足您的需求:

\documentclass{article}

\usepackage{xstring}
\usepackage{alphalph}
\usepackage{tikz}

\newcommand \nveics {4}

\foreach \x in {b,...,\alphalph{\nveics}}{
  \IfStrEq{\x}{c}{\gdef\furtodanoimovel{n}}{}
 }

\begin{document}

\texttt{\meaning\furtodanoimovel}

\end{document}

在此处输入图片描述

如你所见,宏\furtodanoimovel已经定义好了。

答案2

非常抱歉,foreach 里面的脚本是错误的,正确的做法是将 \StrLen 放在里面,这给了我一个错误,我不知道如何制作它或在这种情况下使用类似于 \StrLen 的其他命令。

在 \foreach 中使用 \x 或 \n 有什么区别?我想我可以使用任何命令,如 \w、\z 或任何不存在的命令。

相关内容