> restart:with(plots):

> a:=arcsinh(1.):
h:=1:l:=h:
phi:=t->cosh(t-2*a*floor((t+a)/2/a)):
chain:=plot(-phi,-5..6,scaling=constrained):

> n:=5:
bx:=k*a/n:
b:=bx-2*a*floor((bx+a)/2/a):
d:=3*a:
bby:=bx+d:
bb:=bby-2*a*floor((bby+a)/2/a):
c:=seq(display([polygonplot([
[bx+(1-sinh(b))/cosh(b),-(1+sinh(b))/cosh(b)],
[bx+(1+sinh(b))/cosh(b),(1-sinh(b))/cosh(b)],
[bx-(1-sinh(b))/cosh(b),(1+sinh(b))/cosh(b)],
[bx-(1+sinh(b))/cosh(b),-(1-sinh(b))/cosh(b)]],color=yellow),
plot([[bx,0]],style=point,symbol=circle,color=black),
polygonplot([
[bby+(1-sinh(bb))/cosh(bb),-(1+sinh(bb))/cosh(bb)],
[bby+(1+sinh(bb))/cosh(bb),(1-sinh(bb))/cosh(bb)],
[bby-(1-sinh(bb))/cosh(bb),(1+sinh(bb))/cosh(bb)],
[bby-(1+sinh(bb))/cosh(bb),-(1-sinh(bb))/cosh(bb)]],color=yellow),
plot([[bby,0]],style=point,symbol=circle,color=black),
polygonplot([[bx-1.5,-1/2],[bx+4,-1/2],[bx+2,1.5],[bx,1.5],[bx-0.5,0.5],[bx-1.5,0.5]],color=aquamarine)]),k=-6*n..4*n):

> display([chain,plot(0,-5..6,color=blue),display([c],insequence=true)],view=[-10..10,-2..2],axes=none);

[Maple Plot]

>