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