答案1
可能的Asymptote
版本:
//
// diag.asy
//
// run
// asy diag.asy
//
// to get a standalone diag.pdf
settings.tex="pdflatex";
unitsize(1pt);
import fontsize;defaultpen(fontsize(7));
texpreamble("\usepackage{lmodern}");
string stop="set theory";
string[] sleft={
"general topology", "partial orderings", "Boolean algebras", "measures and integrals",
"integral equations", "differential equations", "complex analysis", "summation methods",
"model theory", "numerical methods", "approximation", "splines and wavelets",
"analytic complexity", "Coding theory", "mathematical finance", "learning theory",
};
string sbot="probability theory";
string[] sright={
"linear algebra", "multilinear algebra", "categories", "combinatorics",
"integral transforms", "orthogonal series", "harmonic analysis", "K-theory",
"global analysis", "convex geometry", "optimization", "game theory",
"control theory", "calculus of variations", "ergodic theory", "quantum physics",
};
string s0="topological linear spaces";
string s1="Banach spaces";
string s2="linear operators";
string s3="Banach lattices";
string s4="Banach algebras";
int n=sleft.length;
real dh=8;
real r=n*dh/2;
real R=1.1*r;
pair O=0,p;
for(int i=1;i<n;++i){
p=R*(sqrt(1-(1-dh/r*i)^2),1-dh/r*i);
label(sright[i-1],p,plain.E);
label(sleft[i-1],(-p.x,p.y),plain.W);
}
draw(circle(O,r),deepblue+0.6);
label(stop,(0,R));
label(sbot,(0,-R));
label(s0,(0,0.4r));
label("\textsc{"+s1+"}",O,plain.N);
label("\textsc{"+s2+"}",O,plain.S);
label(s3,(0,-0.4r));
答案2
这是 tikz 版本。我使用圆周方程,借助\foreach
命令(每侧一个)将节点定位在圆的周围。
\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[thick] (0,0) circle (4 cm);
\foreach[count=\j]\i in
{%
{Misty morning, clouds in the sky},
{Without warning, the wizard walks by},
{Casting his shadow, weaving his spell},
{Funny clothes, tinkling bell},
{},
{Never talking},
{Just keeps walking},
{spreading his magic},
{},
{Evil power disappears},
{Demons worry when the wizard is near},
{He turns tears into joy},
{Everyone's happy when the wizard walks by}
}
{%
\pgfmathsetmacro\y{4-0.5*\j}
\pgfmathsetmacro\x{sqrt(16-\y*\y)+0.2}
\node[left] at (-\x,\y) {\i};
}
\foreach[count=\j]\i in
{%
{Never talking},
{Just keeps walking},
{spreading his magic},
{},
{Sun is shining, clouds have gone by},
{All the people give a happy sigh},
{He has passed by, giving his sign},
{Left all the people feeling so fine},
{},
{Never talking},
{Just keeps walking},
{spreading his magic},
}
{%
\pgfmathsetmacro\y{4-0.6*\j}
\pgfmathsetmacro\x{sqrt(16-\y*\y)+0.2}
\node[right] at (\x,\y) {\i};
}
\node at (0, 1) {\large\bfseries Black Sabbath};
\node at (0,-1) {\bfseries The Wizard};
\node[red] at (0, 4) [above] {T. Butler, F. Iommi,};
\node[red] at (0,-4) [below] {W. Ward, J. Osbourne};
\end{tikzpicture}
\end{document}