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される.左のみ,右のみとしたい場合はfoldleft
やfoldright
を指定する.
\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の許可が必要です