缺失数字,在 \loop ... \repeat 中视为零

缺失数字,在 \loop ... \repeat 中视为零

我正在尝试编写简单的宏,其功能是打印字母表中的每一个 n = n + 第 k 个字母,其中 k 和 n 是计数器。所以我需要一个\loop-\repeat构造。我使用了它,但不幸的是它工作不正确。

主要错误是“缺少数字,视为零”,在\repeat写入命令的行中。我也尝试过不使用该\value{n}函数 - 结果相同。

有什么想法可以修复它以使其正常工作吗?

这是我的代码:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\usepackage{amsmath}
\begin{document}
    \newcounter{n}
    \newcounter{k}
    \setcounter{k}{1}
    \setcounter{n}{0}
    \loop
    \alph{ \value{n} }
    \addtocounter{n}{k}
    \ifnum \value{n} < 26 \repeat
\end{document}

答案1

\value在错误的地方使用了它。您需要在的第二个参数中使用它,\addtocounter而不是在中使用它\alph。(我注释掉了与问题不直接相关的包。)

\documentclass{article}
% \usepackage[utf8]{inputenc}
% \usepackage[english, russian]{babel}
% \usepackage{amsmath}
\begin{document}
    \newcounter{n}
    \newcounter{k}
    \setcounter{k}{1}
    \setcounter{n}{0}
    \loop
    \alph{n}
    \addtocounter{n}{\number\value{k}}
    \ifnum \value{n} < 26 \repeat

    Or without spurious spaces:
    \setcounter{n}{0}%
    \loop%
    \alph{n}%
    \addtocounter{n}{\number\value{k}}%
    \ifnum\value{n}<26\repeat
\end{document}

在此处输入图片描述

答案2

该命令\alph以 a 作为参数柜台名称,所以\alph{\value{n}}是不正确的,应该是\alph{n}

该命令\addtocounter接受两个参数;第一个参数是 LaTeX 应该作用的计数器的名称,第二个参数应该是一个整数(任何可能的表示);如果你想将计数器增加n31,你可以这样做

\addtocounter{n}{31}
\addtocounter{n}{"1F} % hexadecimal
\addtocounter{n}{'37} % octal
\addtocounter{n}{\value{mycounter}}

providedmycounter当前存储 31。第二个参数不能仅包含计数器的名称。

因此,您有两个错误调用:(\alph{\value{n}}注意空格)应该是\alph{n},而\addtocounter{n}{k}应该是\addtocounter{n}{\value{k}}

您还会遇到虚假空格和错误顺序的情况(您不会得到z):

\setcounter{k}{1}
\setcounter{n}{0}

\loop
\ifnum\value{n} < 26
\addtocounter{n}{\value{k}}% <--- needed
\alph{n}% <--- needed
\repeat

相关内容