foreach 循环中的 Alpha 计数器

foreach 循环中的 Alpha 计数器

我需要一个 foreach 循环中的 alpha 计数器:

\documentclass{article}
\usepackage{tikz}

\makeatletter

\newcommand{\TRAA}[1]{%
    % node/angle list
    \foreach \x/\y [count=\i from 1] in {#1} {%
        \expandafter\xdef\csname Pt@\Alph{\i}\endcsname{\x}
        \expandafter\xdef\csname Ang@\Alph{\i}\endcsname{\y}

    }
\draw (\Pt@A) -- (\Pt@B) ;
}

\makeatother

\begin{document}

essai

\begin{tikzpicture}
\coordinate (C) at (0,0) ;
\coordinate (B) at (109:7) ;

\TRAA{B/71,C/45}

\end{tikzpicture}
\end{document}

答案1

\Alph宏需要一个计数器(正如 Sergei 所述),但在内部它使用\@Alph,它不需要计数器而只需要文字数字。

所以

\makeatletter\@Alph{5}\makeatother

将打印E,因为E是拉丁字母中的第 5 个字母。

\Alph通过作品替换\@Alph,必要的\makeatletter...\makeatother配对已经在OP代码中。

\documentclass{article}
\usepackage{tikz}

\makeatletter

\newcommand{\TRAA}[1]{%
    % node/angle list
  \foreach \x/\y [count=\i from 1] in {#1} {%
      \expandafter\xdef\csname Pt@\@Alph{\i}\endcsname{\x}
      \expandafter\xdef\csname Ang@\@Alph{\i}\endcsname{\y}
    }
    \draw (\Pt@A) -- (\Pt@B) ;
  }

\makeatother

\begin{document}

essai

Omitting a counter \makeatletter\@Alph{5}\makeatother

\begin{tikzpicture}
\coordinate (C) at (0,0) ;
\coordinate (B) at (109:7) ;

\TRAA{B/71,C/45}

\end{tikzpicture}
\end{document}

相关内容