这基本上就是我尝试做的事情:
\begin{tikzpicture}
\foreach \x in {1,2,3,4,5}
{
\draw (\x,1) node{\Alph{\x}};
}
\end{tikzpicture}
但如果我这样做,我会得到
ERROR: Missing number, treated as zero.
我尝试在数字前加上前缀\the
:
\begin{tikzpicture}
\foreach \x in {1,2,3,4,5}
{
\draw (\x,1) node{\Alph{\the\x}};
}
\end{tikzpicture}
并得到:
ERROR: You can't use `the character 1' after \the.
在 TeX.SE 上搜索后,我认为以下解决方案应该可行:
\begin{tikzpicture}
\foreach \c [count=\x] in {{A},{B},{C},{D},{E}}
{
\draw (\x,1) node{\c};
}
\end{tikzpicture}
\x
然而,这导致我出现未定义的错误。
那么,我怎样才能获得期望的结果?
答案1
\Alph
期望其参数为计数器名称;在您的情况下,LaTeX 会查找名为的不存在的计数器1
,2
等等。
一种解决方法是使用将数字转换为字母的内部命令,即\@Alph
:
\makeatletter
\newcommand{\myAlph}[1]{\expandafter\@Alph#1}
\makeatother
\begin{document}
\begin{tikzpicture}
\foreach \x in {1,2,3,4,5}
{
\draw (\x,1) node{\myAlph{\x}};
}
\end{tikzpicture}
\end{document}
或者,更深奥的
\newcommand{\myAlph}[1]{\char\numexpr`A-1+#1\relax}
将执行相同的操作,但与另一个完全不同,因为前者将字母留在输入流中。而后者留下打印字母的指令。