TikZ 形状可以有别名吗?

TikZ 形状可以有别名吗?

我希望能够为“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}

答案2

嗯---只是为了给你看看为什么您需要发布一个例子...这个:

\documentclass{report}

\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
    \node[circle, draw, fill=yellow](A){I am A};
    \draw (A.north) -- ++(0,1);
    \pgfnodealias{B}{A}
    \draw [red] (B.south) -- ++(0,-1);
\end{tikzpicture}
\end{document}

确实有效:

在此处输入图片描述

相关内容