我們可以根據範圍內的字體鍵值使用相對單位定義節點的內部 sep 值嗎?

我們可以根據範圍內的字體鍵值使用相對單位定義節點的內部 sep 值嗎?

我經常發現自己為各種繪圖註釋定義樣式。這對於建立數字非常有用。然而,有一件小事我希望我能改進。這是因為任何相對尺寸(ex或的單位em)始終由 Ti 解釋kZ 相對於程式碼本身「層級」有效的字體大小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}

當前輸出為:

在此輸入影像描述

藍色細線只是顯示每個節點的基線。如圖所示,基線到節點底部的距離相同。適當的定義my inner sep將產生文字B向下移動到上面所示位置左側的輸出,因為0.2emin\tiny小於0.2emin \normalsize

以目前的 Ti 是否有可能實現這樣的目標?kZ 架構/操作順序?如果可以的話,該怎麼辦呢?

答案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}

在此輸入影像描述

相關內容