私がやろうとしていることを説明するのは、単に実演するよりも難しいので、簡略化したバージョンを以下に示します。
\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}
次のようになるはずです:
node={application node}
node
1つの引数を取るPGFキーを参照します。引数は次のように定義されます。アプリケーションノード- TikZ/PGFは議論を拡大するアプリケーションノードとして
node/.style
node/.style n args={1}{application node, ... \node [above] ... {application node}
application node
PGFキーとして解析され、rectangle, draw=red
その滞在に追加されます
キー内のapplication node
PGFキーを参照します。#1
node
問題は、 がどのように#1
トークン化されるかです。PGF キー パーサーは、の代わりに とa
呼ばれるキーを見つけて検索します。a
application node
答え1
どうやら、PGF パーサーが#1
(閉じ括弧まで) に格納されているすべてのトークンを読み取る必要がある場合、TikZ では引数パターンが必要になります。
\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 氏は、引数を二重に括弧で囲ん{{application node}}
で構文を維持することもできたと指摘しました.style n args
。
TikZ/PGF ハンドブックからの関連抜粋
特別な方法のため価値設定すると解析されます 価値たとえば、|first| (括弧なし) とすると、|#1| は |f| に設定され、|#2| は |irst| に設定されます。