绘制带有文本的圆圈

绘制带有文本的圆圈

你好,我不知道如何在 LaTeX 中绘制下图:

![圆圈](https://ibb.co/cdtJLa)

有人有什么想法吗?

我只画出了这个“太阳网格”:

    \documentclass[a4paper]{book}
 \usepackage{tikz}

\begin{document}
\begin{tikzpicture}[scale=5]
%\\ intenditur per se in\\ qua est salus subditorum
 \node at (-0.15, 0.9) {\tiny Justicia vero};
 \node at (-0.25, 0.85) {\tiny est que intenditur per};
 \node at (-0.288, 0.8) {\tiny se in qua est salus subdi-};
  \node at (-0.08, 0.75) {\tiny torum};
  %Mundus est ortus seu viridarium , ejus materi vel substancia vel sepes ejus est judicium (scilicet Dei angelorum, et hominum).

  %Judicium est dominator vallatus vel dominacio vallata lege

  % Lex est qua rex regit regum

  % Et rex est pator qui defenditur a proceribus

  %Proceres sunt stipendiarii sustentati pecunia 

  %Pecunia vero est fortuna que colligatur a subditis 

  % Subditi autem sunt servi quos subjecit justicia
\draw (-1,0) -- (-0.3,0);
\draw (0.3,0) -- (1,0);
\draw (-0.71,-0.71) -- (-0.21,-0.21);
\draw (0.71,0.71) -- (0.21,0.21);
\draw (0,-1) -- (0,-0.3);
\draw (0,0.3)node[align=center, below] {\\ \\ \\circulum\\firmamenti} -- (0,1);
\draw (-0.21,0.21) -- (-0.71,0.71);
\draw (0.21,-0.21) -- (0.71,-0.71);
\draw (0,0) circle (1cm) ;
\draw (0,0) circle (0.3cm);

\end{tikzpicture}
\thispagestyle{empty}
\end{document}

答案1

Z 在创建曲线文本方面表现不佳。为了获得更好的效果,请尝试 MetaPost。

但是,这里有一个使用 Ti 的方法Z 的decorations.text库并使基本布局的代码更加简洁。

\documentclass[border=10pt,multi,tikz,10pt]{standalone}
\usetikzlibrary{decorations.text}
\usepackage{venturis}
\begin{document}
\newlength\circleradius
\setlength\circleradius{50mm}
\begin{tikzpicture}
  \draw [clip] (0,0) circle (\circleradius) circle (.3\circleradius);
  \foreach \i in {0,45,...,135} \draw (\i:\circleradius) -- (\i:.3\circleradius) ({\i+180}:.3\circleradius) -- ({\i+180}:\circleradius);
  \node [align=center, font=\large] {circulum\\firmamenti};
  \foreach \i/\j/\k in
  {
    -225/.925/Justicia vero est que,
    -225/.875/intenditur per se in qua,
    -225/.825/est solus,
    -225/.775/subditorum,
    -270/.925/Mundus est ortus seu,
    -270/.875/{viridarium, ejus materi},
    -270/.825/{vel, substancia vel},
    -270/.775/sepes ejus est,
    -270/.725/{judicium (scilicet,},
    -270/.675/{Dei angelorum, et},
    -270/.625/{hominum).},
    -315/.925/Judicium est dominator,
    -315/.875/vallatus vel dominacio,
    -315/.825/vallata lege,
    0/.925/Lex est qua rex regit,
    0/.875/regum,
    -45/.925/Et rex est pator qui,
    -45/.875/defenditur a proceribus,
    -90/.925/Proceres sunt stipendiarii,
    -90/.875/sustentati pecunia,
    -135/.925/Pecunia vero est fortuna,
    -135/.875/que colligatur a subditis,
    -180/.925/Subditi autem sunt servi,
    -180/.875/quos subjecit justicia
  }
  \path [decorate, decoration={text along path, text=\k, text align=center}] (\i:{\j*\circleradius}) arc (\i:{\i-45}:{\j*\circleradius});
\end{tikzpicture}
\end{document}

Ti*k*Z 曲线文字

答案2

也许我的标准较低,但尽管 tikz 在将文本沿曲线放置方面并不出色,但我认为在这种情况下它可以做得相当不错:

\documentclass[tikz,border=5]{standalone}
\usepackage{chancery}
\usepackage[T1]{fontenc}
\usetikzlibrary{decorations.text}
\tikzset{curved text/.style={
  decoration={text effects along path,
  text/.expanded=#1, text align=center,
  text effects/.cd, text along path, decorate}}
}
\begin{document}
\begin{tikzpicture}[x=1em,y=1em]
\draw circle [radius=14] circle [radius=5]
  \foreach \i in {0,...,7}{ (\i*45:14) -- (\i*45:5) };
\node [align=center] {circulum \\ firmamenti};
\foreach [count=\a from 0] \text in {%
{
  Mundus est ortus seu, {viridarium, ejus materi},
  vel substancia vel, sepes ejus est,
  judicium (scilicet, Dei angelorum, et hominum)
},
{
  Juicium est dominator,
  vallatus vel dominacio, vallata lege
},
{
    Lex est qua rex regit, regum
},
{
    Et rex est pator qui, defenditur a proceribus
},
{
    Procesres sunt stipendiarii, sustentati pecunia
},
{
    Pecunia vero est fortuna, que colligator a subditis
},
{
    Subditi autem sunt servi, quos subjecit justicia
},
{
    Justicia vero est que, intenditur per se in,
    qua est solus, subditorum
}}
\foreach \t [count=\r] in \text
  \path [curved text=\t, rotate=-\a*45] 
    (90:14-\r) arc (90:45:14-\r);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

这是我之前使用 MetaPost 的答案的一个版本。

MetaPost 曲线文本

这是一个变体。

MetaPost 变体弯曲文本

% !MPOST tex = etex
% !MPOST pdf = on
% !MPOST preview = on
% !MPOST titles = off

input latexmp
setupLaTeXMP(preamblefile="textpath-preamble");
input textpath

prologues := 3;
outputtemplate := "%j%c.mps";

% ateb: http://tex.stackexchange.com/a/358528/ addaswyd o gwestiwn dawicz: http://tex.stackexchange.com/q/358243/
% gweler hefyd: tikz-circulum-firmamenti.tex

beginfig(1)
    transform T;
    c:=10cm;
    sc:=.3*c;
    ic:=.15*c;
    oc:=.5*c;
    ac:=.925*c;
    bc:=.86*c;
    cc:=.795*c;
    dc:=.73*c;
    ec:=.665*c;
    fc:=.6*c;
    gc:=.535*c;
    hc:=.47*c;
    jc:=.405*c;
    draw fullcircle scaled c withpen pensquare;
    draw fullcircle scaled sc withpen pensquare;
    z0=(0,0);
    z1=(0,oc);
    z2=(0,ic);
    z3=(-ic,.1*ic);
    z4=(ic,.1*ic);
    z5=(-ic,-.1*ic);
    z6=(ic,-.1*ic);
    path pb;
    pb := z1--z2;
    for i=45 step 45 until 360:
      draw pb rotated i withpen pensquare;
    endfor;
    def f="\usefont{T1}{yvtjw}{m}{n}" enddef;
    ta:=-67.5;
    for t="Justicia vero est que","Mundus est ortus seu","Judicium est dominator","Lex est qua rex regit","Et rex est pator qui","Proceres sunt stipendiarii","Pecunia vero est fortuna","Subditi autem sunt servi":
      draw textpathFont(f, t, reverse fullcircle rotated ta scaled ac, .5);
      ta:=ta-45;
    endfor;
    for t="intenditur per se in","viridarium, ejus materi","vallatus vel dominacio","regum","defenditur a proceribus","sustentati pecunia","que colligatur a subditis","quos subjecit justicia":
      draw textpathFont(f, t, reverse fullcircle rotated ta scaled bc, .5);
      ta:=ta-45;
    endfor;
    ta:=-67.5;
    for t="qua est solus","vel, substancia vel","vallata lege":
      draw textpathFont(f, t, reverse fullcircle rotated ta scaled cc, .5);
      ta:=ta-45;
    endfor;
    ta:=-67.5;
    for t="subditorum","sepes ejus est":
      draw textpathFont(f, t, reverse fullcircle rotated ta scaled dc, .5);
      ta:=ta-45;
    endfor;
    draw textpathFont(f, "judicium", reverse fullcircle rotated -112.5 scaled ec, .5);
    draw textpathFont(f, "(scilicet, Dei", reverse fullcircle rotated -112.5 scaled fc, .5);
    draw textpathFont(f, "angelorum,", reverse fullcircle rotated -112.5 scaled gc, .5);
    draw textpathFont(f, "et", reverse fullcircle rotated -112.5 scaled hc, .5);
    draw textpathFont(f, "hominum).", reverse fullcircle rotated -112.5 scaled jc, .5);
    path pa;
    path pc;
    pa:=(z3)--(z4);
    draw textpathFont(f, "circulum", pa, .5);
    pc:=(z5)--(z6);
    draw textpathFont(f, "firmamenti", pc, .5);
endfig;

beginfig(2)
    transform T;
    c:=10cm;
    sc:=.3*c;
    ic:=.15*c;
    oc:=.5*c;
    ac:=.925*c;
    bc:=.865*c;
    cc:=.805*c;
    dc:=.745*c;
    ec:=.685*c;
    fc:=.625*c;
    gc:=.565*c;
    draw fullcircle scaled c withpen pensquare;
    draw fullcircle scaled sc withpen pensquare;
    z0=(0,0);
    z1=(0,oc);
    z2=(0,ic);
    z3=(-ic,.1*ic);
    z4=(ic,.1*ic);
    z5=(-ic,-.3*ic);
    z6=(ic,-.3*ic);
    path pb;
    pb := z1--z2;
    for i=45 step 45 until 360:
      draw pb rotated i withpen pensquare;
    endfor;
    def f="\usefont{T1}{pzc}{m}{n}" enddef;
    ta:=-67.5;
    for t="Justicia vero est que","Mundus est ortus seu","Judicium est dominator","Lex est qua rex regit","Et rex est pator qui","Proceres sunt stipendiarii","Pecunia vero est fortuna","Subditi autem sunt servi":
      draw textpathFont(f, t, reverse fullcircle rotated ta scaled ac, .5);
      ta:=ta-45;
    endfor;
    for t="intenditur per se in qua","viridarium, ejus materi","vallatus vel dominacio","regum","defenditur a proceribus","sustentati pecunia","que colligatur a subditis","quos subjecit justicia":
      draw textpathFont(f, t, reverse fullcircle rotated ta scaled bc, .5);
      ta:=ta-45;
    endfor;
    ta:=-67.5;
    for t="est solus subditorum","vel, substancia vel sepes","vallata lege":
      draw textpathFont(f, t, reverse fullcircle rotated ta scaled cc, .5);
      ta:=ta-45;
    endfor;
    draw textpathFont(f, "ejus est judicium", reverse fullcircle rotated -112.5 scaled dc, .5);
    draw textpathFont(f, "(scilicet, Dei", reverse fullcircle rotated -112.5 scaled ec, .5);
    draw textpathFont(f, "angelorum, et", reverse fullcircle rotated -112.5 scaled fc, .5);
    draw textpathFont(f, "hominum).", reverse fullcircle rotated -112.5 scaled gc, .5);
    def f="\usefont{T1}{pzc}{m}{n}\LARGE" enddef;
    path pa;
    path pc;
    pa:=(z3)--(z4);
    draw textpathFont(f, "circulum", pa, .5);
    pc:=(z5)--(z6);
    draw textpathFont(f, "firmamenti", pc, .5);
endfig;

bye;

相关内容