我想要改变下图中的几件事:
(d)
(1)从图片开始的位置垂直向上对齐项目符号。
(2)在 处改变箭头方向,q4
从右向左(此图中方向是从左向右)
(3)拉伸的自身在 处循环,q3
就像q4
在 处一样q2
。
\documentclass[12pt,a4paper]{article}
\usepackage{enumerate}
\usepackage{tikz}
\usetikzlibrary{arrows,automata}
\tikzset{every state/.style}
\begin{document}
\begin{enumerate}[(a)]
\item
\item
\item
\item
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.8cm,semithick]
\node[initial,state] (q0) {$q_0$};
\node[state] (q1) [above right of=q0] {$q_1$};
\node[state,accepting] (q2) [right of=q1] {$q_2$};
\node[state] (q3) [below right of=q0] {$q_3$};
\node[state] (q4) [above right of=q3] {$q_4$};
\node[state,accepting] (q5) [right of=q3,xshift=1cm] {$q_5$};
\path (q0) edge node {0} (q1)
edge node[left,xshift=-0.2cm] {1} (q3)
(q1) edge node {1} (q2)
edge node[right,xshift=0.1cm] {0} (q4)
(q2) edge [loop] node[above] {0,1} (q2)
(q3) edge [loop below] node[below] {1} (q3)
edge node[right,xshift=0.1cm] {0} (q4)
(q4) edge [loop right] node {0} (q4)
edge [bend left] node[below] {1} (q5)
(q5) edge [bend left] node[above] {0} (q4)
edge node {1} (q3);
\end{tikzpicture}
\end{enumerate}
\end{document}
我试过这对齐项目符号,但这对我来说不起作用。
答案1
像这样?
\documentclass[12pt,a4paper]{article}
\usepackage{enumerate}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,automata,
positioning,
quotes}
\begin{document}
\begin{enumerate}[(a)]
\item
\item
\item
\item
\begin{tikzpicture}[baseline={([yshift=-0.6\baselineskip] current bounding box.north)},
auto,
node distance=12mm and 12mm,
every edge/.style = {draw, semithick, -Stealth, shorten >=1pt},
every edge quotes/.style = {font=\small, inner sep=2pt},
every loop/.style = {looseness=12}
]
\node (q0) [state, initial] {$q_0$};
\begin{scope}[nodes=state]
\node (q1) [above right=of q0] {$q_1$};
\node (q2) [state, accepting,
right=of q1] {$q_2$};
\node (q3) [below right=of q0] {$q_3$};
\node (q4) [above right=of q3] {$q_4$};
\node (q5) [accepting,
right=of q3] {$q_5$};
\end{scope}
\path (q0) edge ["0" '] (q1)
edge ["1"] (q3)
(q1) edge ["1"] (q2)
edge ["0" '] (q4)
(q2) edge [loop above,
"{0,1}"] (q2)
(q3) edge [loop below, "1"] ()
(q4) edge ["0" '] (q3)
(q4) edge [loop right, "0"] ()
edge [bend left, "1"] (q5)
(q5) edge [bend left, "0"] (q4)
edge ["1"] (q3);
\end{tikzpicture}
\end{enumerate}
\end{document}
- 使用的是
positioning
和quotes
包 - 在这种情况下,定位的语法是
right=of q0
等(观察MWE 中的比较=
和交换)of
- 定义了边和边引号和循环的样式
编辑:
或者通过使用node distance=24mm and 24mm, on grid,
上面的 MWE,图表如下:
编辑:根据 OP 评论,图像应该与文字对齐开始如图所示。这可以通过
\begin{tikzpicture}[baseline={([yshift=-0.5ex] q0.base)},
对于 id ,上述 MWE 的结果是: