我试图模仿一个奇特的断点,但使用三个互锁的圆圈。不幸的是,无论我缩小 TikZ 图片还是将其绘制为已经很小的尺寸,结点间隙都会消失。在这种情况下,是否可以保留可见的结点间隙?
\documentclass{memoir}
\usepackage{tikz}
\usetikzlibrary{knots}
\begin{document}
\def\rings{
\begin{tikzpicture}[knot gap=0.1pt]
\begin{knot}[
%draft mode=crossings ,
% clip width=3,
flip crossing/.list={1,3},
]
\strand [line width=0.7pt, black] (0,0) ellipse (3.2pt and 2.2pt);%circle (1.0cm);
\strand [line width=0.7pt, black] (4pt,0) ellipse (3.2pt and 2.2pt);%circle (1.0cm);
\strand [line width=0.7pt, black] (8pt,0) ellipse (3.2pt and 2.2pt);%circle (1.0cm);
\end{knot}
\end{tikzpicture}
}
\fancybreak{\rings}
\def\ringsA{
\begin{tikzpicture}[scale=0.1,knot gap=8pt]
\begin{knot}[
%draft mode=crossings ,
clip width=3,
flip crossing/.list={1,3},
]
\strand [line width=0.7pt, black] (0,0) ellipse (1.2 and 0.8);%circle (1.0cm);
\strand [line width=0.7pt, black] (1.5,0) ellipse (1.2 and 0.8);%circle (1.0cm);
\strand [line width=0.7pt, black] (3,0) ellipse (1.2 and 0.8);%circle (1.0cm);
\end{knot}
\end{tikzpicture}
}
\fancybreak{\ringsA}
\fancybreak{***}
\end{document}
答案1
所以我在这里学习有关我自己的包的东西......
我真的没有想到人们会用这个knots
库来绘制非常小的图表,所以尽管可以这样做,但我似乎并没有让这一切变得那么简单!特别是,我似乎把一些与此相关的东西放进去了,但没有费心去记录它们!
当库重新绘制交叉点时,有多种因素会发挥作用knots
。过境路径被重新绘制两次,一次用背景色粗略绘制以切掉下境路径,然后再次重新绘制为路径。这两者都被圆圈剪裁,因此它们只在交叉点附近渲染,但圆圈的半径略有不同,因此过境路径与现有路径很好地融合在一起。默认情况下,过境路径被剪裁为比擦除路径大 2pt 的圆圈,并且在更改剪裁半径时保持这一状态。这通常不是问题,因为 2pt 通常小到不引人注意,但当图表太小以至于 2pt 很重要时,它需要更改。这是可能,但没有记录:有一个键clip draw radius
可以覆盖路径上方剪辑圆的半径。
小尺寸出现的另一个地方是交叉点靠近路径的端点。这可能由假交叉点触发,因此有一个关键点说“如果交叉点在端点的这个距离内,则忽略它,因为它可能是假的”。同样,这个值被设置为很小,但在这么小的图表上,它需要更小。
最后,这些尺寸不考虑 tikzpicture 上的任何缩放比例,因此需要将其视为绝对尺寸而不是相对尺寸。这就是为什么下面两张图片的各种设置都相同。
顺便说一句,如果您在文档中经常使用这些,那么我会将它们存储在一个框中box
并重复使用该框。这样可以节省重复所有计算工作。
\documentclass{memoir}
%\url{https://tex.stackexchange.com/q/554924/86}
\usepackage{tikz}
\usetikzlibrary{knots}
\begin{document}
\def\rings{
\begin{tikzpicture}
\begin{knot}[
clip radius=1.8pt,
clip draw radius=1.9pt,
end tolerance=2pt,
clip width=3,
flip crossing/.list={1,3},
]
\strand [line width=0.7pt, black] (0,0) ellipse (3.2pt and 2.2pt);%circle (1.0cm);
\strand [line width=0.7pt, black] (4pt,0) ellipse (3.2pt and 2.2pt);%circle (1.0cm);
\strand [line width=0.7pt, black] (8pt,0) ellipse (3.2pt and 2.2pt);%circle (1.0cm);
\end{knot}
\end{tikzpicture}
}
\fancybreak{\rings}
\def\ringsA{
\begin{tikzpicture}[scale=0.1]
\begin{knot}[
clip radius=1.8pt,
clip draw radius=1.9pt,
end tolerance=2pt,
flip crossing/.list={1,3},
]
\strand [line width=0.7pt, black] (0,0) ellipse (1.2 and 0.8);%circle (1.0cm);
\strand [line width=0.7pt, black] (1.5,0) ellipse (1.2 and 0.8);%circle (1.0cm);
\strand [line width=0.7pt, black] (3,0) ellipse (1.2 and 0.8);%circle (1.0cm);
\end{knot}
\end{tikzpicture}
}
\fancybreak{\ringsA}
\fancybreak{***}
\end{document}
答案2
这看起来像是一个在 40% 缩放系数时出现的分辨率/舍入问题。
作为临时解决方法,将结点导出为独立的 pdf,然后将\includegraphics
其(使用graphicx
包)与 scale= 选项一起作为\fancybreak
。
我尝试了不同的剪辑和翻转交叉设置进行实验。
独立式:
\documentclass[border=6pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{knots}
\newcommand\ringsA{
\begin{tikzpicture}[scale=1,knot gap=8pt]
\begin{knot}[
%draft mode=crossings ,
clip width=15,
flip crossing/.list={2,3},
]
\strand [line width=0.7pt, black] (0,0) ellipse (1.2 and 0.8);%circle (1.0cm);
\strand [line width=0.7pt, black] (1.5,0) ellipse (1.2 and 0.8);%circle (1.0cm);
\strand [line width=0.7pt, black] (3,0) ellipse (1.2 and 0.8);%circle (1.0cm);
\end{knot}
\end{tikzpicture}
}
\begin{document}
\ringsA
\end{document}
其中包括:
\documentclass{memoir}
\usepackage{graphicx}
\begin{document}
\fancybreak{\includegraphics[scale=0.1]{knots_scaledA}}%filename from previous step
\fancybreak{***}
\end{document}