矩形内节点的精确位置

矩形内节点的精确位置

这个问题导致了一个新的方案的出现:
fancytabs

我有一个位于阴影矩形中的节点:

\newcommand{\tabstyle}{\Large\scshape}
\newcommand{\tabheight}{4cm}
\newcommand{\tabwidth}{1cm}
\newcommand{\tabcount}{6}
\newcommand{\tableftcolor}{white}
\newcommand{\tabrightcolor}{gray!50}
\newcommand{\tabtop}{\tabheight}
\newcommand{\tabtextpos}{0.5}
\newcommand{\fancytab}[2]{%
  \begin{tikzpicture}[remember picture,overlay]
    \node[yshift={-\tabtop-1*mod(#2-1,\tabcount)*\tabheight},
                  xshift=-0.5*\tabwidth]
      at (current page.north east) {
      \tikz\shade[shading=axis,bottom color=\tableftcolor,
                  top color=\tabrightcolor,shading angle=-90]
        (0,0) rectangle (\tabwidth,\tabheight)
           node[rotate=90,pos=\tabtextpos] {\tabstyle#1};
    };
  \end{tikzpicture}%
}

通常,当\tabtextpos具有值时0.5,文本在形状中垂直和水平居中:

0.50,居中

现在,如果我把0.38它放得更靠左一些,我会得到:

0.38,未居中

更靠左,但也向下。

我怎样才能将它放在左边,同时仍然保持其垂直居中?

编辑:

此代码现在是名为的模块的一部分fancytabs,可用在 CTAN

答案1

您给出的因子介于给定的矩形路径坐标(0,0)和之间(\tabwidth,\tabheight)。这会将其沿对角线移动。如果您不想要这样,则需要使用不同的路径(无需绘制任何内容)将其放置在其中,即介于和之间,(0,.5*\tabheight)或者(\tabwidth,.5*\tabheight)更好的是直接放置在其中:

  \tikz\shade[shading=axis,bottom color=\tableftcolor,
                  top color=\tabrightcolor,shading angle=-90]
        (0,0) rectangle (\tabwidth,\tabheight)
           node [rotate=90] at (\tabtextpos*\tabwidth,.5*\tabheight) {\tabstyle#1};

请注意,在此实现中\tabtextpos必须是数字,而之前它也可以是字符串,如“midway”,“near end”等。

您也可以使用calctikzlibrary 语法:($ (0,.5*\tabheight) ! \tabwidth ! (\tabwidth,.5*\tabheight) $),但对于这种用法来说,这会有些过度。

相关内容