我正在尝试画一幅画,其中一部分将使用 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}
生成:
哪个是对的。
然而,是这里有一个错误。它在文档中。人们不会想到这些共边会出现这种行为,因为它们看起来不像节点(文本去哪里了?),所以我应该在用户指南中指出这一点。
(PS:在这里发帖绝对正确。甚至我走廊另一头的同事也开始在这里发帖来引起我的注意。)
原答案如下:
我觉得这像是个 bug。如果我是你,我会要求退款。
说真的,这看起来好像我没有正确编码周围的变换(如果你把rotate=45
比例放到位,你就会明白我的意思!)。所以我认为你有三个选择。
等我找到解决这个问题的最佳方法。
使用键
tqft/cobordism height
和类似键手动修复尺寸。使用 a
canvas transform
而不是 acoordinate transform
(确保只将其放在包含共边的范围内,否则它也会影响诸如此类的事情=
)。