缩放不会影响使用 tqft 包制作的图表

缩放不会影响使用 tqft 包制作的图表

我正在尝试画一幅画,其中一部分将使用 Andrew Stacey 的tqft 封装。然而,他的软件包生产的所有东西似乎都不受扩展的影响。

例如,以下代码是我尝试使用上面链接中的测试图并将其缩放 1/4。但是,它似乎对我所做的只是将等号缩放 1/4,并保持 tqft 图不变:

\documentclass{article}
\usepackage{tikz}
\usepackage{tqft}
\begin{document}
\begin{tikzpicture}[scale=1/4, tqft/flow=east]
\begin{scope}[tqft/boundary lower style={draw,  thick}]
\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,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{scope}

\end{tikzpicture}

\end{document}

我根本不是高级 TeX 用户,所以希望这是一件简单的事情。我曾想过直接给 Andrew 发邮件询问,但他似乎经常来这里,也许其他人也会遇到同样的问题。

答案1

更新:开始翻看包裹,发现这个不是一个错误。这是一个功能!

共边形状绘制为节点。节点与坐标变换有特殊的关系:它们忽略缩放和旋转,只使用移位部分。这是通常情况下你想要什么。然而,凭借他们无穷的智慧,TikZ 团队提供了一种节点可以使用完整转换的方法。要使用此功能,您需要将键添加transform shape到节点。然后它会受到旋转和缩放等因素的影响。此外,TQFT 包的编写者(以他无穷的愚蠢)提供了一种一次性在每个 tqft 形状上指定选项的方法:使用样式every tqft。因此解决方案是添加every tqft/.style={transform shape}周围的范围。

因此:

\documentclass{article}
\usepackage{tikz}
\usepackage{tqft}
\begin{document}
\begin{tikzpicture}[
  tqft/flow=east,
]
\begin{scope}[scale=1/4,every tqft/.style={transform shape},
tqft/boundary lower style={draw,  thick}]
\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,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{scope}

\end{tikzpicture}

\end{document}

生成:

tqft 缩放比例

哪个是对的。

然而,这里有一个错误。它在文档中。人们不会想到这些共边会出现这种行为,因为它们看起来不像节点(文本去哪里了?),所以我应该在用户指南中指出这一点。

(PS:在这里发帖绝对正确。甚至我走廊另一头的同事也开始在这里发帖来引起我的注意。)


原答案如下:

我觉得这像是个 bug。如果我是你,我会要求退款。

说真的,这看起来好像我没有正确编码周围的变换(如果你把rotate=45比例放到位,你就会明白我的意思!)。所以我认为你有三个选择。

  1. 等我找到解决这个问题的最佳方法。

  2. 使用键tqft/cobordism height和类似键手动修复尺寸。

  3. 使用 acanvas transform而不是 a coordinate transform(确保只将其放在包含共边的范围内,否则它也会影响诸如此类的事情=)。

相关内容