答案1
这是可能的Asymptote
解决方案。
//
// diag1.asy
//
// run
// asy diag1.asy
//
// to get a standalone diag1.pdf graphic file
//
settings.tex="pdflatex";
size(8cm);
import fontsize;defaultpen(fontsize(12pt));
texpreamble("\usepackage{lmodern}\usepackage{amsmath}"
+"\usepackage{amsfonts}\usepackage{amssymb}");
pen pen1=darkblue+ 0.7bp;
pen dashPen=darkblue+0.7bp+linetype(new real[]{5,5})+linecap(0);
arrowbar midarr=MidArrow(HookHead,size=2);
pair A,B,C,D,E,F,G,H,I;
A=(0,0); B=(184,122); C=(235.8,201+2/3);
D=(308,227); E=(380.2,252+1/3); F=(472.8,223+1/3);
G=(457,119); H=(441.2,14+2/3); I=(317,-165);
guide g=A .. controls B and C .. D
.. controls E and F .. G
.. controls H and I .. A;
real phi0=180+degrees(dir(g,0));
real phi=phi0-degrees(dir(g));
int n=8;
real[] ti;
for(int i=0;i<=n;++i)ti.push(reltime(g,i/n));
pair[] L;
for(int i=0;i<=n;++i)L[i]=relpoint(g,i/n);
pair[] p={A,L[1],L[2],L[3],L[6],L[7]};
guide rib1=L[1]{dir(-90)}..A{dir(phi0-1*phi/n)};
guide rib2=L[2]{dir(-90)}..A{dir(phi0-2*phi/n)};
guide rib3=L[3]{dir(-90)}..A{dir(phi0-3*phi/n)};
guide rib6=L[6]{dir( 90)}..A{dir(phi0-6*phi/n)};
guide rib7=L[7]{dir( 90)}..A{dir(phi0-7*phi/n)};
draw(g,pen1);
draw(rib1,pen1+0.4*bp,midarr);
draw(rib2,pen1+0.4*bp,midarr);
draw(rib3,pen1+0.4*bp,midarr);
draw(rib6,pen1+0.4*bp,midarr);
draw(rib7,pen1+0.4*bp,midarr);
string[] plabels={"\chi_0", "\ell(t_1)", "\ell(t_2)",
"\ell(t_3)", "\ell(t_{n-2})", "\ell(t_{n-1})"};
pair[]ppos={plain.SW, plain.NW, plain.NW,
plain.N, plain.S, plain.S};
dot(p,UnFill);
for(int i;i<plabels.length;++i){
label("$"+plabels[i]+"$",p[i],ppos[i]);
}
同样,第二张图
//
// diag2.asy
//
// run
// asy diag2.asy
//
// to get a standalone diag2.pdf graphic file
//
settings.tex="pdflatex";
size(8cm);
import fontsize;defaultpen(fontsize(10pt));
texpreamble("\usepackage{lmodern}\usepackage{amsmath}"
+"\usepackage{amsfonts}\usepackage{amssymb}");
pen pen1=darkblue+ 0.7bp;
pen dashPen=darkblue+0.7bp+linetype(new real[]{5,5})+linecap(0);
arrowbar midarr=MidArrow(HookHead,size=2);
pair A,B,C,D,E,F,G,H,I;
A=(0,0); B=(184,122); C=(235.8,201+2/3);
D=(308,227); E=(380.2,252+1/3); F=(472.8,223+1/3);
G=(457,119); H=(441.2,14+2/3); I=(317,-165);
guide g=A .. controls B and C .. D
.. controls E and F .. G
.. controls H and I .. A;
real phi0=180+degrees(dir(g,0));
real phi=phi0-degrees(dir(g));
int n=8;
real[] ti;
for(int i=0;i<=n;++i)ti.push(reltime(g,i/n));
pair[] L;
for(int i=0;i<=n;++i)L[i]=relpoint(g,i/n);
pair[] p={A,L[1],L[2],L[4],L[5],L[7]};
guide rib1=L[1]{dir(-90)}..A{dir(phi0-1*phi/n)};
guide rib2=L[2]{dir(-90)}..A{dir(phi0-2*phi/n)};
guide rib4=A{dir(180+phi0-4*phi/n)}..L[4]{dir(60)};
guide rib5=L[5]{dir(176)}..A{dir(phi0-5*phi/n)};
guide rib7=L[7]{dir( 90)}..A{dir(phi0-7*phi/n)};
path g1=subpath(g,0,ti[4]);
path g2=subpath(g,ti[4],ti[5]);
path g3=subpath(g,ti[5],ti[8]);
draw(g3&g1,dashPen+0.4*bp);
draw(g2,pen1+0.4*bp,midarr);
draw(rib1,dashPen+0.4*bp,midarr);
draw(rib2,dashPen+0.4*bp,midarr);
draw(rib4,pen1+0.4*bp,midarr);
draw(rib5,pen1+0.4*bp,midarr);
draw(rib7,dashPen+0.4*bp,midarr);
string[] plabels={"\chi_0", "\ell(t_1)", "\ell(t_2)",
"\ell(t_{i-1})", "\ell(t_i)", "\ell(t_{n-1})"};
pair[]ppos={plain.SW, plain.NW, plain.NW,
plain.E, plain.SE, plain.SW};
dot(p,UnFill);
for(int i;i<plabels.length;++i){
label("$"+plabels[i]+"$",p[i],ppos[i]);
}
label("$\eta_{i-1}$",relpoint(rib4,0.7),plain.NW);
label("$\eta_i^{-1}$",relpoint(rib5,0.15),plain.NE);
label("$\ell_i$",relpoint(g2,0.5),plain.E);