垂直平行線/矢印

垂直平行線/矢印

どうやって描くの?tikz-cd

  1. 2本の垂直な平行線
  2. 反対方向を向いた 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使用します。これを変更する場合は、次のように labels キーを使用して を使用できます。\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 ではラベルと呼ばれます) は、シフトされていないパスではなく、シフトされた新しいパスに沿って配置されます。


以下のコードの最初の図は

  • 矢印の先端がない2本の平行線そして
  • 2つの平行な前方矢印(Bそして)から1つが抽出されますBそして1つはB(両方ともshift left)および
  • 2本の平行矢印がB矢印の先端が逆になっている部分(leftarrow)。

2 番目の図では、シフトがどのように機能するかを示します。
ここに画像の説明を入力してください

灰色の線はノード間の直接接続です。細い緑の線はシフトされていない曲線で、太い緑の線はシフトされた曲線です。

青い破線は曲線の始点と終点の間の接続を示し、青い矢印はシフト方向(破線に直交)を示します。

コード

\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}

出力

ここに画像の説明を入力してください

関連情報