$$a_0 \to a_1 \to a_2 \to ....... \to a_k $$
现在,我想画一条从到$a_k$
的弯曲箭头$a_0$
有什么办法可以做到这一点?
谢谢
答案1
有 tikzmark
这方面的库。你也可以自己制作一个手工宏。
\documentclass{article}
\usepackage{tikz}
\newcommand{\tikzmark}[3][]{\tikz[remember picture,baseline] \node [inner xsep=0pt,anchor=base,#1](#2) {#3};}
\begin{document}
\[\tikzmark{a}{$a_0$} \to a_1 \to a_2 \to \dots \to \tikzmark{b}{$a_k$} \]
\begin{tikzpicture}[remember picture,overlay]
\draw[->] (a.north east) to[bend left] (b.north west);
\end{tikzpicture}
\end{document}
为了使它循环,类似这样的事情:
\documentclass{article}
\usepackage{tikz}
\newcommand{\tikzmark}[3][]{\tikz[remember picture,baseline] \node [inner xsep=0pt,anchor=base,#1](#2) {#3};}
\begin{document}
\[\tikzmark{a}{$a_0$} \to a_1 \to a_2 \to \dots \to \tikzmark{b}{$a_k$} \]
\begin{tikzpicture}[remember picture,overlay]
\draw[->,rounded corners=1ex] (b.east) -| ++(2ex,2ex) to[bend right,looseness=1] ([shift={(-2ex,2ex)}]a.west) |- (a.west);
\end{tikzpicture}
\end{document}
答案2
以下使用 TikZ 的解决方案无需额外的\tikzmark
LaTeX 运行即可记住位置。弯曲箭头的箭头头与 LaTeX\rightarrow
或其同义词的默认外观相匹配\to
。错误的开头也使用圆形线帽。参数looseness
用于使曲线稍微变平,以减少弯曲箭头的垂直空间要求:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{bending}
\usetikzlibrary{topaths}
\begin{document}
\begin{equation}
\begin{tikzpicture}[
baseline=(a0.base),
inner sep=0pt,
line cap=round,
>={Computer Modern Rightarrow[bend]},
]
\node (a0) {$a_0$};
\node[anchor=base west] (a1) at (a0.base east)
{${}\to a_1 \to a_2 \to \dots \to{}$};
\node[anchor=base west] (ak) at (a1.base east)
{$a_k$};
\draw[
->,
transform canvas={yshift=.3em},
] (ak) to[bend right, looseness=.6] (a0);
\end{tikzpicture}
\end{equation}
\end{document}
评论:
不要用于
$$
在 LaTeX 中显示方程式,请参阅我应该使用哪个命令来显示方程式?inner sep=0pt
避免节点周围出现额外的白色边缘。yshift
用于将弯曲的箭头稍微向上移动,以使箭头起点和终点与相应的数学符号之间的距离更大。另一种方法是使用选项shorten <
和shorten >
。- 数学模式中的空,就像在周围适当间距处创建一个空的数学原子
{}
一样。{} \to a_1
\to
答案3
第二种解决方案展示了如何在不使用 TikZ 的情况下实现这一点。仅预期使用 pdfTeX 原语。
{\lccode`\?=`\p \lccode`\!=`\t \lowercase{\gdef\ignorept#1?!{#1}}}
\def\usedim#1 {\expandafter\ignorept\the#1 \space}
\def\cyclicseq#1{\setbox0=\hbox{\kern-.7em$#1$\kern-.7em}%
\dimen0=.3\wd0 \dimen1=.7\wd0
\leavevmode \kern.7em
\pdfsave\pdfsetmatrix{.9397 .342 -.342 .9397}\raise4pt\rlap{$\prec$}\pdfrestore
\pdfliteral{q .9963 0 0 .9963 0 7 cm .4 w 0 0 m
\usedim\dimen0 10 \usedim\dimen1 10 \usedim\wd0 0 c S Q}%
\vbox to15pt{}\box0 \kern.7em
}
Text $\cyclicseq{a_0 \to a_1 \to a_2 \to \ldots \to a_k}$ text.