我使用图片环境构建了一个类型为 A_n 的简单 Dynkin 图,它看起来像:
噢——噢——噢……噢——噢——噢
我想用圆箭头(两侧都有箭头)连接此图表的第一个和最后一个顶点,但我无法使用图片环境制作贝塞尔箭头。我宁愿不使用 Tikz。
这是我的图表的粗略代码:
\documentclass{amsart}
\begin{document}
\begin{picture}(7,2)
\put(0,1){\circle*{5}}
\put(0,1){\line(1,0){20}}
\put(20,1){\circle*{5}}
\put(20,1){\line(1,0){20}}
\put(40,1){\circle*{5}}
\put(53,-1){\mbox{$\cdots$}}
\put(80,1){\circle*{5}}
\put(80,1){\line(1,0){20}}
\put(100,1){\circle*{5}}
\put(100,1){\line(1,0){20}}
\put(120,1){\circle*{5}}
\end{picture}
\end{document}
答案1
这是一个使用基本picture
环境的方法,通过包进行扩展图片。我不得不手动放置箭头一点,不知道在这种情况下是否还有其他方法。
关于图表的形状,我不知道这是否是所要求的,我这样做了cfr 的答案
\documentclass{amsart}
\usepackage{pict2e}% extension of LaTeX2e's picture abilities
\begin{document}
% \the\unitlength % 1pt by default
\begin{picture}(7,2)% <-- are sure you want the picture declared with 7pt of
% width and 2pt of height?
\linethickness{1pt}
\put(0,1){\circle*{5}}
\put(0,1){\line(1,0){20}}
\put(20,1){\circle*{5}}
\put(20,1){\line(1,0){20}}
\put(40,1){\circle*{5}}
\put(53,-1){\mbox{$\cdots$}}
\put(80,1){\circle*{5}}
\put(80,1){\line(1,0){20}}
\put(100,1){\circle*{5}}
\put(100,1){\line(1,0){20}}
\put(120,1){\circle*{5}}
\cbezier (0,3)(40,25)(80,25)(120,3)% cubic Bezier curve
\put(116,5){\vector(2,-1){5}}% trial and error..
\cbezier (120,-1)(80,-23)(40,-23)(0,-1)
\put(4,-3){\vector(-2,1){5}}% trial and error..
\end{picture}
\end{document}
答案2
我知道您想避免使用 TiKZ,但即便如此,您仍表示有兴趣找到解决方案。
此方法的使用tikzmark
意味着您不必重新编码现有图表,但您必须编译两次才能看到效果:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
\begin{picture}(7,2)
\put(0,1){\tikzmark{a}\circle*{5}}
\put(0,1){\line(1,0){20}}
\put(20,1){\circle*{5}}
\put(20,1){\line(1,0){20}}
\put(40,1){\circle*{5}}
\put(53,-1){\mbox{$\cdots$}}
\put(80,1){\circle*{5}}
\put(80,1){\line(1,0){20}}
\put(100,1){\circle*{5}}
\put(100,1){\line(1,0){20}}
\put(120,1){\tikzmark{b}\circle*{5}}
\end{picture}
\begin{tikzpicture}[remember picture, overlay]
\draw [->] ({pic cs:a}) +(0,5pt) coordinate (c) [out=45, in=135] to (c -| {pic cs:b});
\draw [<-] ({pic cs:a}) +(0,-5pt) coordinate (d) [out=-45, in=-135] to (d -| {pic cs:b});
\end{tikzpicture}
\end{document}
或者,仅限 TiKZ 的解决方案:
\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\path [fill] foreach \i in {0,20,40,80,100,120} {(\i pt,0) coordinate (c\i) circle (2.5pt)};
\path [draw] (c0) -- (c20) -- (c40) (c80) -- (c100) -- (c120);
\node [anchor=center] at ($(c40)!1/2!(c80)$) {$\cdots$};
\draw [->] (c0) +(0,5pt) coordinate (p) [out=45, in=135] to (p -| c120);
\draw [<-] (c0) +(0,-5pt) coordinate (q) [out=-45, in=-135] to (q -| c120);
\end{tikzpicture}
\end{document}
答案3
这并不是您真正想要的,因为它TikZ
通过使用dynkin-diagrams
包来使用:
\documentclass{amsart}
\usepackage{dynkin-diagrams}
\newcommand{\ar}[1]{
\draw[thick,gray!75,stealth-stealth]
(root 1) to [out=#1 45,in=#1 135] (root 6);}
\begin{document}
\begin{dynkinDiagram}{A}{ooo.ooo}
\ar{-}\ar{+}
\end{dynkinDiagram}
\end{document}
如果你想让圆圈变成实心点,请替换ooo.ooo
为***.***