垂直平行线/箭头

垂直平行线/箭头

我该如何绘画tikz-cd

  1. 两条垂直平行线
  2. 两条指向相反方向的垂直平行线?

答案1

像这样吗?

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

\begin{document}

\begin{tikzcd}
A\arrow[transform canvas={xshift=0.3ex},-]{d} \arrow[transform canvas={xshift=-0.4ex},-]{d} & B\arrow[transform canvas={xshift=0.9ex}]{d} \\
C  & D \arrow[transform canvas={xshift=-0.4ex}]{u} 
\end{tikzcd}

\end{document}

在此处输入图片描述

双线的另一种选择是equal箭头:

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

\begin{document}

\begin{tikzcd}
A\arrow[equal]{d} & B\arrow[transform canvas={xshift=0.9ex}]{d} \\
C  & D \arrow[transform canvas={xshift=-0.4ex}]{u} 
\end{tikzcd}

\end{document}

在此处输入图片描述

如果需要相等的分离,则使用相同的移位值;在下面的例子中,左侧的箭头将位于北锚点左侧的 0.7ex,而右侧的箭头将位于北锚点右侧的 0.7ex(您可以根据0.7ex需要使用任何其他有效长度):

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

\begin{document}

\begin{tikzcd}
A\arrow[transform canvas={xshift=0.7ex},-]{d} \arrow[transform canvas={xshift=-0.7ex},-]{d} & B\arrow[transform canvas={xshift=0.7ex}]{d} \\
C  & D \arrow[transform canvas={xshift=-0.7ex}]{u} 
\end{tikzcd}

\end{document}

在此处输入图片描述

默认情况下,tikz-cd用于\scriptstyle标签;如果要更改此设置,可以使用标签键来使用,例如\textstyle

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

\tikzset{commutative diagrams/diagrams={%
  labels={font=\everymath\expandafter{\the\everymath\textstyle}}}}

\begin{document}

\begin{tikzcd}
A \arrow{r}{\eta} & B \\
\end{tikzcd}

\end{document}

在此处输入图片描述

答案2

有了 PSTricks,一切都是为了好玩!

在此处输入图片描述

\documentclass[preview,border=12pt]{standalone}
\usepackage{pst-node}
\begin{document}
\offinterlineskip
$
\begin{psmatrix}[rowsep=1,colsep=2,mnode=circle,shortput=tablr,nodesep=2pt]
    Left & Right
\ncline[offset=3pt]{->}{1,1}{1,2}^{above}
\ncline[offset=-3pt]{<-}{1,1}{1,2}_{below}
\end{psmatrix}
$
\qquad
$
\begin{psmatrix}[rowsep=1,colsep=2,mnode=circle,shortput=tablr,nodesep=2pt]
    Top \\
    Bottom
\ncline[offset=3pt]{->}{1,1}{2,1}>{right}
\ncline[offset=-3pt]{<-}{1,1}{2,1}<{left}
\end{psmatrix}
$
\end{document}

警告:

据我所知圆节点的半径是无法调整为均匀的。

答案3

如今,TikZ-CD 包/库带有名为shift left和 的键shift right

他们接受:

  1. 没有争论,
  2. 一个因子(无单位)和
  3. 维度(带有单位)。

该键将使该线垂直于连接原始起点和终点坐标(通常是节点边界上的一个点)的线移动

  1. 默认值为shift left0.56ex,
  2. 所述默认值乘以给定的因子或
  3. 给定的长度。

沿箭头的节点(TikZ-CD 称为标签)将沿着新的移位路径放置,而不是未移位的路径放置。


下面代码中的第一个图显示

  • 两条平行线之间没有箭头AC
  • 两个平行的向前箭头(之间)其中一个来自以及一个(均带有shift left)和
  • 两条平行的箭头C其中,箭头尖端为反向(leftarrow)。

在第二张图中我展示了移位的工作原理:
在此处输入图片描述

灰线是节点之间的直接连接。细绿线是未偏移的曲线,而粗绿线是偏移的曲线。

蓝色虚线表示曲线起点和终点的连接,蓝色箭头表示移动方向(与虚线正交)。

代码

\documentclass[tikz]{standalone}
\usetikzlibrary{cd}
\begin{document}
\begin{tikzcd}
  A \ar[d, dash, shift left] \ar[d, dash, shift right]
& B \ar[d, shift left]\\
  C \ar[u, dash, shift left]
    \ar[ur, shift left]
    \ar[ur, shift right, leftarrow]
& D \ar[u, shift left]
\end{tikzcd}
\begin{tikzcd}[
  cells={nodes={draw, help lines}}, /tikz/>={Stealth[scale=.5]},
  /tikz/c/.style={shape=coordinate, name={#1}}, column sep=tiny, arrows=dash]
    & A \\
  B \ar[ur, help lines]
    \ar[ur, out=90, in=270, help lines, green,
        "" {at start, c=A }, "" {at end, c=B }]
    \ar[ur, out=90, in=270, shift left=3, green, thick,
        "" {at start, c=A'}, "" {at end, c=B'}]
    \ar[help lines, from=A, to=B, dashed, blue]
    \ar[help lines, blue, from=A, to=A', ->]
    \ar[help lines, blue, from=B, to=B', ->]
\end{tikzcd}
\end{document}

输出

在此处输入图片描述

相关内容