さまざまな図面注釈のスタイルを定義することがよくあります。これは図を構造化するのに最適です。ただし、改善できる小さな点があります。これは、相対的な寸法(単位ex
またはem
)が常に Ti によって解釈されるという事実に起因しています。けtikzpicture
コード自体の「レベル」で有効なフォント サイズに対する Z。
font=\tiny
たとえば、を使用して 1 つの注釈のフォント サイズを変更する必要がある場合inner sep
、デフォルト値 (またはスタイル定義で指定された値) は変更されたフォント サイズで必ずしも適切に表示されるとは限らないため、値を手動で調整する必要もあります。
の値が の任意のまたは次元font
の基準として使用されるようなスタイル定義を設定できれば、この問題は自然に解決されるでしょう。また、この制限を克服できるのであれば、と の値がスタイルの引数として指定されるソリューションも検討します。ex
em
inner sep
font
inner 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.2em
\tiny
0.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}