\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{makeidx}
\usepackage{graphicx}
\usepackage{tikz}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\node[shape=circle,draw=black] (s) at (-3,3) {$1$};
\node[shape=circle,draw=black] (sr) at (3,3) {$2$};
\node[shape=circle,draw=black] (r) at (-5,0) {$3$};
\node[shape=circle,draw=black] (r2) at (0,0) {$4$};
\node[shape=circle,draw=black] (sr2) at (3,-3) {$5$};
\node[shape=circle,draw=black] (sr3) at (-3,-3) {$6$};
\draw (s) -- (sr);
\draw (s) -- (r2);
\draw (sr) -- (sr2);
\draw (sr2) -- (sr3);
\draw (sr3) -- (s);
\draw (r2) -- (sr);
\draw (s) -- (r);
\draw (r) -- (sr3);
\draw (sr) -- (r);
\draw (sr2) -- (r);
\draw (s) -- (r2);
\draw (r2) -- (sr3);
\draw (sr) -- (r2);
\draw (sr2) -- (r2);
\end{tikzpicture}
\end{figure}
\end{document}
我得到了下图作为输出。 https://i.stack.imgur.com/ALUcB.jpg 但我想让这个数字看起来像这样:
如何绘制这样的边缘?请帮忙。
答案1
答案2
我能想到两种可能的解决方案:
解决方案 1
您可以用 来替换 ,--
以to
接受额外的选项,例如路径离开原点的角度以及路径到达目的地的角度。
在你的情况下,你可以替换
\draw (sr) -- (r);
\draw (sr2) -- (r);
和
\draw (sr) to [in = 90, out = 135] (r);
\draw (sr2) to [in = -90, out = -135] (r);
尝试各种角度,以更好地了解它们的工作原理。要使这个简单的解决方案适合您的情况,您还必须进一步node
r
向左移动。
解决方案 2
r
上述解决方案可以在从到sr
/ 的途中扩展一个中间辅助坐标sr2
。以下代码使用 x 值为r
且 y 值位于r
和sr
/中间的坐标sr2
。
\draw (sr) to [out = 135, in = 90] ($(sr-|r)!0.5!(r)$) -- (r);
\draw (sr2) to [out = -135, in = -90] ($(sr2-|r)!0.5!(r)$) -- (r);
这样 的位置r
就可以保持不变。要使此代码正常工作,calc
需要 库,该库可以包含在 中\usetikzlibrary{calc}
。
为了形象地展示语法是如何($(sr-|r)!0.5!(r)$)
运作的,你可以在它的不同部分画一些小圆圈
\fill [blue] (sr-|r) circle (1mm); % mixing x-coordinate of r with y-coordinate of sr
\fill [red] ($(sr-|r)!0.5!(r)$) circle (1mm); % going to the center (0.5) between the previous coordinate and r