我希望能够为“TikZ”形状设置一个别名或重命名现有的形状。
该bookcover
包用于定义“(当前修剪部分)”形状,以便将元素定位在所定义的特定书籍封面部分(正面、背面、书脊、封面……)上。
随着版本的更新3.0
,此形状被重命名为(trimmed part)
。我有很多使用此包的代码,我想转换为新版本。
可以简化这项工作的方法是能够为形状添加别名。我在 TikZ 手册中找不到这样做的方法。可以使用 为节点添加别名\pgfnodealias
,但尝试为(trimmed part.north west)
类似节点添加别名时会失败。
答案1
尝试这个:
\documentclass{bookcover}
\makeatletter
\def\bookcover@tikz@content#1{%
\begin{tikzpicture}[overlay,yshift=-\bookcover@partheight@]
\begin{scope}[transparent,line width=0pt]
\pgfset{minimum width=\bookcover@partwidth@,minimum height=\bookcover@partheight@}
\pgfnode{rectangle}{south west}{}{part}{\pgfusepath{draw}}
\pgfset{minimum width=\bookcover@partwidth@-\bookcover@tikz@trimmed@part@width@minus,
minimum height=\bookcover@partheight@-\bookcover@tikz@trimmed@part@height@minus}
\pgftransformshift{\pgfpoint{\bookcover@tikz@trimmed@part@push@right}
{\bookcover@tikz@trimmed@part@push@up}}
\pgfnode{rectangle}{south west}{}{trimmed part}{\pgfusepath{draw}}
\pgfnodealias{current trimmed part}{trimmed part}
\pgfnodealias{current part}{part}
\end{scope}
#1
\end{tikzpicture}}
\renewbookcovercomponenttype{tikz}{\bookcover@tikz@content{#1}}
\renewbookcovercomponenttype{tikz clip}{\bookcover@tikz@content{\clip (part.south west) rectangle (part.north east);#1}}
\makeatother
\begin{document}
\begin{bookcover}
\bookcovercomponent{tikz}{bg whole}{
\fill[black] (current part.south west) rectangle (current part.north east);
\fill[gray] (current trimmed part.south east) rectangle (current trimmed part.north west);}
\end{bookcover}
\end{document}