
どうやって描くの?tikz-cd
- 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
。
受け入れ可能なもの:
- 議論の余地はない、
- 因数(単位なし)と
- 次元(単位付き)。
キーは、元の開始座標と終了座標(通常はノードの境界上の点)を結ぶ線に対して直角に線を移動します。
- デフォルト値は
shift left
0.56exです。 - 当該デフォルト値に所定の係数を乗じた値、または
- 指定された長さ。
矢印に沿ったノード (TikZ-CD ではラベルと呼ばれます) は、シフトされていないパスではなく、シフトされた新しいパスに沿って配置されます。
以下のコードの最初の図は
- 矢印の先端がない2本の平行線あそしてC、
- 2つの平行な前方矢印(Bそしてだ)から1つが抽出されますBにだそして1つはだにB(両方とも
shift left
)および - 2本の平行矢印がCにB矢印の先端が逆になっている部分(
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}