添加不计入边界框的图钉

添加不计入边界框的图钉

我想使用 Tikz 注释方程中的某些项。我尝试了以下操作

\documentclass{article}
\usepackage{tikz}
\pagestyle{empty}
\begin{document}
\newcommand{\tikzbox}[2]{\tikz[anchor=base, baseline, #1]{\node[rectangle, rounded corners, #1] {#2};}}
\[
a + b + c
\]
\[
\tikzbox{pin=-70:{first term}}{$a$} + b + c
\]
\end{document}

产生

在此处输入图片描述

如您所见,图钉中的文本改变了边界框并在项 $a$ 周围引入了间距。是否可以修改此示例,使图钉“不计算在内”,并且 $a$ 周围的间距与第一个等式中的相同?

答案1

tikzoverlay选项使得 tikz 代码不占用空间:

\newcommand{\tikzbox}[2]{%
   \tikz[overlay,anchor=base, baseline, #1]{% added overlay
      \node[rectangle, rounded corners, #1] {#2};
   }%
}

但是,这也会将节点的内容排除在边界框之外。要仅排除引脚,您可以手动将 bb 设置为节点的大小:

\tikz[anchor=base, baseline, #1]{
    \node[rectangle, rounded corners, inner sep=0pt, outer sep=0pt, #1] (mynode) {#2};
    \pgfresetboundingbox
    \path [use as bounding box] (mynode.north west) -- (mynode.south east);
  }%
}

这里我还将 sep 设置为零,以使节点的大小紧贴内容。因此,您可能需要缩短 pin 的边缘以获得更好的效果。

\documentclass{article}
\usepackage{tikz}
\pagestyle{empty}
\begin{document}
\newcommand{\tikzbox}[2]{%
  \tikz[anchor=base, baseline, #1]{
    \node[rectangle, rounded corners, inner sep=0pt, outer sep=0pt, #1] (mynode) {#2};
    \pgfresetboundingbox
    \path [use as bounding box] (mynode.north west) -- (mynode.south east);
  }%
}
\[
a + b + c
\]
\[
\tikzbox{pin={[pin edge={shorten <=1mm}]-70:{first term}}}{$a$} + b + c
\]
\end{document}

演示

请注意tikzmark包为这种类型的注释提供了灵活的支持,并且可能比自定义宏更可靠。

答案2

您可以重置边界框。您还应该将内部分离设置为零:

\documentclass{article}
\usepackage{tikz}
\pagestyle{empty}
\begin{document}
\newcommand{\tikzbox}[2]{\tikz[anchor=base, baseline, #1]
      {\node[rectangle, rounded corners, #1,name=mynode,inner sep=0pt] {#2};
       \pgfresetboundingbox
       \path[use as bounding box] (mynode.south west) rectangle (mynode.north east)}}
\[
a + b + c
\]
\[
\tikzbox{pin=-70:{first term}}{$a$} + b + c
\]
blblblb this is the next line blblb
\end{document}

在此处输入图片描述

答案3

一个简单的解决方案\rlap

\documentclass{article}
\usepackage{tikz}
\newcommand{\tikzbox}[2]{\tikz[anchor=base, baseline, #1]{\node[rectangle, rounded corners, #1] {#2};}}

 \pagestyle{empty}

\begin{document}
\[
a + b + c
\]
\[
\rlap{\tikzbox{pin=-70:{\scriptsize first term}}{}}a + b + c
\]
\end{document} 

在此处输入图片描述

相关内容