设置小于其标签的 tikz 节点(在矩阵内)

设置小于其标签的 tikz 节点(在矩阵内)

我正在使用 tikz 矩阵来布局图表。但是,我意识到我希望某些行之间的间距比现在更小。因此,我想将其中一个节点的高度设置为小于其标签。

下面是一个 MWE 来解释我的意思。

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[baseline=(current bounding box.center)]
    \matrix[inner sep=0] {
        \node{A}; & \\
        & \node{B}; \\
        \node{C}; & \\
    };
\end{tikzpicture}

\end{document}

它看起来像这样

在此处输入图片描述

但想象一下,我想把“A”和“C”挤在一起,这样看起来更像这样

在此处输入图片描述

我认为,要使用矩阵布局来实现这一点,需要“B”节点的高度小于字母“B”的高度,这样标签才能与框的边界重叠。要么这样,要么需要将字母“B”绘制在节点顶部,而不会影响其边界框。这样可行吗?

答案1

您可以更改每行的行间距。

在此处输入图片描述

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[baseline=(current bounding box.center)]
    \matrix[inner sep=0] {
        \node{A}; & \\[-3pt]
        & \node{B}; \\[-3pt]
        \node{C}; & \\
    };
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

我不知道这是否是最明智的答案(欢迎反馈),但这是使用该adjustbox包的一种方法

\documentclass{article}

\usepackage{tikz}
\usepackage{adjustbox}

\begin{document}

\begin{tikzpicture}[baseline=(current bounding box.center)]
    \matrix[inner sep=0] {
        \node{A}; & \\
        & \node{\adjustbox{trim = 0pt 2pt}{B}};\\
        \node{C}; & \\
    };
\end{tikzpicture}

\end{document}

在此处输入图片描述

2pt 参数是修剪顶部和底部的高度,而 0pt 是修剪左侧和右侧的高度。

相关内容