Привет и большое спасибо заранее!
Я пытаюсь понять, почему пустое определение макроса занимает место внутри метки узла 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}