La forma del nodo TikZ depende del texto interior

La forma del nodo TikZ depende del texto interior

Enuna de mis respuestas anteriores, mi primera propuesta

\documentclass[tikz]{standalone}
\usetikzlibrary{quotes,angles}
\begin{document}
\begin{tikzpicture}
\draw (0,-4)--(0,4) node[above] {$Im$} (-4,0)--(4,0) node[right] {$Re$};
\draw[dashed] (0,0) circle (3) circle (2);
\coordinate (a) at (80:3);
\coordinate (b) at (3,0);
\coordinate (m) at (25:2);
\coordinate (n) at (-95:2);
\coordinate (p) at (145:2);
\coordinate (o) at (0,0);
\fill[black] (a) circle (2pt) (b) circle (2pt) (m) circle (2pt) (n) circle (2pt) (p) circle (2pt) (2,0) circle (2pt);
\draw (a) node[above right] {$z=|z|e^{i\theta}$};
\draw (b) node[below] {$|z|$};
\draw (2,0) node[below] {$|z|^{1/3}$};
\draw (m) node[right] {$|z|^{1/3}e^{i\theta/3}$};
\draw (n) node[below] {$|z|^{1/3}e^{i(\theta+4\pi)/3}$};
\draw (p) node[above] {$|z|^{1/3}e^{i(\theta+2\pi)/3}$};
\draw (.1,1.5)--(0,1.5) node[left] {$i$};
\draw (1.5,.1)--(1.5,0) node[below] {$1$};
\draw (0,0)--(a) (0,0)--(m) (0,0)--(n) (0,0)--(p);
\draw[dashed] (m)--(n)--(p)--cycle;
\pic[draw,dashed,thick,"$\theta$",angle radius=0.8cm,angle eccentricity=1.3] {angle=b--o--a};
\end{tikzpicture}
\end{document}

da esta salida

Dado que es un poco difícil leer algunos nodos (como el |z| 1/3mii(θ+ 2π)/3 uno), redefino inner sepy establezco el fillcolor de los nodos. Al final lo consigo

\documentclass[tikz]{standalone}
\usetikzlibrary{quotes,angles,positioning}
\begin{document}
\begin{tikzpicture}
\begin{scope}[every node/.style={fill=white,inner sep=2pt}]
\draw (0,-4)--(0,4) node[above] {$\Im$} (-4,0)--(4,0) node[right] {$\Re$};
\draw[dashed] (0,0) circle (3) circle (2);
\coordinate (a) at (80:3);
\coordinate (b) at (3,0);
\coordinate (m) at (80/3:2);
\coordinate (n) at ({80/3-120}:2);
\coordinate (p) at ({80/3+120}:2);
\coordinate (o) at (0,0);
\draw (a) node[above right] {$z=|z|e^{i\theta}$};
\draw (b) node[below right] {$|z|$};
\draw (2,0) node[below left=0cm and -2em] {$|z|^{1/3}$};
\draw (m) node[right] {$|z|^{1/3}e^{i\theta/3}$};
\draw (n) node[below] {$|z|^{1/3}e^{i(\theta+4\pi)/3}$};
\draw (p) node[above] {$|z|^{1/3}e^{i(\theta+2\pi)/3}$};
\draw (.1,1.5)--(0,1.5) node[left] {$i$};
\draw (1.5,.1)--(1.5,0) node[below] {$1$};
\draw (0,0)--(a) (0,0)--(m) (0,0)--(n) (0,0)--(p);
\draw[dashed] (m)--(n)--(p)--cycle;
\end{scope}
\pic[draw,dashed,thick,"$\theta$",angle radius=0.8cm,angle eccentricity=1.3] {angle=b--o--a};
\fill[black] (a) circle (2pt) (b) circle (2pt) (m) circle (2pt) (n) circle (2pt) (p) circle (2pt) (2,0) circle (2pt);
\end{tikzpicture}
\end{document}

La separación de los nodos y las rutas ahora es bastante buena en mi humilde opinión, excepto en algunos casos en los que la separación es excesiva:

Una solución es cambiar la forma predeterminada del nodo rectangular.

a algo como esto

Lo siento, no soy bueno dibujando, especialmente dibujando con el mouse de una computadora.

En otras palabras, creo que tengo que crear un nuevo Ti.kForma del nodo Z que depende del máximo y del mínimo "y-coordenadas" de todos los caracteres.

Es demasiado complicado para mí y no he encontrado ninguna pista al respecto.

¿Me puedes ayudar? Cualquier ayuda es muy apreciada.

Respuesta1

Quizás el contourpaquete sea una solución para usted (Ver tambiénesta respuesta)?

\documentclass[tikz, border=2mm]{standalone}

\usepackage[outline]{contour}
\contourlength{2pt}  % increase the white space

\usetikzlibrary{patterns}

\begin{document}

\begin{tikzpicture}
\draw [step=.25] (-2,-.5) grid (2,.5);

\node[] at (0,0) {\contour{white}{$|z|^{1/3}e^{i(\theta+2\pi)/3}$}};

\end{tikzpicture}

\end{document}

ingrese la descripción de la imagen aquí


Nota:Lo anterior no funciona con XeLaTeX o LuaLaTeX. En este caso, debe eliminar la outlineopción y agregar, por ejemplo \contournumber{60}(o un número mayor, dependiendo de la suavidad deseada de los bordes del espacio en blanco, consulte ladocumentación del paquete).

información relacionada