Tratar de explicar lo que intento hacer es más difícil que simplemente demostrarlo, así que aquí hay una versión simplificada:
\documentclass{article}
\usepackage{tikz}
\tikzset{
application node/.style={rectangle, draw=red},%
node/.style n args={1}{#1, append after command={\pgfextra{\let\mainnode=\tikzlastnode}
node [above] at (\mainnode.north) {#1}
}}}
\begin{document}
\tikz \node [node={application node}] {host.domain.com};
\end{document}
Debería suceder lo siguiente:
node={application node}
se refiere a la clave PGFnode
que toma 1 argumento, que se define comonodo de aplicación- TikZ/PGF amplía el argumentonodo de aplicaciónen
node/.style
comonode/.style n args={1}{application node, ... \node [above] ... {application node}
application node
se analiza como una clave PGF, agregándoserectangle, draw=red
en su estancia
Me refiero a la clave PGF application node
como #1
en la node
clave.
El problema es cómo #1
se tokeniza. El analizador de claves PGF ve a
y busca una clave llamada a
en lugar de application node
.
Respuesta1
Aparentemente, TikZ requiere un patrón de argumento cuando se supone que el analizador PGF debe leer todos los tokens almacenados #1
(hasta la llave de cierre).
\documentclass{article}
\usepackage{tikz}
\tikzset{
application node/.style={rectangle, draw=red},%
node/.style args={#1}{
#1,
append after command={\pgfextra{\let\mainnode=\tikzlastnode}
node [above] at (\mainnode.north) {#1}
},%
},%
}
\begin{document}
\tikz \node [node={application node}] {host.domain.com};
\end{document}
Henri Menke señaló que también podría haber reforzado el argumento {{application node}}
y conservar la .style n args
sintaxis.
Extracto relevante del manual de TikZ/PGF
Debido a la forma especial en quevalorse analiza, si configura valora, por ejemplo, |primero| (sin llaves), luego |#1| se establecerá en |f| y |#2| se establecerá en |primero|.