Вертикальные параллельные линии/стрелки

Вертикальные параллельные линии/стрелки

Как я могу рисовать с помощью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; если вы хотите изменить это, вы можете использовать клавишу labels, например \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 leftкоторого по умолчанию равно 0.56ex,
  2. указанное значение по умолчанию, умноженное на заданный коэффициент или
  3. указанной длины.

Узлы вдоль стрелки (называемые метками в TikZ-CD) будут размещены вдоль нового смещенного пути, а не вдоль несмещенного.


Первая диаграмма в коде ниже показывает

  • две параллельные линии без наконечника стрелки между нимиАиС,
  • две параллельные стрелки вперед (междуБиД) откуда взятоБкДи один изДкБ(оба с shift left) и
  • две параллельные стрелки, проведенные изСкБгде у одного из них обратные кончики стрелок ( 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}

Выход

введите описание изображения здесь

Связанный контент