Por que uma macro vazia ocupa espaço em um nó tikz?

Por que uma macro vazia ocupa espaço em um nó tikz?

Olá e muito obrigado antecipadamente!

Estou tentando descobrir por que uma definição de macro vazia ocupa espaço no rótulo de um nó tikz e impede o alinhamento pretendido. (Não posso evitar uma macro vazia, pois sua definição é extraída de umlista, que pode conter entradas vazias.) Considere o seguinte MWE, onde os rótulos devem ser alinhados à esquerda na linha vertical:

\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}

Responder1

\fbox tem uma borda \fboxsep. Mas você pode testar se o comando está vazio:

\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}

insira a descrição da imagem aqui

informação relacionada