使用 Tikz 绘制霍奇菱形

使用 Tikz 绘制霍奇菱形

我一直在尝试使用 Tikz 绘制霍奇菱形(它们出现在凯勒几何的上下文中)。我已经得到了以下结果在此处输入图片描述

但是,我希望得到类似这样的结果(即,我希望添加这些漂亮的 Serre、Hodge 和共轭标签及其箭头)。此外,我还想添加一个垂直的 Betti 数列,表示菱形行数的总和。 在此处输入图片描述

编辑。我明白了,但是我遇到了另一个问题。我使用的是 MathTimePro 2 字体,因此由于这些字体有自己的箭头和大小,因此看起来并不完全符合预期。所以,我只是要求一个如下所示的解决方案,但是使用 tikzcd 制作箭头和标签(而不是诸如 \longleftrightarrow 之类的东西)。这是结果,使用现代计算机/AMS 看起来非常好,所以我将在下面保留它的代码,但使用 MathTime 效果不太好,这就是为什么我需要使用 Tikz-cd 来制作箭头,这样它们最终的行为就与主字体相同了…… 在此处输入图片描述

\documentclass{article}
\usepackage{amsmath, amssymb, amsfonts, graphicx, pgfplots, tikz, tikz-cd, stmaryrd}
\begin{document}
    
    \[ \begin{tikzcd}[row sep=small, column sep=tiny]
    &   &&&&h^{0,0}&&&& && b_0 \\ 
    &   &&&h^{1,0}&&h^{0,1}&&&&& b_1 \\
    &   &&h^{2,0}&&h^{1, 1}&&h^{0,2}&&&& b_2 \\ 
    &   &\reflectbox{$\ddots$} &&&\vdots &&&\ddots&&& \vdots \\
    \mathrm{Hodge}\enspace\rotatebox[origin=c]{90}{$\longleftrightarrow$}   &   h^{n,0}& &\cdots && \underset{\textstyle\mathrm{Serre}}{  \scalebox{1.5}{$ \curvearrowleft $}  } &&\cdots&&h^{0, n}&& b_n\\ 
    &   &\ddots &&&\vdots &&&\reflectbox{$\ddots$}&&& \vdots \\
    &   &&h^{n, n-2}&&h^{n-1,n-1}&&h^{n-2,n}&& && b_{2n-2}\\ 
    &   &&&h^{n,n-1}&&h^{n-1,n}&& &&& b_{2n-1}\\ 
    &   &&&&h^{n,n}&&&&&& b_{2n} \\ 
    &   &&&&    \underset{\textstyle\mathrm{conjugation}}{\longleftrightarrow}  &&&&&&\\ 
\end{tikzcd} \]
    
\end{document}

答案1

在一般情况下可能没什么用,但手动定位节点会让事情变得相当简单。可以通过定义一个常量(即零元函数)来帮助元素的位置/实验室,从而稍微作弊。

\documentclass[tikz,border=10pt]{standalone}
\usepackage{amsmath,amssymb}
\pgfmathdeclarefunction{n}{0}{\def\pgfmathresult{4}}
\def\rdots{\reflectbox{$\ddots$}}
\begin{document}
\begin{tikzpicture}
\begin{scope}[x={(-1.25cm,-.75cm)},y={(1.25cm,-.75cm)}]
\foreach \i/\j/\k in {
    0/0, 0/1, 0/2, 0/n, 1/0, 2/0, n/0, n/n-2, 
    n/n-1, n/n, n-2/n, n-1/n, 1/1, n-1/n-1,
    0/3/\ddots, n/1/\ddots, 3/0/\rdots, 1/n/\rdots,
    3/1/\dots, 1/3/\dots,
    1.5/1.5/\vdots, 2.5/2.5/\vdots}
  \node at (\i, \j) {\ifx\j\k$h^{\i,\j}$\else$\k$\fi };
\node [label=below:Serre]       at (2, 2)           {$\curvearrowleft$};
\node [label=below:conjugation] at (n + .5, n + .5) {$\leftrightarrow$};
\node [label=right:Hodge]       at (-.5, n + .5)    {$\updownarrow$};
\end{scope}
\foreach \i/\j in {0/b_0, 1/b_1, 2/b_2, 
    3/\vdots, 4/b_n, 5/\vdots, 
    6/b_{2n-2}, 7/b_{2n-1}, 8/b_{2n}}
  \node[y=0.75cm] at (9, -\i) {$\j$};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容