Tikz - 为什么相对定位不起作用?

Tikz - 为什么相对定位不起作用?

梅威瑟:

\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{calc,intersections,through,backgrounds}

\begin{document}

\begin{tikzpicture}[scale=0.5]
\draw[<->] (0,8.5) node[above]{P}--(0,0)--(8.5,0) node[right]{Q};
\draw[name path=D] (0,0) plot [domain=0:8] (\x,8-\x) node[above right, pos = 0.9]{D};
\draw[name path=S] (0,0) plot [domain=0:7.5] (\x,2+\x) node[right]{$S$};
\draw[name path=S1] (0,0) plot [domain=0:7.5] (\x,\x) node[right]{$S + $ sub};
\end{tikzpicture}

\end{document}

请注意,在 Tikz 代码的第三行中,我使用了 pos = 0.9,据我所知,这应该将其放置在沿线的 9/10 处。相反,我得到的是:

在此处输入图片描述

知道为什么吗?

答案1

我同意 Torbjørn T. 的观点,并提出了一个略有不同的建议来实现预期效果:decorations.markings,这适用于一般情节。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,intersections,decorations.markings}

\begin{document}

\begin{tikzpicture}[scale=0.5]
\draw[<->] (0,8.5) node[above]{P}--(0,0)--(8.5,0) node[right]{Q};
\draw[name path=D,postaction={decorate,decoration={markings,
mark=at position 0.9 with {\node[above right] (mypos){D};}}}] (0,0) plot [domain=0:8] (\x,8-\x);
\draw[name path=S] (0,0) plot [domain=0:7.5] (\x,2+\x) node[right]{$S$};
\draw[name path=S1] (0,0) plot [domain=0:7.5] (\x,\x) node[right]{$S + $ sub};
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

pos参数仅适用于某些类型的路径构造,plot据我所知,不属于这些类型。请参阅第 17.8 节将节点明确地放置在直线或曲线上在版本 3.0.1.a(当前稳定版本)手册的第 235 页。在描述pos工作的地方之后,下一页有一句话说

对于所有其他路径构建操作,位置放置不起作用, 现在。

但至少对于这个简单的情况,找出正确的坐标很容易,所以你可以使用

\draw[name path=D] (0,8) -- (8,0) node[above right, pos = 0.9]{D};

反而。

在此处输入图片描述

\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{calc,intersections,through,backgrounds}

\begin{document}

\begin{tikzpicture}[scale=0.5]
\draw[<->] (0,8.5) node[above]{P}--(0,0)--(8.5,0) node[right]{Q};
\draw[name path=D] (0,8) -- (8,0) node[above right, pos = 0.9]{D};
\draw[name path=S] (0,0) plot [domain=0:7.5,samples=2] (\x,2+\x) node[right]{$S$};
\draw[name path=S1] (0,0) plot [domain=0:7.5,samples=2] (\x,\x) node[right]{$S + $ sub};
\end{tikzpicture}

\end{document}

相关内容