我正在使用 Coxeter 图,并使用dynkin-diagrams
包裹。我有一个 Coxeter 系统,其 Coxeter 矩阵如下:
[ 1 3 2 2 2 2 2 2 ]
[ 3 1 3 2 2 2 2 2 ]
[ 2 3 1 3 2 2 2 2 ]
[ 2 2 3 1 3 2 2 3 ]
[ 2 2 2 3 1 3 2 2 ]
[ 2 2 2 2 3 1 3 2 ]
[ 2 2 2 2 2 3 1 3 ]
[ 2 2 2 3 2 2 3 1 ]
该图的草图如下:
到目前为止我能画出的最复杂的类似组是:
\documentclass{article}
\usepackage{tikz,dynkin-diagrams}
\begin{document}
\tikzset{/Dynkin diagram/fold style/.style={}} % Make the fold look like an edge
The general case of rank 6 is the hypercompact group \begin{dynkinDiagram}[Coxeter]E{III}
\dynkinRootMark{*}1
\dynkinRootMark{*}6
\end{dynkinDiagram}
\end{document}
这是通过调整现有组的样式来实现的,因此好像我的团队的 Coxeter 图。
然而这存在一系列问题:
- 它会影响折叠样式,这意味着如果我使用这种技术,文档中就不会出现折叠。
- 据我所知,没有办法标记折叠边缘。
- 由于这使用了一个恰好与我感兴趣的组相似的特定组,因此无法将其扩展到其他组,例如问题领先的组。
看起来这个软件包是为特定群体(即那些有固定名称的群体)格式化图表而设计的。我没有处理这些群体,所以我想知道我是否缺少软件包中的某些工具,或者它是否不适合这项工作。
我想要绘制的上述图表是否可以使用该dynkin-diagrams
包来绘制,或者我应该放弃该包并以其他方式重新绘制我的图表?
答案1
通过阅读库的源代码,我找到了几个未记录或记录不全的功能来实现这一点。以下是我发现的三种绘制图表的方法:
快速而肮脏
第一种方法是最短的方法,但是有几个缺点:
\begin{dynkinDiagram}[Coxeter,fold style/.style={}]E{III}
\dynkinRootMark{*}1
\dynkinRootMark{*}6
\dynkin[at=(root 2)]A{**o}
\end{dynkinDiagram}
我们按照题目中的方法画出 EIII 作为基础,然后画出另一个 A3 的图并将其放置在与 EIII 重叠的位置。
这有一些缺点:
- 它非常特定于特定图表并且扩展性不强。
- 它涉及重叠节点。
- 我无法在此图上画出折痕,因为我假装折痕是边缘。
清洁工
事实证明,有命令可以从头开始绘制新节点和边。我不知道为什么这个非常有用的功能没有记录。但在下一个示例中,我们从 EIII 开始并绘制额外的节点:
\makeatletter
\begin{dynkinDiagram}[Coxeter,fold style/.style={}]E{III}
\dynkinRootMark{*}1
\dynkinRootMark{*}6
\dynkinRootMark{*}2
\advance\dynkin@nodes by 2
\dynkinPlaceRootRelativeTo{7}{2}{east}{below}{left}
\dynkinRootMark{*}7
\dynkinDefiniteSingleEdge{2}7
\dynkinPlaceRootRelativeTo{8}{7}{east}{below}{left}
\dynkinRootMark{o}8
\dynkinDefiniteSingleEdge{7}8
\end{dynkinDiagram}
\makeatother
这仍然存在折叠问题,我们将在下一个中修复它。
从头开始
我不需要以 EIII 为基础,而是可以从 A4 开始,然后使用相同的技术对其进行扩展。
\makeatletter
\begin{dynkinDiagram}[Coxeter]A{***o}
\advance\dynkin@nodes by 4
\dynkinPlaceRootRelativeTo{5}{1}{northwest}{above}{left}
\dynkinRootMark{*}5
\dynkinDefiniteSingleEdge 1 5
\dynkinPlaceRootRelativeTo{6}{1}{southwest}{below}{left}
\dynkinRootMark{*}6
\dynkinDefiniteSingleEdge 1 6
\dynkinPlaceRootRelativeTo{7}{5}{west}{above}{left}
\dynkinRootMark{*}7
\dynkinDefiniteSingleEdge 5 7
\dynkinPlaceRootRelativeTo{8}{6}{west}{below}{left}
\dynkinRootMark{*}8
\dynkinDefiniteSingleEdge 6 8
\dynkinDefiniteSingleEdge 7 8
\end{dynkinDiagram}
\makeatother