我想保存最后一个顶点的名称。
最后我意识到\def
不能重新分配。所以我总是使用第一个顶点的坐标“14”。但它应该是“14”“13”“12”。此外,三条最低水平线的长度应该与后继节点的第二条最低水平线的长度相同。你还可以看到,我不知道如何在 if 语句中链接(and/or/||/&&)表达式,也不知道如何表达否定(!)。如果没有 20 个额外的包和令人困惑且不一致的新语法,LaTeX 甚至可以做到这一点吗?
\documentclass{article}
\usepackage[pdftex,active,tightpage]{preview}
\usepackage{tikz}
\usepackage{mathpazo}
\usepackage{pdftexcmds}
\PreviewEnvironment{tikzpicture}
\usetikzlibrary{calc}
\usepackage{verbatim}
\usepackage{amsmath,amstext,pstricks}
\begin{document}
\begin{tikzpicture}
\begin{scope}
\tikzstyle{vertex}=[circle,fill=black!20,minimum size=0.6cm,inner sep=0pt]
\foreach \e/\l/\name in {0/2/11, 3.5/5.5/12, 8.6/10.6/13, 14/16.5/14}
{
\coordinate (PPE-\name) at (\l,-1.0); %save position for maxPushforward own
\coordinate (PPA-\name) at (\e,-1.0);
\draw (\e,0) -- (\l,0);
\draw (\e,0.1) -- (\e,-0.1) node[label=south: \footnotesize $e_{R_{\name}}$ ]{};
\draw (\l,0.1) -- (\l,-0.1) node[label=south: \footnotesize $l_{R_{\name}}$ ]{};
}
\def\succr{14};
\foreach \name/\x/\text in {4/15/14, 32/10/13, 31/7.5/13, 2/4.2/12, 1/1/11}
{
\node[vertex] (V-\name) at (\x,0) {$R_{\text}$};
\draw[dotted] (\x-0.3,0) -- (\x-0.3,-2);
\def\nameref{\name}
\ifnum \pdfstrcmp{4}{\nameref}=0
% do nothing
\else
\ifnum \pdfstrcmp{31}{\nameref}=0
% do nothing
\else
\draw[->] (\x-0.3,-1.5) let \p1 = ($(PPA-\succr)-(PPE-\succr)$) in -- ++({veclen(\x1,\y1)},0) node{PPA-\succr};
\fi
\fi %
\ifnum \pdfstrcmp{31}{\nameref}=0
% ein königreich für != oder <> ... maybe \!=
\else
\draw[->] (\x-0.3,-1) -- (PPE-\text);
\def\succr{\text};
\fi
}
\foreach \from/\to/\fname/\tname in {1/2/1/2,2/31/2/3,32/4/3/4}
\draw[->] (V-\from) to[out=30,in=150] node[above,sloped] {$d_{R_{1\fname}R_{1\tname}}$} (V-\to);
\end{scope}
\end{tikzpicture}
\end{document}
也许这张图片可以帮助您理解我打算做什么。 PPF 线对的长度应相同。 每个节点都绘制自己的 PPF 线。 然后我尝试将顶点的名称保存为 \succr。 在下一次迭代/节点中,我计算前一个节点的 PFF 线的长度,并在底部绘制相应的线(\succr)。 目前,这些线的长度并不相同。
答案1
\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[vertex/.style={circle,fill=black!20,minimum size=0.6cm,inner sep=0pt}]
\begin{scope}
\foreach \e/\l/\name in {0/2/11, 3.5/5.5/12, 8.6/10.6/13, 14/16.5/14}
{
\coordinate (PPE-\name) at (\l,-1.0);
\coordinate (PPA-\name) at (\e,-1.0);
\draw (\e,0) -- (\l,0)
(\e,0.1) -- (\e,-0.1) node[label=south: \footnotesize $e_{R_{\name}}$ ]{}
(\l,0.1) -- (\l,-0.1) node[label=south: \footnotesize $l_{R_{\name}}$ ]{};
}
\foreach \name/\x/\text[remember=\text as \prevtext (initially 14)] in {4/15/14, 32/10/13, 31/7.5/13, 2/4.2/12, 1/1/11}
{
\node[vertex] (V-\name) at (\x,0) {$R_{\text}$};
\draw[dotted] (\x-0.3,0) -- (\x-0.3,-2);
\ifnum\name=4\relax\else
\ifnum\name=31\relax\else
\draw[->] (\x-0.3,-1.5) let \p1 = ($(PPA-\prevtext)-(PPE-\prevtext)$) in -- ++({veclen(\x1,\y1)},0) node{PPA-\prevtext};
\fi
\fi
\ifnum\name=31\relax\else\draw[->] (\x-0.3,-1) -- (PPE-\text);\fi
}
\foreach \from/\to/\fname/\tname in {1/2/1/2,2/31/2/3,32/4/3/4}
\draw[->] (V-\from) to[out=30,in=150] node[above,sloped] {$d_{R_{1\fname}R_{1\tname}}$} (V-\to);
\end{scope}
\end{tikzpicture}
\end{document}