내가 하려는 작업을 설명하는 것은 단순히 시연하는 것보다 어렵습니다. 따라서 단순화된 버전은 다음과 같습니다.
\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
#1
분명히 TikZ는 PGF 파서가 (닫는 중괄호까지) 저장된 모든 토큰을 읽어야 할 때 인수 패턴을 요구합니다 .
\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}
{{application node}}
Henri Menke는 인수를 이중으로 묶어서 구문을 유지할 수도 있었다고 지적했습니다 .style n args
.
TikZ/PGF 핸드북에서 관련 발췌
특별한 방법 때문에값설정한 경우 구문 분석됩니다. 값예를 들어 |먼저| (중괄호 없이), |#1| |f|로 설정됩니다. 그리고 |#2| |first|로 설정됩니다.