这个问题导致了一个新的方案的出现:
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.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”等。
您也可以使用calc
tikzlibrary 语法:($ (0,.5*\tabheight) ! \tabwidth ! (\tabwidth,.5*\tabheight) $)
,但对于这种用法来说,这会有些过度。