• 0

كيف أرسُم خطاطة لـ Automata على LaTeX؟

أريد إدراج الخطاطة التالية، والتي تتعلق بـ Automata على برنامج LaTeX على الشكل:

D5APE.thumb.png.a245d2bf1d736a0939e78eb0

بعد أخذ المساعدة والبحث هنا وهناك، توصلت إلى الكود المبين اسفله بمساعدة TexMaker:

\documentclass[a4paper,twoside,11pt]{article}
\usepackage{tikz}
\usetikzlibrary{automata,positioning}

\begin{document}

\begin{tikzpicture}[shorten >=1pt,node distance=2.5cm,on grid,auto]
   \node[state,initial] (0) {$q_0$};
   \node[state] (1) [right=of 0] {$q_1$};
   \node[state, accepting] (2) [right=of 1] {$q_2$};
   \node[state, accepting] (3) [right=of 2] {$q_3$};
   \node[state] (4) [right=of 3] {$q_4$};
   \path[->]
    (0) edge [bend left]    node {$a$} (2)
    (0) edge [loop below]   node {$b$} (0)
    (0) edge                node {$c$} (1)
    (1) edge                node {$a$} (2)
    (1) edge [bend left]    node {$b$} (4)
    (1) edge [loop below]   node {$c$} (1)
    (2) edge [bend right]   node {$a$} (0)
    (2) edge [loop below]   node {$b$} (2)
    (2) edge                node {$c$} (3)
    (3) edge [bend right]   node {$a$} (0)
    (3) edge                node {$b$} (4)
    (3) edge [loop below]   node {$c$} (3)
    (4) edge [loop below]   node {$a$, $b$, $c$} (4);
\end{tikzpicture}

\end{document}

المشكل أن الخطوط الرابطة بين مختلف المراحل في Automata لا تظهر بشكل صحيح، هل من مثال مشابه أو حل للمشكل؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

المشكل الأساسي في الكود المُدرج في كودك هو في المنعطف bend، حيث أنك لم تُعطه زاوية مما يجعل الرابط يصطدم بحلقات أخرى، لذا الحل الوحيد لتفادي ذلك هو إعطاء قيمة لزاوية الانعطاف blend، بهذا الشكل:

edge [bend left=60]   node {$a$} (0)

ليكون الكود الكامل لـ Automat الخاص بك على الشكل التالي، مع مراعاة  زوايا الانعطاف :

\documentclass[a4paper,twoside,11pt]{article}
\usepackage{tikz}
\usetikzlibrary{automata,positioning}

\begin{document}

\begin{tikzpicture}[shorten >=1pt,node distance=2.5cm,on grid,auto]
   \node[state,initial] (0) {$q_0$};
   \node[state] (1) [right=of 0] {$q_1$};
   \node[state, accepting] (2) [right=of 1] {$q_2$};
   \node[state, accepting] (3) [right=of 2] {$q_3$};
   \node[state] (4) [right=of 3] {$q_4$};
   \path[->]
    (0) edge [bend left]    node {$a$} (2)
    (0) edge [loop below]   node {$b$} (0)
    (0) edge                node {$c$} (1)
    (1) edge                node {$a$} (2)
    (1) edge [bend left]    node {$b$} (4)
    (1) edge [loop below]   node {$c$} (1)
    (2) edge [bend left=60]   node {$a$} (0)
    (2) edge [loop below]   node {$b$} (2)
    (2) edge                node {$c$} (3)
    (3) edge [bend left=60]   node {$a$} (0)
    (3) edge                node {$b$} (4)
    (3) edge [loop below]   node {$c$} (3)
    (4) edge [loop below]   node {$a$, $b$, $c$} (4);
\end{tikzpicture}

\end{document}

لا تنس استدعاء مكتبة tikz للتمكّن من رسم الخطاطة:

\usepackage{tikz}

المكتبة مُدرجة في أول الكود.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن