tikz-cd 包如何计算箭头上标签的定位?

tikz-cd 包如何计算箭头上标签的定位?

最近在使用该软件包时遇到了一个小问题tikz-cd。这是关于附在某些箭头上的标签的定位。聊天中的一位用户很友好地向我指出,可以使用 手动控制定位pos=<fraction>

在实施此修复后,我发现当我改变输入时,行为<fraction>非常引人注目且违反直觉。我天真地以为分数以显而易见的方式与箭头长度的分数相对应。一些实验表明,对于直箭,情况确实如此。然而,对于弯曲的箭头,情况似乎并不那么简单。作为一个(最小工作)示例,请考虑以下内容:

\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
  \[
    \begin{tikzcd}
      A \arrow[r,bend left=30,"\pi" pos=<fraction>]&B
    \end{tikzcd}
  \]
\end{document}

插入 .4 和 .6 会<fraction>产生以下两个输出:

.4 和 .6 的输出

这当然与标签沿箭头长度放置 40% 和 60% 不符。我的(显而易见的)问题是:这些数字代表什么?如何使用它们来确定标签的放置位置(尤其是在显然不平凡的弯箭头情况下)?

答案1

软件包的维护者已回复消息关于这个问题---事实证明这是有意为之的行为。


原始答案

我认为这是一个错误,并建议您报告此问题。您可以使用以下示例:

% arara: lualatex

\documentclass{article}
\usepackage{tikz-cd}
\usepackage{lua-visual-debug}

\begin{document}
\begin{tikzcd}
    A \arrow[bend left=60,"\mid" pos=.1,"\mid" pos=.2,"\mid" pos=.3,"\mid" pos=.4,"\mid" pos=.5,"\mid" pos=.6,"\mid" pos=.7,"\mid" pos=.8,"\mid" pos=.9]{r} & B\\
    A \arrow[bend left=30,"\mid" pos=.1,"\mid" pos=.2,"\mid" pos=.3,"\mid" pos=.4,"\mid" pos=.5,"\mid" pos=.6,"\mid" pos=.7,"\mid" pos=.8,"\mid" pos=.9]{r} & B\\
    A \arrow["\mid" pos=.1,"\mid" pos=.2,"\mid" pos=.3,"\mid" pos=.4,"\mid" pos=.5,"\mid" pos=.6,"\mid" pos=.7,"\mid" pos=.8,"\mid" pos=.9]{r} & B
\end{tikzcd}
\end{document}

在此处输入图片描述


我会报告给tikz-cd因为这似乎不是 Ti 的问题Z 本身。只需看这段(抱歉,很丑陋)代码:

% arara: pdflatex

\documentclass{article}
\usepackage{tikz-cd}
\usetikzlibrary{positioning}

\begin{document}
\begin{tikzpicture}
    \node (1) {A};
    \node (2) [right = of 1] {B};
    \path[every node/.append style=above] (1) edge[bend left=60] node [pos=.1] {$\mid$} node [pos=.2] {$\mid$} node [pos=.3] {$\mid$} node [pos=.4] {$\mid$} node [pos=.5] {$\mid$} node [pos=.6] {$\mid$} node [pos=.7] {$\mid$} node [pos=.8] {$\mid$} node [pos=.9] {$\mid$} (2);
\end{tikzpicture}
\end{document}

答案2

似乎tikz-cd将标签框放置到该点right of the insertion point而不是将其置于该点的中心。

下面是一个允许与 进行比较的代码pstricks(其psmatrix环境是 的替代tikz-cd)。我依次将标签框置于插入点的中心(默认)、左侧和右侧。

\documentclass{article}
\usepackage{tikz-cd}

\usepackage{pst-node}
\usepackage{auto-pst-pdf}

\begin{document}
  \[
    \begin{tikzcd}
      A \arrow[r,bend left=30,"\pi" pos=0.6]&B
    \end{tikzcd}
  \]

\psset{linewidth=0.6pt, arrows=->, arrowinset=0.15, nodesepA=4.5pt, nodesepB=4.5pt, arcangle=35, shortput=nab, tpos=0.6, labelsep=3pt}
\[ \begin{psmatrix}[colsep = 1.15cm]
 [name=A] A & [name=B] B
 \ncarc{A}{B}^{\scriptstyle\pi}
    \end{psmatrix}
    \]%

\[ \begin{psmatrix}[colsep = 1.15cm]
 [name=A] A & [name=B] B
 \ncarc{A}{B}^{\makebox[0pt][r]{\scriptstyle\pi $}}
    \end{psmatrix}
    \]%

\[ \begin{psmatrix}[colsep = 1.15cm]
[name=A] A & [name=B] B
 \ncarc{A}{B}^{\makebox[0pt][l]{\scriptstyle\pi $}}
    \end{psmatrix}
    \]%
\end{document} 

在此处输入图片描述

相关内容