
双複素数を生成する次のコードがあります:
\begin{displaymath}
\xymatrix{
0 \ar[r] & \Omega^0_X \ar[d] \ar[r] & \Omega_X^1 \ar[r] \ar[d] & \ldots \ar[r] & \Omega_X^n \ar[d] \ar[r] & 0 \\
0 \ar[r] & C^0(\Omega^0_X) \ar[d] \ar[r] & C^0(\Omega_X^1) \ar[r] \ar[d] & \ldots \ar[r] & C^0(\Omega_X^n) \ar[d] \ar[r] & 0 \\
0 \ar[r] & C^1(\Omega^0_X) \ar[d] \ar[r] & C^1(\Omega_X^1) \ar[r] \ar[d] & \ldots \ar[r] & C^1(\Omega_X^n) \ar[d] \ar[r] & 0 \\
& \vdots & \vdots & \ldots & \vdots & \\
}\end{displaymath}
生成する
左下から右上の方向に、各対角線を丸で囲みたいと思います。XYpic マニュアルを読み進めていくことにしました (現在も読み進めています) が、よくあることですが、おそらく手遅れでしょう。
そこで質問なのですが、xymatrix/xypic または Tikz (Tikz についてはほとんど知りませんが) で、説明されているように要素を丸で囲む (楕円になると思いますが) ことは可能でしょうか? 下手な図で示したバージョンについては、下の図を参照してください。
XYpic リファレンス マニュアルで ellipse コマンドを見つけましたが、それを使用するには周囲のコードに十分精通していません。さらに、基本的な XYpic コードを xymatrix に組み込めるかどうかもわかりません。どちらかの点について明確にしていただければ、部分的な回答として非常に役立ちます。
答え1
切り替える可能性は1つありますtikz-cd
可換図については、tikzmark
ライブラリを使用して、後で「長方形」を描画するために使用するマークをいくつか配置します (特に、図の構文は同じであることに注意してください)。
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz-cd}
\usetikzlibrary{tikzmark}
\begin{document}
\begin{tikzcd}[column sep=1cm,row sep=1cm]
0 \ar[r] & \tikzmark{startc}\Omega^0_X \ar[d] \ar[r] & \tikzmark{startb}\Omega_X^1 \ar[r] \ar[d] & \tikzmark{starta}\ldots \ar[r] & \Omega_X^n \ar[d] \ar[r] & 0 \\
\tikzmark{endc}0 \ar[r] & C^0(\Omega^0_X) \ar[d] \ar[r] & C^0(\Omega_X^1) \ar[r] \ar[d] & \ldots \ar[r] & C^0(\Omega_X^n) \ar[d] \ar[r] & 0 \\
\tikzmark{endb}0 \ar[r] & \tikzmark{enda}C^1(\Omega^0_X) \ar[d] \ar[r] & C^1(\Omega_X^1) \ar[r] \ar[d] & \ldots \ar[r] & C^1(\Omega_X^n) \ar[d] \ar[r] & 0 \\
& \vdots & \vdots & \ldots & \vdots & \\
\end{tikzcd}
\begin{tikzpicture}[remember picture,overlay]
\draw[rounded corners=20pt]
([xshift=-5pt,yshift=15pt]{pic cs:starta}) --
([xshift=50pt,yshift=15pt]pic cs:starta) --
([xshift=30pt,yshift=-15pt]pic cs:enda) --
([xshift=-30pt,yshift=-15pt]pic cs:enda) --
cycle
;
\draw[rounded corners=20pt]
([xshift=-10pt,yshift=15pt]{pic cs:startb}) --
([xshift=42pt,yshift=15pt]pic cs:startb) --
([xshift=0pt,yshift=-15pt]pic cs:endb) --
([xshift=-48pt,yshift=-15pt]pic cs:endb) --
cycle
;
\draw[rounded corners=20pt]
([xshift=-6pt,yshift=15pt]{pic cs:startc}) --
([xshift=42pt,yshift=15pt]pic cs:startc) --
([xshift=-6pt,yshift=-15pt]pic cs:endc) --
([xshift=-46pt,yshift=-15pt]pic cs:endc) --
cycle
;
\end{tikzpicture}
\end{document}
必要に応じてxshift
、およびに使用される値を調整します。yshift
より良い形状の別の可能性:
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz-cd}
\usetikzlibrary{tikzmark}
\tikzset{
Enclose/.style={
draw,
opacity=0.2,
line width=#1,
line cap=round,
color=gray
}
}
\begin{document}
\begin{tikzpicture}[remember picture,overlay]
\draw[Enclose=30pt] ([xshift=10pt]pic cs:starta) -- ([xshift=15pt]pic cs:enda);
\draw[Enclose=30pt] ([xshift=5pt]pic cs:startb) -- ([xshift=-10pt]pic cs:endb);
\draw[Enclose=30pt] ([xshift=10pt]pic cs:startc) -- ([xshift=-10pt]pic cs:endc);
\end{tikzpicture}
\begin{tikzcd}[column sep=1cm,row sep=1cm]
0 \ar[r] & \tikzmark{startc}\Omega^0_X \ar[d] \ar[r] & \tikzmark{startb}\Omega_X^1 \ar[r] \ar[d] & \tikzmark{starta}\ldots \ar[r] & \Omega_X^n \ar[d] \ar[r] & 0 \\
\tikzmark{endc}0 \ar[r] & C^0(\Omega^0_X) \ar[d] \ar[r] & C^0(\Omega_X^1) \ar[r] \ar[d] & \ldots \ar[r] & C^0(\Omega_X^n) \ar[d] \ar[r] & 0 \\
\tikzmark{endb}0 \ar[r] & \tikzmark{enda}C^1(\Omega^0_X) \ar[d] \ar[r] & C^1(\Omega_X^1) \ar[r] \ar[d] & \ldots \ar[r] & C^1(\Omega_X^n) \ar[d] \ar[r] & 0 \\
& \vdots & \vdots & \ldots & \vdots & \\
\end{tikzcd}
\end{document}
コードを安定させるには 3 回実行する必要があります。
答え2
これがあなたが求めているものでしょうか? と呼ばれる新しいコマンドcircled
が定義され、 を介して 1 つの引数を取るのでtikz
、必要なのは だけですcircled{object}
。
アップデート:tikzmark
OP の新しい説明に基づいて、tikz を介したスキル の使用。
コード: 更新されました
\documentclass[12pt]{article}
\usepackage[margin=1cm,paper size={20cm,15cm}]{geometry}
\usepackage{tabularx,array}
\usepackage{amsmath,tikz}
\usepackage[all]{xy}
\usetikzlibrary{calc,positioning}
\thispagestyle{empty}
\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node[outer sep=0pt, inner sep=0pt] (#1) {};
}
%\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
% \node[shape=circle,draw,minimum width=2cm,inner sep=2pt] (char) {$#1$};}}
\begin{document}
\begin{displaymath}
\xymatrix{
0 \ar[r] & \tikzmark{d}\Omega^0_X \ar[d] \ar[r] & \Omega_X^1 \ar[r] \ar[d] & \ldots \ar[r] &\tikzmark{b}{\Omega_X^n} \ar[d] \ar[r] & 0 \\
\tikzmark{c}0 \ar[r] & C^0(\Omega^0_X) \ar[d] \ar[r] & C^0(\Omega_X^1) \ar[r] \ar[d] & {\ldots} \ar[r] & C^0(\Omega_X^n) \ar[d] \ar[r] & 0 \\
0 \ar[r] & C^1(\Omega^0_X)\ar[d] \ar[r] & {C^1(\Omega_X^1)} \ar[r] \ar[d] & \ldots \ar[r] & C^1(\Omega_X^n) \ar[d] \ar[r] & 0 \\
& \tikzmark{a}{\vdots} & \vdots & \ldots & \vdots & \\
}
\end{displaymath}
\begin{tikzpicture}[overlay, remember picture]
\draw [rounded corners=10pt]($(a.south west)+(-0.5,-0.5)$) -- ($(a.south west)+(-0.5,0.6)$) -- ($(b.east)+(0.6,0.6)$)-- ($(b.east)+(0.6,-0.5)$)--cycle;
\draw [rounded corners=10pt]($(c.south west)+(-0.5,-0.5)$) -- ($(c.south west)+(-0.5,0.6)$) -- ($(d.east)+(0.6,0.6)$)-- ($(d.east)+(0.6,-0.5)$)--cycle;
\end{tikzpicture}
\end{document}
コード
\documentclass[12pt]{article}
\usepackage[margin=1cm,paper size={20cm,15cm}]{geometry}
\usepackage{tabularx,array}
\usepackage{amsmath,tikz}
\usepackage[all]{xy}
\thispagestyle{empty}
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
\node[shape=circle,draw,minimum width=2cm,inner sep=2pt] (char) {$#1$};}}
\begin{document}
\begin{displaymath}
\xymatrix{
0 \ar[r] & \Omega^0_X \ar[d] \ar[r] & \Omega_X^1 \ar[r] \ar[d] & \ldots \ar[r] & \circled{\Omega_X^n} \ar[d] \ar[r] & 0 \\
0 \ar[r] & C^0(\Omega^0_X) \ar[d] \ar[r] & C^0(\Omega_X^1) \ar[r] \ar[d] & \circled{\ldots} \ar[r] & C^0(\Omega_X^n) \ar[d] \ar[r] & 0 \\
0 \ar[r] & C^1(\Omega^0_X)\ar[d] \ar[r] & \circled{C^1(\Omega_X^1)} \ar[r] \ar[d] & \ldots \ar[r] & C^1(\Omega_X^n) \ar[d] \ar[r] & 0 \\
& \circled{\vdots} & \vdots & \ldots & \vdots & \\
}
\end{displaymath}
\end{document}
答え3
のみtikz
:
\documentclass[tikz,margin=2pt]{standalone}
\usepackage{}
\usetikzlibrary{calc,fit}
\begin{document}
\begin{tikzpicture}[x=2cm,y=-1.5cm,>=stealth]
\foreach \y [count=\Y from 0] in
{{0,\Omega^0_X,\Omega_X^1,\ldots,\Omega_X^n ,0},
{0,C^0(\Omega^0_X),C^0(\Omega_X^1),\ldots,C^0(\Omega_X^n),0},
{0,C^1(\Omega^0_X),C^1(\Omega_X^1),\ldots,C^1(\Omega_X^n),0},
{,\vdots,\vdots,\ldots,\vdots,}} {%
\foreach \x [count=\X from 0] in \y
{%
\node[inner sep=5pt] (\X\Y) at (\X,\Y) {$\x$} ;
}}
\foreach \y in {0,...,3}
\foreach \x [count=\i from 1] in {0,...,4} {%
\draw[->] (\x\y) -- (\i\y);
}
\foreach \x in {0,...,5}
\foreach \y [count=\i from 1] in {0,...,2} {%
\draw[->] (\x\y) -- (\x\i);
}
\node[draw=red, rounded corners=6pt, rotate fit=-50, inner sep =7pt, fit=(10) (01)] {};
\node[draw=red, rounded corners=6pt, rotate fit=-50, inner sep =1pt, fit=(20) (11) (02)] {};
\node[draw=red, rounded corners=6pt, rotate fit=-50, inner sep =1pt, fit=(12) (21) (30)] {};
\end{tikzpicture}
\end{document}