我需要一个 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}