TikZ 글꼴 키의 기존 값에 스위치를 추가하려면 어떻게 해야 합니까?

TikZ 글꼴 키의 기존 값에 스위치를 추가하려면 어떻게 해야 합니까?

TikZ 키의 기존 설정에 스위치를 추가할 수 있습니까 font?

예를 들어, 모든 노드가 서체에 포함되기를 원한다고 가정해 보겠습니다 \sffamily. 이는 설정을 통해 수행할 수 있습니다 every node/.append style={font=\sffamily}. 나중에 every node font설정을 상속하고 추가적으로 기울임꼴 모양을 사용 하는 노드를 갖고 싶을 수도 있습니다 \itshape. 불행하게도 다음과 같이 단순히 추가하는 것은 작동하지 않습니다 font=\itshape. 이렇게 하면 이전 font설정이 재정의되고 기본 유형군(기울임꼴)이 사용됩니다.

\documentclass{standalone}
\usepackage{tikz}

\begin{document}
  \begin{tikzpicture}[every node/.append style={font=\sffamily}]
    \node {Sans serif};
    \node [font=\itshape] at (3,0) {Sans serif, italic};
  \end{tikzpicture}
\end{document}

여기에 이미지 설명을 입력하세요

설명서를 뒤져보니 <key>/.append유망해 보이는 핸들러를 찾았습니다.

키 핸들러 에 저장된 값의 끝에 <key>/.append={<append value>}
를 추가합니다 .<append value><key>

을 사용하면 어떻게 되나요 font/.append=\itshape? 글쎄, 이것도 작동하지 않습니다:

\documentclass{standalone}
\usepackage{tikz}

\begin{document}
  \begin{tikzpicture}[every node/.append style={font=\sffamily}]
    \node {Sans serif};
    \node [font/.append=\itshape] at (3,0) {Sans serif, italic};
  \end{tikzpicture}
\end{document}

여기에 이미지 설명을 입력하세요

따라서 두 가지 질문이 있습니다.

  • font/.append=\itshape여기서는 왜 작동하지 않습니까?
  • 의 기존 설정에 스위치를 추가하려면 어떻게 해야 합니까 font?

답변1

두 번째 질문에 대한 답변은 다음과 같습니다. 왜 font/.append=\itshape작동하지 않는지 모르겠습니다 .

\documentclass{standalone}
\usepackage{tikz}

\makeatletter
\tikzset{font append/.style={font/.expand once=\tikz@textfont #1},
         font append/.value required}
\makeatother

\begin{document}
  \begin{tikzpicture}[every node/.append style={font=\sffamily}]
    \node {Sans serif};
    \node [font append=\itshape] at (3,0) {Sans serif, italic};
  \end{tikzpicture}
\end{document}

여기에 이미지 설명을 입력하세요

이것이 작동하는 이유는 다음과 같습니다. font키는 (대략) 다음과 같이 정의됩니다.

\tikzset{font/.code=\def\tikz@textfont{#1}}

필요한 경우 를 통해 값에 font액세스합니다 \tikz@textfont. 따라서 해결책은 \tikz@textfont현재 값을 얻기 위해 확장 font한 다음 원하는 글꼴 스위치를 수동으로 추가하는 것입니다.

그러나 왜 직접 값 키가 아닌 font값을 저장하는지 모르겠습니다 .\tikz@textfont

관련 정보