TikZ Graph 中的多个比例尺盒

TikZ Graph 中的多个比例尺盒

我创建了以下带有边缘矢量符号的图形: 在此处输入图片描述

我想使矢量变大而不放大文本,因此我设计了一个命令:

\newcommand{\vecb}[1]{\reflectbox{\reflectbox{\scalebox{2}[1.5]{\ensuremath{\vec{\scalebox{0.5}[0.66]{\ensuremath{#1}}}}}}}}

这使得箭头更大:

在此处输入图片描述

但是如果我在 TikZ 中使用它,它会出错:

\XKV@resa 的使用与其定义不符。

图形代码:

\begin{tikzpicture}
  \GraphInit[vstyle=Normal]
  \SetGraphUnit{1.5}
  \tikzset{VertexStyle/.append style={rectangle}}

  \Vertex[x=0,y=0]{John}
  \Vertex[x=4.5,y=0]{London}
  \Vertex[x=9,y=0]{England}
  \Edge[style={->,>=triangle 45},label=$\vec{residence}$](John)(London)
  \Edge[style={->,>=triangle 45},label=$\vec{capital}$](London)(England)
\end{tikzpicture}

为什么这不起作用?如何修复?

答案1

使用带有positioning库的普通 tikz,这可以更简单。我使用了一个小技巧来使用 来获取箭头$\overrightarrow{..}$。此箭头延伸到整个内容,因此我只在括号内包含三个字母,$ca\overrightarrow{pit}al$这样箭头就只有三个字符长。

\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{positioning,arrows}
\begin{document}

\begin{tikzpicture}[blk/.style={draw, minimum height=2em}, >=triangle 45,thick]
\node(j) [blk]{John}; 
\node(l) [blk,right=10em of j]{London}; 
\node(e) [blk,right=10em of l]{England};

\draw [->] (j) -- node[fill=white]{$res\overrightarrow{ide}nce$} (l);
\draw [->] (l) -- node[fill=white]{$ca\overrightarrow{pit}al$} (e);
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

欢迎使用 TeX.SE!所以您正在使用 TiZ 并且担心无法在某些节点文本上方添加箭头?不,我认为没有问题。;-)

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{tkz-graph}
\begin{document}
\begin{tikzpicture}[vec/.style={inner ysep=3pt,path picture={
 \draw[-latex,line width=0.4pt] ([yshift=-1.5pt,xshift=3pt]path picture bounding box.north west)
 --([yshift=-1.5pt,xshift=-3pt]path picture bounding box.north east);}}]
  \GraphInit[vstyle=Normal]
  \SetGraphUnit{1.5}
  \tikzset{VertexStyle/.append style={rectangle}}

  \Vertex[x=0,y=0]{John}
  \Vertex[x=4.5,y=0]{London}
  \Vertex[x=9,y=0]{England}
  \Edge[style={->,>=triangle 45},label=$residence$,labelstyle=vec](John)(London)
  \Edge[style={->,>=triangle 45},label=$capital$,labelstyle=vec](London)(England)
\end{tikzpicture}
\end{document}

在此处输入图片描述

我个人不会使用数学字体residence/ capital

答案3

tikz解,矢量箭头绘制为tikz

\documentclass[tikz, border=3.141592mm]{standalone}
\usetikzlibrary{arrows.meta, chains, positioning}

\begin{document}
    \begin{tikzpicture}[
node distance = 33mm,
  start chain = A going right,
   arr/.style = {very thick, -Triangle},
   lbl/.style = {rectangle, fill=white, name=lbl, inner ysep=3mm,
                 path picture={
                 \draw[thick, -{Straight Barb[length=0.8mm,width=1.2mm]}]
                 ([shift={(-.2,-.15)}]lbl.north) -- ([shift={(.2,-.15)}]lbl.north);}
                },
   box/.style = {rectangle, draw, on chain=A, join=by arr}
                    ]
\node[box] {John};
\node[box] {London};
\node[box] {England};
\path   (A-1) -- node[lbl] {\textit{residence}}  (A-2)
        (A-2) -- node[lbl] {\textit{capital}}    (A-3);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案4

这可能是另一种解决方案tikz-cd。对于小箭头,您可以使用(例如)@AboAmmar 的建议。

在此处输入图片描述

\documentclass[a4paper,12pt]{article}

\usepackage{amsmath}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
\boxed{\text{John}} \arrow[rr, "\overrightarrow{\mathit{residence}}" description] &  & \boxed{\text{London}} \arrow[rr, "\overrightarrow{\mathit{capital}}" description] &  & \boxed{\text{England}}
\end{tikzcd}
\end{document}

相关内容