因此,我绘制了几个彼此对齐的等腰三角形,其中一个三角形是倒置的,但那个倒置的三角形产生了不想要的行为(它的角开始突出)。所有这些三角形都具有相同的顶角和相同的最小尺寸,我(错误地)认为这足以消除它们之间的不一致。
代码:
\documentclass[border=5mm]{standalone}
\usepackage[alignedleftspaceno]{amsmath}
\usepackage{tikz}
\usetikzlibrary
{ calc,
positioning,
shapes % REQUIRED TO DRAW TRIANGLES
,spy % SPY LINE (CAN BE REMOVED AT ONCE WITH OTHER SPY LINES)
}
\begin{document}
\begin{tikzpicture} % BEGIN DEFINING OPTIONS
[ every isosceles triangle node/.style=
{ draw,
inner sep=0mm,
isosceles triangle apex angle=60,
minimum size=20mm,
outer sep=0mm,
shape border uses incircle
}
,spy using outlines= % SPY LINE; MARK NEXT LINE (PROBLEM WITH FORMATTING)
{circle, % SPY LINE; NO SPACE ALLOWED BETWEEN "{" AND "circle"?
magnification=20, % SPY LINE
size=2cm, % SPY LINE
connect spies % SPY LINE
} % SPY LINE
] % END DEFINING OPTIONS
% DRAW TOP TRIANGLE
\path node
[ isosceles triangle,
shape border rotate=90
](T_1){};
% DRAW BOTTOM LEFT TRIANGLE
\path node
[ isosceles triangle,
shape border rotate=90,
below=0mm of T_1.left corner,
anchor=apex
](T_2){};
% DRAW PROBLEMATIC TRIANGLE (IT IS UPSIDE DOWN)
\path node
[ isosceles triangle,
shape border rotate=-90,
right=0mm of T_2.apex,
anchor=right corner
](T_3){};
\spy[red]on(T_3.right corner) % SPY LINE
in node at(3,0); % SPY LINE
\end{tikzpicture}
\end{document}
输出:
我本来只想问这个问题,但在格式化代码以供提交,并添加间谍功能以放大有问题的区域时,我遇到了另一个问题。您可能已经注意到,我的代码中有一个“标记下一行(格式问题)”注释。出于某种原因,我无法在“{”(左括号)和单词“圆圈”之间添加空格,这影响了代码的格式,尽管影响不大。我想知道(如果你愿意的话)为什么。我收到的错误消息是
Package pgfkeys Error: I do not know the key '/tikz/ circle' and I am going to ignore it.
Perhaps you misspelled it.
答案1
正如错误消息所表明的那样,Ti钾Z 寻找circle
并且没有这样的形状。在某些情况下,空格会被修剪掉,但并非总是如此,这里也不是。解析至少可以说是复杂的,结果并不总是你直观地期望的,因为这会导致其他地方的行为不那么直观。一般来说,它做得很好,但有时你需要记住,毕竟,代码和精确的语法很重要。
奇怪的间谍结果是 Ti 使用的放置方法的函数钾Z 和非零线宽,与分离绘制的边框路径相结合。
也就是说,问题在于你的镶嵌计划没有考虑到线宽。要么出现间隙,要么出现突出部分。此外,如果你不绘制封闭路径,不精确无论如何都会导致粗糙。每个形状周围都有封闭路径,但组合的边界没有。
解决此问题的一种方法是在创建节点后绘制边框。例如,
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,spy}
\begin{document}
\begin{tikzpicture}
[
every isosceles triangle node/.style={%
inner sep=0mm, isosceles triangle apex angle=60, minimum size=20mm, outer sep=0mm, shape border uses incircle
},
spy using outlines={%
circle, magnification=20, size=2cm, connect spies,
},
]
\begin{scope}[every node/.append style={isosceles triangle}]
\node [shape border rotate=90] (T_1) {};
\node [anchor=right corner, shape border rotate=-90] (T_3) at (T_1.left corner) {};
\node [anchor=apex, shape border rotate=90] (T_2) at (T_1.left corner) {};
\end{scope}
\draw (T_1.apex) -- (T_1.right corner) -- (T_3.apex) -- (T_2.left corner) -- (T_2.apex) edge (T_3.apex) edge (T_1.right corner) -- cycle;
\spy[red]on(T_3.right corner) in node at(3,0);
\end{tikzpicture}
\end{document}
答案2
在我看来,三角形的唯一问题是线连接是“斜接”,对于这种锐角的线连接(这就是这种情况),最外角的点会超出拐角处 1/2 线宽的圆盘。我不知道您的软件包是否允许您更改这一点,但在 Illustrator/PostScript/等中,只需将线连接设置为圆角或斜接即可。