くびのブログ

数学のこととか…?

LaTeXで(コ)ホモロジーの長完全列を書く方法

こんにちは. 首藤です.

サークルの合宿で使おうと思ってde RhamコホモロジーについてLaTeXでいろいろと書いていたんですが, ”Mayer-Vietrisを書けない”という問題に直面しました. だいぶ致命的なのでいろいろ調べたところ, 蛇の補題を書くソースコードを公開している人がいたので, それを参考にいろいろといじくり回してなんとか書くことができました.

これがソースコードです.

\documentclass[a4paper,11pt]{jsarticle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{tikz-cd}

\begin{document}

\[
  \begin{tikzcd}[column sep=1cm]
     & |[alias=Y]| H^{r+1}(C)\arrow[r,"h_*"]
     & H^{r+1}(D)\arrow[r,"k_*"]\arrow[d, phantom, ""{coordinate, name=Z}]
     & H^{r+1}(E)\arrow[r]&\cdots\\
     \cdots\arrow[r]&H^r(C)\arrow[r,"h_*"] & H^r(D)\arrow[r,"k_*"]
     & |[alias=X]| H^r(E)
     \arrow["d^*"', rounded corners,
      to path={[pos=1](\tikztostart) -| ([xshift=1cm]X.east) |- (Z)\tikztonodes -| ([xshift=-1cm]Y.west)--(Y)}]&
  \end{tikzcd}
\]

\end{document}

パッケージはtikz-cdを使っています.

これを出力するとこうなります.

正直よくわかってないし無駄とかも大いにあると思うんですが, 軽くコードの説明をしていきます.

tikzcdの基本的な使い方とかは調べてください.

[alias=Y] はその位置(ここではH^{r+1}(C)が置かれる場所)にYというラベルをつけます. あとで参照します.

\arrow[d, phantom, ""{coordinate, name=Z}] は, その位置から下に見えない矢印を引き, その中点にZというラベルをつけます.

最後の行の \arrow["d^*"', rounded corners, to path={[pos=1](\tikztostart) -| ([xshift=1cm]X.east) |- (Z)\tikztonodes -| ([xshift=-1cm]Y.west)--(Y)}] が一番大事で, to pathというなんかすごいものをうまいこと使ってぐねぐねした矢印を書いています.

[pos=1]はどうやらd^*の位置を調整しているらしいです. 1にすれば\tikztonodesの位置にラベルが付きます. 2個めのサイト(StackExchange)に詳しく書かれてるのでそっちを参考にしてください.

括弧の中に位置を書き, それらを -- や |- なんかで結ぶことで長い矢印を書けます. -- だと横一直線, -| だと横から縦に, みたいな具合です.

ここまで書いといて何なんですが, 全然使い方をわかってないので間違ったことを言ってるかもしれません. その時はやさしく指摘してください.

短完全列から長完全列を作れなくて悩んでいる人のお役に立てれば幸いです.

参考にしたサイト:
abenori.blogspot.com

tex.stackexchange.com