
Как я могу рисовать с помощьюtikz-cd
- две вертикальные параллельные линии
- две вертикальные параллельные линии, направленные в противоположные стороны?
решение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
.
Они принимают:
- нет аргументов,
- фактор (без единиц) и
- измерение (с единицами измерения).
Клавиша сместит линию ортогонально к линии, соединяющей исходную начальную и конечную координаты (обычно это точка на границе узлов) на
- значение по умолчанию для
shift left
которого по умолчанию равно 0.56ex, - указанное значение по умолчанию, умноженное на заданный коэффициент или
- указанной длины.
Узлы вдоль стрелки (называемые метками в 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}