
Estoy aprendiendo a usar TikZ/PGF. Quiero hacer este dibujo:
Así es como comencé:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[frenchb]{babel}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,arrows,positioning,fit,calc,}
\begin{document}
\begin{tikzpicture}
\node (sun) at (0,0) [circle, fill=yellow, radius=0.3cm]{};
\node (sunlabel) [above=0.08 of sun]{Sun};
\node (root) at (0,0) [draw, circle, radius=3cm]{};
\end{tikzpicture}
\end{document}
El problema es que el segundo círculo no está dibujado. No sé cuál es el problema. Esta sintaxis funciona pero no sé cómo darle un nombre a los círculos y cómo llenar un círculo con un color.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[frenchb]{babel}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,arrows,positioning,fit,calc,}
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle [radius=.3cm, fill=yellow];
\draw (0,0) circle [radius=2cm];
\path[
%rotate=-15.2,
postaction={
decoration={
text along path,
text={%
OORT CLOUD
},
text align=center,
reverse path
},
decorate
}
]
(-27:2.2cm) arc (-27:210:2.2cm);
\end{tikzpicture}
\end{document}
Respuesta1
Deberá colocar los caracteres acentuados entre llaves circle label
porque PGF dividirá la cadena en tokens y, por lo tanto, dividirá los acentos de los caracteres, lo que genera errores extraños.
Traduje las etiquetas al francés para enfatizar el comportamiento (no hablo francés, así que espero no haber cometido demasiados errores).
\documentclass[tikz]{standalone}
\usepackage[utf8]{inputenx}
\usetikzlibrary{decorations.text}
\begin{document}
\sffamily
\begin{tikzpicture}[
white,
ultra thick,
planet/.style = {draw,fill,circle,inner sep=#1},
circle label/.style = {
postaction={
decoration={
text along path,
text = {#1},
text align=center,
text color=white,
reverse path,
},
decorate,
}
}
]
\filldraw[black] (-7,-7) rectangle (7,8);
\node at (0,7.5) {\bfseries\Large Voisins les plus proches du soleil};
\path[circle label={Nuage d'Oort}] (0,-1.2) arc (-90:360-90:1.2);
\draw[dotted] (0,0) circle (1);
\foreach \i in {2,4,6} {
\path[circle label={\i\ Ann{é}e lumi{è}res}] (0,-\i-.2) arc (-90:360-90:\i+.2);
\draw (0,0) circle (\i);
}
\node[yellow,planet=3pt,label={above:Soleil}] at (0,0) {};
\node[red,planet=3pt,label={[text width=1.5cm,align=right]0:Proxima Centauri déc.\ 1917}] at (44:4.3) {};
\node[yellow,planet=4pt,label={[text width=2.5cm,align=center]90:Alpha Centauri déc.\ 1917}] at (50:4.3) {};
\node[red!50!black,planet=2pt,label={[text width=2.5cm,align=center]0:WISE 1049-5319 déc.\ 2013}] at (54:6.3) {};
\node[red!50!black,planet=2pt] at (57:6.3) {};
\node[red,planet=3pt,label={[text width=3cm,align=center]95:L'étoile de Bernard déc.\ 1916}] at (125:6) {};
\end{tikzpicture}
\end{document}
Respuesta2
Si usas la sintaxis:
\draw [fill=yellow] (0,0) circle (0.3cm) node (sun) {};
entonces las cosas funcionan como se esperaba:
Notas:
- Agregué un
draw=none
para el sol porque probablemente no quieras un borde alrededor. - Os dejé líneas originales como comentarios para que veáis las diferencias.
Código:
\documentclass[border=2pt]{standalone}
\usepackage[T1]{fontenc}
\usepackage[frenchb]{babel}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,arrows,positioning,fit,calc,}
\begin{document}
\begin{tikzpicture}
%\node (sun) at (0,0) [circle, fill=yellow, radius=0.3cm] {};
\draw [fill=yellow, draw=none] (0,0) circle (0.3cm)
node (sun) {};
\node (sunlabel) [above=0.08 of sun]{Sun};
%\node (root) at (0,0) [draw=red, circle, radius=3cm] {};
\draw [draw=red, ultra thick] (0,0) circle (3.0cm)
node (planet) {};
\end{tikzpicture}
\end{document}
Respuesta3
Menos pulsaciones de teclas con PSTricks.
\documentclass[pstricks,border=12pt]{standalone}
\begin{document}
\begin{pspicture}(-2,-2)(2,2)
\pscircle*[linecolor=orange]{5pt}
\pscircle{2}
\end{pspicture}
\end{document}