2018年3月28日

Dynkin図形を描こう

LaTeXで.

dynkin-diagramsパッケージ

Dynkin図形を描きたいという話.dynkin-diagramsというそのものっぽいパッケージがあることに気がついた.使ってみた.Tikzを中で使うので,dvipdfmx利用の場合はドライバ指定を忘れないように.platex+dvipdfmxの場合は

\documentclass[dvipdfmx]{jlreq}
\usepackage{dynkin-diagrams}
\usetikzlibrary{backgrounds}
とする.pdflatexの場合はドライバ指定は不要.

基本書式

\dynkinという命令が用意されている.書式は

\dynkin[<オプション>]{型}{ランク}
である.ランクが空の場合は一般っぽくなる.

$B_3$:\dynkin{B}{3}

$D_4$:\dynkin{D}{4}

$E_8$:\dynkin{E}{8}

$A_n$:\dynkin{A}{}

線の長さが短いとか思っちゃう場合はオプションで解消できる(後で).ランクを空にすると,途中の辺が破線になる.この場所は適当に決まっているけど,変えたい場合は,決まったランクのDynkin図形の辺の一部を破線にすることでできる.オプションmakeIndefiniteEdgeを使う.

もともと:\dynkin{A}{},
変更:\dynkin[makeIndefiniteEdge={1-2}]{A}{4}

\dynkin[makeIndefiniteEdge={1-2},makeIndefiniteEdge={3-4}]{A}{4}のように,複数指定することもできる.頂点の番号付けはBourbakiに従う.(後のlabelオプションも参考.)

affine型は型の後にオプション引数を与える.記号はKacの本に従っているようだ.

$A_5^{(1)}$:\dynkin{A}[1]{5}

$D_4^{(3)}$:\dynkin{D}[3]{4}

オプションextendedにより,拡大Dynkin図形を描くことも可能.

$A_1$の拡大Dynkin図形:\dynkin[extended]{A}{1}

$E_7$の拡大Dynkin図形:\dynkin[extended]{E}{7}

0番目の頂点(加わった頂点)だけ白丸になるのが嫌ならば,\dynkin[extended,affineMark=*]{E}{7}とすれば良い.また,オプションKacを指定すると,見た目がKacの本っぽくなる.

\dynkin[Kac,extended]{A}{3}

佐武図形も描けるよ.(記号はHelgasonの本に従う.)

\dynkin{A}{IIIa}

Coxeterグラフを描きたい場合はオプションCoxeterを指定すればよい.

\dynkin[Coxeter]{B}{4}

スタイル指定

見た目の指定もオプションでできる.

\dynkin[radius=1mm, % 頂点の半径を1mmにする
  edgeLength=1cm, % 辺の長さは3cm
  label, % 頂点にラベルをつける
  mark=o, % 頂点は白丸
]{E}{8} % で,E8を表示

パッケージ読み込み時に指定しておけば,文書内全てに適用される.

\usepackage[radius=1mm,edgeLength=1cm,label,mark=o]{dynkin-diagrams}

ラベル

上述のように,オプションlabelにより頂点にラベルをつけることができる.順番はBourbaki式だが,他の指定もある.

\dynkin[label]{E}{8}
\dynkin[label,ordering=Adams]{E}{8}
\dynkin[label,ordering=Carter]{E}{8}
\dynkin[label,ordering=Dynkin]{E}{8}
\dynkin[label,ordering=Kac]{E}{8}

ラベルは通常数字がつくだけだが,オプションlabelMacro/.codeでカスタマイズできる.

\dynkin[label,labelMacro/.code={\alpha_{#1}}]{A}{3}% #1がラベル番号になる.

Tikz環境内に飛び込み,\dynkinLabelRootを使えば個別にラベルをつけることもできる.

\begin{tikzpicture}
\dynkin[mark=o,extended]{B}{3} % B3の拡大Dynkin図形を,頂点を白丸にして描く
\dynkinLabelRoot{0}{\textit{hs}}
\dynkinLabelRoot{1}{\textit{hs}} % 0,1番目の頂点に「hs」というラベルをつける
\end{tikzpicture}

頂点

上述のように,頂点はオプションmarkで変更できる.デフォルトの黒丸は*で,白丸にするにはo.他の指定は次のような感じ.

\dynkin[mark=O]{A}{3}
\dynkin[mark=t]{A}{3}
\dynkin[mark=x]{A}{3}
\dynkin[mark=X]{A}{3}

affine型の場合は,0番目の頂点に対してはオプションaffineMarkで指定する.

\dynkin[mark=x,affineMark=O]{A}[1]{3}

一部だけ変更したい場合は,Tikz環境内に入ってから\dynkinRootMarkを使う.

\begin{tikzpicture}
\dynkin[mark=o]{A}{5}
\dynkinRootMark{*}{2} % 2番目の頂点を黒丸に変更
\dynkinRootMark{O}{4} % 4番目の頂点を二重丸に変更
\end{tikzpicture}

affine型ならば,\dynkinRootMark{x}{0}のようにすると0番目の頂点を変更できる.(もちろんaffineMark=xと等価.)

\dynkinの第二引数はランクだったけど,ここに頂点表示のリストを並べることもできる.

\dynkin{A}{x*oOtX}% A6型

affine型の場合に0番目の頂点をこの方法で指定することはできないので,affineMarkを使う.

リストの途中に.(ピリオド)があると,makeIndefiniteEdgeと同じ効果を及ぼす.

\dynkin{A}{**.x.oo}

folding

Dynkin図形のfoldingも実装されている.(ただし「limited support」とのこと.)ply=<n>をオプションに入れることで,最大$n$個のルートが一つに潰れているfoldingを表す.例えば次の通り.

\dynkin[ply=2]{D}{4}

\dynkin[ply=3]{D}{4}

ply=2の省略形(?)としてfoldが用意されている,$D_n^{(1)}$型にfoldを指定すると左右両方ともfoldされる.左のみ,右のみとしたい場合はfoldleftfoldrightを指定する.

\dynkin{D}[1]{}
\dynkin[foldleft]{D}[1]{}
\dynkin[foldright]{D}[1]{}
\dynkin[fold]{D}[1]{}

Tikz環境に入れば,\dynkinFoldによりもっと直接に指定できる.

\begin{tikzpicture}
\dynkin{D}{4}
\dynkinFold[bend left=60]{3}{4}
\end{tikzpicture}

bend rightオプションで二つのルートをつなげている線が曲がる.60は曲がっている部分の角度.

$\mathfrak{so}(2p+1,2q+1)$のVogan図形

\dynkin[fold]{D}{oo.o*o.oooo}

0 件のコメント:

コメントを投稿

コメントの追加にはサードパーティーCookieの許可が必要です