有没有办法画一个里面有文字的箭头,就像图中那样?我看到了很多例子,TikZ
但大多数都是文字在箭头上方,而不是箭头内部。
答案1
\documentclass{scrartcl}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (-5,0);
\coordinate (B) at ( 5,0);
\draw[->] (A) -- (B) node[midway,fill=white] {\emph{success}};
\end{tikzpicture}
\end{document}
这样做同样的事情,其他用户可能更容易理解
\draw[->] (A) -- node[midway,fill=white] {\emph{success}} (B);
答案2
无需 tikz 和任何复杂代码即可完成此操作。了解 TeX 基本体就足够了。
\def\arrowtext#1#2{\hbox to#1{\arrowtextA\ #2 \arrowtextA\kern2pt\llap{$\succ$}}}
\def\arrowtextA{\leaders\vrule height2.7pt depth-2.3pt\hfil}
\arrowtext{5cm}{success}
编辑:为了回应下面@fpast 的评论,我展示了带有中间文本的对角线示例。 pdfTeX 应该是这样的。
\def\arrowtext#1#2{\hbox to#1{\arrowtextA\ #2 \arrowtextA\kern2pt\llap{$\succ$}}}
\def\arrowtextA{\leaders\vrule height2.7pt depth-2.3pt\hfil}
\def\diagonal{\pdfsave\pdfsetmatrix{.7071 .7071 -.7071 .7071}}
\arrowtext{5cm}{success}
\vskip2cm \noindent
\diagonal\rlap{\arrowtext{3cm}{diagonal}}\pdfrestore
答案3
使用 TikZ 的解决方案,无需用白色填充背景:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (-2,0);
\coordinate (B) at ( 2,0);
\path (A) -- node (success) {\emph{success}} (B);
\draw[->] (A) -- (success) -- (B);
\end{tikzpicture}
\end{document}
利用库calc
,还可以计算出节点的位置:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (-2,0);
\coordinate (B) at ( 2,0);
\draw[->]
($(A)!.5!(B)$) node (success) {\emph{success}}
(A) -- (success) -- (B);
\end{tikzpicture}
\end{document}
评论:
- 箭头线与文本之间的空间由节点的内边距控制,通过选项设置
inner sep
;默认为0.3333em
。
答案4
基于 Heiko Oberdiek 解决方案:
\documentclass[tikz,border=1em]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (-2,-1);
\coordinate (B) at ( 2,+1);
% invisible line, for sloped option:
\path (A) to node[sloped] (success) {\emph{success}} (B);
% real line with sloped text in the midle
\draw[->] (A) -- (success) -- (B);
\end{tikzpicture}
\end{document}
此线可以双向指向任意方向。