我正在绘制一个凸多边形和一条连接两点的线在边缘。但是,如下图所示,线的端点不在边缘上。如何解决?
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\path[draw] (0,0) node[left] (6) {6}
-- (1.5,-1) node[below] (5) {5}
-- (3.5, -0.8) node[below] (4) {4}
-- (5,0) node[right] (3) {3}
-- (4, 1.5) node[above] (2) {2}
-- (1,2) node[above] (1) {1}
-- cycle;
\draw ($(3)!0.4!(4)$) -- ($(1)!0.4!(2)$);
\end{tikzpicture}
\end{document}
答案1
发生这种情况是因为您的(1)
、(2)
、(3)
等节点是标签,而不是点。
这是一个可能的解决方案\coordinate
:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\coordinate (1) at (1,2);
\coordinate (2) at (4, 1.5);
\coordinate (3) at (5,0);
\coordinate (4) at (3.5, -0.8);
\path[draw] (0,0) node[left] {6}
-- (1.5,-1) node[below] {5}
-- (4) node[below] {4}
-- (3) node[right] {3}
-- (2) node[above] {2}
-- (1) node[above] {1}
-- cycle;
\draw ($(3)!0.4!(4)$) -- ($(1)!0.4!(2)$);
\end{tikzpicture}
\end{document}
答案2
您可以看到为什么它不起作用的解释Heiko Oberdiek 的回答。为了解决这个问题,你可以node[position] (n) {n}
用替换coordinate[label=position:n] (n)
。以下是完整代码:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\path[draw] (0,0) coordinate[label=left:6] (6)
-- (1.5,-1) coordinate[label=below:5] (5)
-- (3.5, -0.8) coordinate[label=below:4] (4)
-- (5,0) coordinate[label=right:3] (3)
-- (4, 1.5) coordinate[label=above:2] (2)
-- (1,2) coordinate[label=above:1] (1)
-- cycle;
\draw[red] ($(3)!0.4!(4)$) -- ($(1)!0.4!(2)$);
\end{tikzpicture}
\end{document}
答案3
连接节点的线(3) -- (4)
和(1) -- (2)
节点的中心点:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\path[draw] (0,0) node[left] (6) {6}
-- (1.5,-1) node[below] (5) {5}
-- (3.5, -0.8) node[below] (4) {4}
-- (5,0) node[right] (3) {3}
-- (4, 1.5) node[above] (2) {2}
-- (1,2) node[above] (1) {1}
-- cycle;
\draw[red] (3) -- (4) (1) -- (2);
\draw[blue] ($(3)!0.4!(4)$) -- ($(1)!0.4!(2)$);
\end{tikzpicture}
\end{document}
您需要的是节点的锚点,而不是节点的中心点:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\path[draw] (0,0) node[left] (6) {6}
-- (1.5,-1) node[below] (5) {5}
-- (3.5, -0.8) node[below] (4) {4}
-- (5,0) node[right] (3) {3}
-- (4, 1.5) node[above] (2) {2}
-- (1,2) node[above] (1) {1}
-- cycle;
\draw[red] ($(3.west)!0.4!(4.north)$) -- ($(1.south)!0.4!(2.south)$);
\end{tikzpicture}
\end{document}
然而,这是一场维护噩梦。如果移动标签,则还需要固定锚点。因此,将多边形顶点定义为坐标更为清晰,如图所示回答CarLaTeX。