减少 TikZ 标签上方的空白

减少 TikZ 标签上方的空白

我是 TikZ 的新手,画了下面的图,

\documentclass[12pt,a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{trees,arrows}
\begin{document}

\begin{tikzpicture}[every node/.style={draw,shape=circle,inner sep=2pt,fill=black}]
    \node [label=above:$a$]{}
        child {node[label=above:$b$,label=below:$p\land q$]{}}
        child {node[label=above:$c$,label=below:$p\land \lnot q$]{}}
;
\end{tikzpicture}

\end{document}

在此处输入图片描述

但是右边的命题公式上方的空间太多了,有什么办法可以减少空白量,使其更接近标签 a、b、c 的空白量?

[编辑] Jesse 给我提供了一种手动调整标签位置的方法,但如果有一种无需微调就能对齐两个标签的方法就更好了。

答案1

这种不良对齐源自every node/.style={draw,shape=circle,inner sep=2pt,fill=black}。标签也是节点,因此shape=circle所有标签都是圆圈。

\documentclass[tikz,border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{trees,arrows}
\begin{document}

\begin{tikzpicture}[every node/.style={draw,shape=circle,inner sep=2pt,fill=black},
                    every label/.style={draw,fill=none}]
    \node [label=above:$a$]{}
        child {node[label=above:$b$,label=below:$p\land q$]{}}
        child {node[label=above:$c$,label=below:$p\land \lnot q$]{}}
;
\end{tikzpicture}

\end{document}

在此处输入图片描述

every label/.style={shape=rectangle, draw=none, fill=none}您可以使用或every label/.append style={shape=rectangle}来改变这种行为

在此处输入图片描述

如果你想了解为什么选项draw=nonefill=none包含在every label定义中,请查看TikZ 中的每个非标签节点

相关内容