使用 Luatex 绘制几何序列

使用 Luatex 绘制几何序列

我想重新创建以下几何序列,不带颜色和字体:

在此处输入图片描述

用 Lua 编写序列器非常简单:

\begin{luacode}

local sequence = {}
function geo_seq (a, r, n)
   for i = 1, n do
   x = a * r^(i-1)
   sequence[#sequence+1] = x
   end
   return x
end

\end{luacode}

这将创建一个表,{1, 2, 4, 8, 16} 我的计划是将其用作列表传递给 tikz 绘制函数:

\newcommand\printseqq[3]{\directlua{print_seq(#1,#2,#3)}}

\begin{tikzpicture}[scale = 0.4]
 \draw[latex-latex] (0,0) -- (21,0);
 \foreach \x in {0,...,21}
 \draw[shift={(\x,0)},color=black] (0pt,0pt) -- (0pt,-2pt) node[below]
 % \foreach \x in \printseqq{1}{2}{5}
 % \draw[->, bend left] (0,0) to (\x,0);
  {$\x$};
\end{tikzpicture}

类似的东西在哪里print_seq

function print_seq (a, r, n)
  geo_seq(a, r, n)
  tex.print("")
  for index, value in ipairs(sequence) do
  tex.print(math.floor(value)..[[, ]])
  tex.print("")
  end
end

但我似乎无法传递表或tex.print以允许我指定 tikz 使用的节点的方式使用函数。

这是我迄今为止对箭头绘制尝试的评论,如上: 在此处输入图片描述

答案1

在等待TikZ或时...,你可以使用渐近线

unitsize(0.55cm,cm);

picture circlecross()
{
  picture pic; // procedure
  unitsize(pic,cm);
  //------------
    path c=circle(0,0.3);
    path cross=0.2dir(-45)--0.2dir(135);
    fill(pic,c,yellow);
    draw(pic,cross^^rotate(90)*cross,orange);
    label(pic,scale(1.2)*"$2$",0.35dir(0),orange);
  //------------
  return pic;
}
//add(circlecross());

// For contruction axis
draw((0,0)--(17,0));
real a=0.2;
for (int i=1; i<=16; ++i)
{
  draw(Label("$"+(string) i+"$",BeginPoint),(i,-a)--(i,a),blue);
}
draw(scale(0.8)*Label("$0$",BeginPoint),(0,-a)--(0,a),orange);

// For arcs and circlecross()
pen pp=orange+1.2bp+linecap(0);
draw((1,-.75){dir(-70)}..(1.5,-1.3)..{dir(70)}(2,-.75),pp);
add(circlecross().fit(),(1.5,-1.3));
draw((2,-.75){dir(-50)}..(3,-1.3)..{dir(50)}(4,-.75),pp);
add(circlecross().fit(),(3,-1.3));
draw((4,-.75){dir(-30)}..(6,-1.3)..{dir(30)}(8,-.75),pp);
add(circlecross().fit(),(6,-1.3));
draw((8,-.75){dir(-20)}..(12,-1.3)..{dir(20)}(16,-.75),pp);
add(circlecross().fit(),(12,-1.3));
draw((16,-.75){dir(-20)}..{dir(-10)}(17,-1),pp);

在此处输入图片描述

也许我的代码看起来很长,因为 Asymptotenow还没有任何用于绘图的包node(所有示例都与deferred drawing需要许多知识相关(simplex methods...))。

相关内容