为什么空宏会占用 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}

在此处输入图片描述

相关内容