如何在 LaTeX 中打印带有迭代的增加值?

如何在 LaTeX 中打印带有迭代的增加值?

例如,我想打印所有值 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

答案不使用任何预先存在的循环宏,而是简单地在主打印函数上进行递归

在此处输入图片描述

\documentclass{article}

\def\iter#1#2{#1\ifnum#1<#2\relax, \afterfi\iter{\the\numexpr#1+1\relax}{#2}\fi}
\def\afterfi#1\fi{\fi#1}
\begin{document}

\iter{6}{15}

\end{document}

答案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}

相关内容