使用 pstricks 或 tikz 绘制的拓扑量子场论图

使用 pstricks 或 tikz 绘制的拓扑量子场论图

这个问题导致了一个新的方案的出现:
tqft - 博客:TQFT 包

我要写一篇关于拓扑量子场论,所以我需要画一些“一条裤子s”...我想知道是否有一种简单的方法可以用 tikz 或 PStricks 获得这样的对象;挑战在于我想创建一组“模块化”的对象以便在第二个时刻进行组装:画出一条裤子和另一个对象,我不想重新创建所有内容以获得两者的并置。

编辑:是我想要得到的。

在此处输入图片描述

答案1

更新(2011-05-06):可以从以下位置下载此代码的重新编写版本:http://bazaar.launchpad.net/~tex-sx/tex-sx/development/files作为文件tqft.dtx。要生成包文件和文档,请运行pdflatex tqft.dtx。此文件是提议的包的一部分您最喜欢的 TikZ/PGF 答案是什么?并将适时在 CTAN 上发布。


以下是基于此答案的先前版本的示例。我希望我已经正确地编辑它以反映包的当前方法,但如果存在冲突,请参阅包文档。

好的,这里有一个更全面的解决方案。主要的麻烦是设置一些东西,以便人们可以改变共边的“流动”方向。这是通过一个键来完成的tqft/flow,目前,它可以采取方向之一north,,,和(默认为)。这会旋转东西,以便传入到传出的方向是正确的方向。它还反映了事物south,以便边界编号始终是从上到下或从左到右。eastwestsouth

节点类型及其定义的锚点(均已定义centrecenter因此我没有列出)(更新锚点经过了一些重新设计,以便现在所有锚点都定义incoming boundary n为一个合理的整数(小于默认值)):outgoing boundary nn10

  • tqft/pair of pantsincoming boundary 1,,outgoing boundary 1outgoing boundary 2
  • tqft/reverse pair of pantsincoming boundary 1,,incoming boundary 2outgoing boundary 1
  • tqft/cylinder to prior: incoming boundary 1, outgoing boundary 1; 这是一个倾斜的圆柱体,因此传出的边界向着较低编号的边界组件移动,移动的量刚好适合tqft/pair of pants
  • tqft/cylinder to next: incoming boundary 1, outgoing boundary 1; 这是一个倾斜的圆柱体,因此外边界向编号较高的边界组件移动的量恰好适合tqft/pair of pants
  • tqft/cylinder: incoming boundary 1, outgoing boundary 1; 这是一个直圆柱体
  • tqft/cap:这“封闭”了边界组件
  • tqft/cup:这将启动一个边界组件

全局键:

  • tqft/flow: 往上看
  • tqft/cobordism height:这是共边中层级之间的分离(又称裤子的高度等)
  • tqft/boundary separation:这是边界组件中心之间的分离(又称裤子的宽度等)
  • tqft/circle width:边界成分是椭圆,这设置了水平轴(相对于共边)
  • tqft/circle depth:设置边界椭圆的垂直轴

代码如下:

\documentclass{article}
\usepackage{tikz}
\usepackage{tqft}
\begin{document}
\begin{tikzpicture}[tqft/flow=east]
\node[tqft/pair of pants,draw] (a) {};
\node[tqft/reverse pair of pants,draw,anchor=incoming boundary 1] (b) at (a.outgoing boundary 2) {};
\node[tqft/cylinder to next,draw,anchor=incoming boundary 1] (c) at (a.outgoing boundary 1) {};
\node[tqft/cylinder to next,draw,anchor=outgoing boundary 1] (e) at (b.incoming boundary 2) {};
\path (b.outgoing boundary 1) ++(1.5,1) node[font=\Huge] {\(=\)};
\path (b.outgoing boundary 1) ++(3,0) node[tqft/reverse pair of pants,draw,anchor=incoming boundary 2] (e) {};
\node[tqft/pair of pants,draw,anchor=incoming boundary 1] (f) at (e.outgoing boundary 1) {};
\end{tikzpicture}
\end{document}

结果如下:

tqft 与 tikz

相关内容