例如,我想打印所有值 x + 1 并重复 n 次
在 Python 中它将是:
def arithmetic_add_1_(n,x):
for k in range(n):
print(x)
x = x+1
print(x)
其中 n -> 重复次数,x -> 起始编号
答案1
以下是实现此操作的一种方法expl3
:
\documentclass{article}
\ExplSyntaxOn
% #1: start number
% #2: number of repetitions
\cs_new_protected:Nn \debush_arithmetic_incr:nn
{
\int_set:Nn \l_tmpa_int {#1}
\int_do_while:nNnn { \l_tmpa_int } < { #1 + #2 }
{
\int_use:N \l_tmpa_int
\c_space_tl
\int_incr:N \l_tmpa_int
}
}
\NewDocumentCommand { \ArithmeticIncr } { m m }
{
\debush_arithmetic_incr:nn {#1} {#2}
}
\ExplSyntaxOff
\begin{document}
\ArithmeticIncr{10}{8}
\end{document}
答案2
您可以使用非常基本的方法做到这一点。
\documentclass{article}
\newcommand{\ArithmeticAdd}[2]{\edef\myindex{#1}%
\loop
\myindex\par% replace \par by whatever allows you to separate the integers
\edef\myindex{\the\numexpr\myindex+1}%
\ifnum\myindex<\numexpr#1+#2+1\relax
\repeat}
\begin{document}
\ArithmeticAdd{12}{7}
\end{document}
人们还可以使用计数器(但如果其他例程使用该计数器,则名称空间可能会出现问题),并且还tikzmath
支持更接近您的代码的语法。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{math}
\begin{document}
\tikzmath{function arithmeticadd(\x,\y) {int \k;
for \k in {\x,...,\the\numexpr\x+\y}
{print{\k};};
};
arithmeticadd(12,7);
}
\end{document}
答案3
答案4
您可以利用该pgffor
包。查看更多手册,第 88 节 重复操作:Foreach 语句。
\documentclass{article}
\usepackage{pgffor}
\begin{document}
This is a list of numbers:
\foreach \i in {6,7,...,30}{\i, }
this is the alphabetic list
\foreach \i in {a,...,z}{\i, }
and this is the alphabetic list in capital
\foreach \i in {A,C,...,Z}{\i, }
\end{document}