空のマクロが tikz ノード内でスペースを占有するのはなぜですか?

空のマクロが tikz ノード内でスペースを占有するのはなぜですか?

こんにちは。よろしくお願いします!

空のマクロ定義がtikzノードのラベル内のスペースを占有し、意図した配置を妨げる理由を解明しようとしています。(空のマクロは、その定義が外部から抽出されるため、避けることができません。リスト(空のエントリを含めることができます。)ラベルが垂直線上で左揃えになる次の MWE を検討してください。

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[every node/.style={anchor=west, inner sep=0}]
    \draw[gray] (0,1) -- (0,-2);
    \def\a{One!}\def\b{And two!}
    \node at (0,0) {\fbox{\a}\fbox{\b}};
    \def\a{}\def\b{Only two!}
    \node at (0,-1) {\fbox{\a}\fbox{\b}};
\end{tikzpicture}
\end{document}

答え1

\fbox には \fboxsep の境界があります。ただし、コマンドが空かどうかをテストできます。

\documentclass{article}
\usepackage{tikz,etoolbox}

\begin{document}
\begin{tikzpicture}[every node/.style={anchor=west, inner sep=0}]
    \draw[gray] (0,1) -- (0,-2);
    \def\a{One!}\def\b{And two!}
    \node at (0,0) {\fbox{\a}\fbox{\b}};
    \def\a{}\def\b{Only two!}
    \node at (0,-1) {\ifdefempty{\a}{}{\fbox{\a}}\fbox{\b}};
\end{tikzpicture}
\end{document}

ここに画像の説明を入力してください

関連情報