범위 내 글꼴 키 값의 측면에서 상대 단위로 노드의 내부 sep 값을 정의할 수 있습니까?

범위 내 글꼴 키 값의 측면에서 상대 단위로 노드의 내부 sep 값을 정의할 수 있습니까?

나는 다양한 도면 주석에 대한 스타일을 정의하는 경우가 많습니다. 이는 그림을 구조화하는 데 적합합니다. 그러나 개선할 수 있는 사소한 점이 있습니다. 이는 모든 상대 치수( ex또는 단위 em)가 항상 Ti에 의해 해석된다는 사실에서 비롯됩니다.케이Z는 코드 자체의 "레벨"에서 적용되는 글꼴 크기를 기준으로 합니다 tikzpicture.

예를 들어 를 사용하여 하나의 주석의 글꼴 크기를 변경해야 하는 경우 기본값(또는 스타일 정의에 지정된 모든 항목)이 변경된 글꼴 크기로 항상 보기 좋게 표시되는 것은 아니기 때문에 값을 font=\tiny수동으로 조정해야 합니다. inner sep.

의 값이 의 임의 또는 차원 font에 대한 기초로 사용되도록 스타일 정의를 설정할 수 있다면 이 문제는 저절로 해결될 수 있습니다. 또한 이러한 제한을 극복할 수 있다면 및 값을 스타일에 대한 인수로 지정하는 솔루션도 고려해 보겠습니다 .exeminner sepfontinner sep

MWE는 다음과 같습니다.

\documentclass[tikz]{standalone}
\tikzset{
  my inner sep/.style={inner sep=#1}, % how to define this?
  every node/.style={anchor=south west},
}

\begin{document}
\begin{tikzpicture}
  \node[my inner sep=0.2em] (A) {A};
  \node[font=\tiny,my inner sep=0.2em] (B) {B};
  \foreach \node in {A,B} {
    \draw[blue,line width=0.01pt] % just to show the baselines
      (\node.south west) |- (\node.base) -| (\node.north east);
  }
\end{tikzpicture}
\end{document}

현재 출력은 다음과 같습니다:

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

파란색 가는 선은 각 노드의 기준선을 표시하기 위한 것입니다. 표시된 대로 기준선은 노드 하단에서 동일한 거리에 있습니다. 의 적절한 정의는 in이 in 보다 작기 때문에 위에 표시된 위치보다 왼쪽으로 my inner sep텍스트가 이동된 출력을 생성합니다 .B0.2em\tiny0.2em\normalsize

현재 Ti로 그러한 목표가 가능합니까?케이Z 아키텍처/작업 순서? 그렇다면 어떻게 할 수 있습니까?

답변1

노드의 글꼴을 설정하는 키가 있습니다 PGF 3.0.node font그리고em및 를 사용하는 노드 차원 계산에서 글꼴로 사용됩니다 ex. 매뉴얼의 섹션 17.4.2("텍스트 매개변수: 글꼴") 을 참조하십시오 PGF 3.0.

\documentclass[tikz, border=5]{standalone}
\begin{document}
\begin{tikzpicture}[every node/.style={fill=gray!50, anchor=south west}]
  \node [inner sep=1em]                  at (0,0) (A) {A};
  \node [font=\tiny,      inner sep=1em] at (0,1) (B) {B};
  \node [node font=\tiny, inner sep=1em] at (0,2) (C) {C};
  \foreach \n in {A,B,C} {
    \draw[red, very thin, <->] (\n.base west) -- (\n.base east);
    \draw[red, very thin, <->] (\n.text |- \n.south) -- (\n.text |- \n.north);
  }
\end{tikzpicture}
\end{document}

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

관련 정보