有没有办法当节点标签的高度变大时自动增加节点的高度?

有没有办法当节点标签的高度变大时自动增加节点的高度?

在下面的代码中,我希望当黄色框的行数增加时,其高度会自动增加。有什么办法吗?

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[overlay,remember picture]
\fill[yellow]([yshift=-4cm]current page.north west) rectangle
  ([yshift=-5cm]current page.north east) node[pos=.5, red,align=center] { Test\\ Foo\\Bar};
\end{tikzpicture}
\end{document}

答案1

这是一个解决方案

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[overlay,remember picture]
\node[fill=yellow, text=red, minimum width=\paperwidth, left, align=center, yshift=-4cm] 
at (current page.north east){ Test\\ Foo\\Bar};
\end{tikzpicture}
\end{document}

答案2

不要绘制矩形,只需使用一个tikz node

\documentclass{article}
\usepackage{tikz}

\begin{document}
    \begin{tikzpicture}[overlay,remember picture]
    \node
        [fill=yellow,yshift=-4cm,align=center,text width=\paperwidth] 
        at (current page.north) { Test\\ Foo\\Bar};
    \end{tikzpicture}
\end{document}

仅使用一个节点和一个位置也xshift更有yshift意义,可以更容易地设置与页面顶部的距离。

这使得TikZ您可以完成所有尺寸调整,并简化代码以保持其清晰和可维护。

在此处输入图片描述

答案3

更新:在这种情况下,touhami 和 Ryan 提供的解决方案要简单得多(因此要好得多)。我留下这个答案,希望它能帮助遇到其他类似问题的人。


检查此解决方案是否具有您正在寻找的功能。这个想法是首先定义一个辅助节点 T,其中包含您要显示的文本。该辅助节点允许将黄色矩形的左上角定义为

[yshift=5pt]current page.west |- T.north

即文本上方 5pt 处的水平线与页面左边缘的交点(右下角也类似)。我将辅助节点中的文本设置为白色,但它无论如何都会被黄色矩形覆盖。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\def\mytext{Test\\foo\\bar\\baz\\foofoo}
\begin{tikzpicture}[overlay,remember picture]
\node[align=center,white] (T) at (0,0) {\mytext};
\fill[yellow]([yshift=5pt]current page.west |- T.north) 
 rectangle ([yshift=-5pt]current page.east |- T.south) 
 node[pos=.5, red,align=center] (T) {\mytext};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容