
Mi código es:
\begin{center}
\vspace{-20pt}
\begin{tikzpicture}[mybox/.style={rectangle, draw, minimum width=10mm, minimum height=10mm}]
\foreach \addr/\val [count=\x] in {$0$,$1$/$28$,$6$/$\infty$,$6$/$\infty$,$6$/$25$,$0$,$6$/$\infty$} {
\node (node\x) [mybox] at (\x,0) {\addr};
\node[above=5mm] at (\x,0) {\footnotesize \x};
\node[below=5mm] at (\x,0) {\val};
}
\node at (node1.south west-100mm,0) [below=5mm] {Edge Weight:};
\draw[ultra thick] (node1.south west) rectangle (node7.north east);
\end{tikzpicture}
\end{center}
Recibo un error en la línea \node (lab) at (node1.south west-100mm,0) [below=5mm] {Edge Weight:};
correspondiente a la sección (node1.south west-100mm,0)
sobre el uso del ancla como coordenada.
El error:
Error matemático de PGF del paquete: función desconocida 'nodo1' (en 'nodo1.south west-100mm'). \nodo en (nodo1.suroeste-100mm,0)
Error matemático de PGF del paquete: función desconocida 'nodo1' (en 'nodo1.south west-100mm'). ...est-100mm,0) [abajo=5mm] {Peso del borde:};
Quiero que la posición del nodo lab
esté a una distancia de (-100pt,0) del anclaje suroeste del nodo0. ¿Cómo hago esto?
Incluso intenté escribir:
(node1.south west)+(-1,0)
Pero eso tampoco funciona. ¿Cómo soluciono este problema?
PD: Sé que escribir \path (node1.south west) node at +(-35pt,-8pt) {Edge Weight:};
resolvería el problema, pero ¿hay alguna manera de hacerlo directamente sin usar el comando de ruta y simplemente usando el comando de nodo?
Respuesta1
Puedes usar xshift
:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[mybox/.style={rectangle, draw, minimum width=10mm, minimum height=10mm}]
\foreach \addr/\val [count=\x] in {$0$,$1$/$28$,$6$/$\infty$,$6$/$\infty$,$6$/$25$,$0$,$6$/$\infty$} {
\node (node\x) [mybox] at (\x,0) {\addr};
\node[above=5mm] at (\x,0) {\footnotesize \x};
\node[below=5mm] at (\x,0) {\val};
}
\node at ([xshift=-10]node1.south west) [below=5mm] {Edge Weight:};
\draw[ultra thick] (node1.south west) rectangle (node7.north east);
\end{tikzpicture}
\end{document}
Con este pequeño ajuste tu código produce:
Por si sirve de algo, para que el código sea más fácil de leer, reemplazaría el bucle for con
\foreach \addr/\val [count=\x] in {0,1/28,6/\infty,6/\infty,6/25,0,6/\infty} {
\node (node\x) [mybox] at (\x,0) {$\addr$};
\node[above=5mm] at (\x,0) {\footnotesize \x};
\node[below=5mm] at (\x,0) {$\val$};
}
Respuesta2
Si desea utilizar la calc
biblioteca, debe escribir la operación de su nodo como:
\node at ($(node1.south west)+(-1,0)$)
y tendrás:
Código completo:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[mybox/.style={rectangle, draw, minimum width=10mm, minimum height=10mm}]
\foreach \addr/\val [count=\x] in {$0$,$1$/$28$,$6$/$\infty$,$6$/$\infty$,$6$/$25$,$0$,$6$/$\infty$} {
\node (node\x) [mybox] at (\x,0) {\addr};
\node[above=5mm] at (\x,0) {\footnotesize \x};
\node[below=5mm] at (\x,0) {\val};
}
\node at ($(node1.south west)+(-1,0)$) [below=5mm] {Edge Weight:};
\draw[ultra thick] (node1.south west) rectangle (node7.north east);
\end{tikzpicture}
\end{document}