pgf 스타일 인수를 사용하여 다른 pgf 키를 어떻게 참조할 수 있나요?

pgf 스타일 인수를 사용하여 다른 pgf 키를 어떻게 참조할 수 있나요?

내가 하려는 작업을 설명하는 것은 단순히 시연하는 것보다 어렵습니다. 따라서 단순화된 버전은 다음과 같습니다.

\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}node1개의 인수를 취하는 PGF 키를 나타내며 다음과 같이 정의됩니다.애플리케이션 노드
  • TikZ/PGF가 주장을 확장합니다.애플리케이션 노드node/.style~ 로node/.style n args={1}{application node, ... \node [above] ... {application node}
  • application nodePGF 키로 구문 분석되어 rectangle, draw=red스테이에 추가됩니다.

나는 키 에서 application node와 같이 PGF 키를 참조합니다 .#1node

문제는 #1토큰화 방식이다. PGF 키 파서는 대신에 a호출된 키를 보고 찾습니다 .aapplication 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|로 설정됩니다.

관련 정보