为什么 \pgfsetendarrow (现在)没有效果?

为什么 \pgfsetendarrow (现在)没有效果?

我不确定我是否对显而易见的事情视而不见,或者这是一个错误,或者可能是故意的贬低。

以下是 MWE:

\documentclass{article}

\usepackage{tikz}

\begin{document}

    \begin{pgfpicture}{0cm}{0cm}{16cm}{9cm}
        \pgfnodebox{a}[stroke]{\pgfxy(10,8)}{A}{3pt}{3pt}
        \pgfnodebox{b}[stroke]{\pgfxy(10,6.5)}{B}{3pt}{3pt}
        \pgfsetendarrow{\pgfarrowtriangle{4pt}}
            \pgfnodeconnline{a}{b}
    \end{pgfpicture}

\end{document}

据我所知,几周前,这会产生两个包含“A”和“B”的框,并有一个向下的垂直箭头将它们连接起来。但是,这是我现在从 MWE 获得的输出:

无箭的箭

确实,几周前我用来制作 PDF 的代码现在生成了使用此方法制作的无箭头版本的图表。此外,我发布的代码这个答案现在生成其中包含的图表的无箭头版本。

我是不是遗漏了什么?或者有什么变化我没注意到?

请注意,我知道使用tikz语法 [未经测试] 可能可以正常工作,但我有许多最初使用pgf语法准备的图表,如果可能的话,我更愿意坚持使用语法。因此,如果\pgfsetendarrow弃用了语法,我更愿意尽可能使用可与我现有图表配合使用的嵌入式替代品。

请注意,我在编译时没有收到有关此问题的错误或警告。没有什么可说的,该命令未定义或类似。它似乎只是无效的。

答案1

在 TikZ 2.10 手册中,第 616 页记录之后

\pgfsetarrowsend{⟨start arrow kind⟩}

据称:

警告:如果兼容模式处于活动状态(这是默认设置),则还存在称为\pgfsetstartarrow和的 旧命令\pgfsetendarrow,它们与元箭头管理不兼容。

TikZ 3.0.0 手册不再引用此内容;它仅记录:

\pgfsetarrowsend{⟨end arrow tip specification⟩}

在第 1017 页。我认为此兼容模式现在默认处于不活动状态。

因此,如果您更新了软件包,您可能需要切换到新版本。事实上:

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}

\begin{document}

 \begin{pgfpicture}{0cm}{0cm}{16cm}{9cm}
        \pgfnodebox{a}[stroke]{\pgfxy(10,8)}{A}{3pt}{3pt}
        \pgfnodebox{b}[stroke]{\pgfxy(10,6.5)}{B}{3pt}{3pt}
        \pgfsetarrowsend{Triangle[scale=1.5pt]} % with arrows.meta or
        % \pgfsetarrowsend{stealth}
            \pgfnodeconnline{a}{b} 
 \end{pgfpicture}

\end{document}

运行正常。

结果:

在此处输入图片描述

相关内容