我想使矢量变大而不放大文本,因此我设计了一个命令:
\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!所以您正在使用 Ti钾Z 并且担心无法在某些节点文本上方添加箭头?不,我认为没有问题。;-)
\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}