我正在研究一个自动机,并尝试在数学模式下使用 \textschwa 或 \schwa,但最终得到的只是一个 & 符号。有人知道如何在数学模式下实现这一点吗?我使用的代码如下,我想要放置 schwa 的区域位于边缘 (7) 的矩阵中。谢谢。
\begin{tikzpicture}[shorten >=1pt,node distance=4cm,on grid,auto]
\node[state] (0) {$q_0$};
\node[state] (1) [below right=of 0] {$q_1$};
\node[state] (2) [below left=of 1] {$q_2$};
\node[state] (3) [below right=of 2] {$q_3$};
\node[state] (4) [right=of 3] {$q_4$};
\node[state] (5) [above right of=4] {$q_5$};
\node[state] (6) [below right of=5] {$q_6$};
\node[state] (7) [below left of=6] {$q_7$};
\path[->]
(0) edge node {\textschwa:R} (1)
(0) edge [loop above] node {B:\textschwa} (0)
(1) edge node {\textschwa:R} (2)
(1) edge [loop left] node {B:\textschwa} (1)
(2) edge node {B:0:$R_2$} (3)
(3) edge node {B:0:$L_2$} (4)
(4) edge [loop above] node{1:R} (4)
(4) edge node {0:0} (5)
(5) edge [loop above] node{$\begin{matrix}0:$R_2$\\1:$R_2$\end{matrix}$} (5)
(5) edge [bend left] node{B:1:L} (6)
(6) edge [loop right] node{B:$L_2$} (6)
(6) edge [bend left] node{$x$:E:R} (5)
(6) edge node{\textschwa:R} (7)
(7) edge [loop below] node{$\begin{matrix}0:$R_2$\\1:$R_2$\\x:$R_2$\\ {\textschwa}:$R_2$\end{matrix}$} (7)
(7) edge node{B:0:$L_2$} (4)
\end{tikzpicture}
答案1
数学字体切换是一种与文本字体切换不同的机制,并且符号的管理方式也不同。\textschwa
将字符 ə 表示为@
ipa 字体中的字符 64 ( ),这就是您得到意外字符的原因。获取结果的最简单方法是暂时退出数学模式以使用例如\textschwa
。\mbox{\textschwa}
另一种方法是采用更难的方法,即定义一个新的数学字母表并声明一个命令\mathschwa
以允许直接在数学模式下使用 ə,但 TeX 对允许的数学字母表数量的限制使这个选择不那么有吸引力。
答案2
好问题,但将来请包含一个可编译的 MWE。我不得不尽力猜测你在这里的意思。
在 LuaLaTeX 或 XeLaTeX 中,您可以定义\textschwa
使用 Unicode 字符 ə (U+0259)。在 PDFTeX 中,\textschwa
在包中定义tipa
。
如果您的字体不支持该字符,则可以\rotatebox{180}{e}
从graphicx
包中使用替代方法。
\documentclass{article}
\usepackage{iftex}
\usepackage{tikz}
\usetikzlibrary{automata,positioning}
\iftutex
\usepackage{unicode-math}
\usepackage{newcomputermodern}
\DeclareTextSymbol{\textschwa}{\UnicodeEncodingName}{"0259}
\else
\usepackage[T1]{fontenc}
\usepackage{tipa}
\usepackage{amsmath}
\fi
\newcommand\mathschwa{\mathalpha{\textnormal{\textschwa}}}
\begin{document}
\begin{tikzpicture}[shorten >=1pt,node distance=4cm,on grid,auto]
\node[state] (0) {$q_0$};
\node[state] (1) [below right=of 0] {$q_1$};
\node[state] (2) [below left=of 1] {$q_2$};
\node[state] (3) [below right=of 2] {$q_3$};
\node[state] (4) [right=of 3] {$q_4$};
\node[state] (5) [above right of=4] {$q_5$};
\node[state] (6) [below right of=5] {$q_6$};
\node[state] (7) [below left of=6] {$q_7$};
\path[->]
(0) edge node {\textschwa:R} (1)
(0) edge [loop above] node {B:\textschwa} (0)
(1) edge node {\textschwa:R} (2)
(1) edge [loop left] node {B:\textschwa} (1)
(2) edge node {B:0:$R_2$} (3)
(3) edge node {B:0:$L_2$} (4)
(4) edge [loop above] node{1:R} (4)
(4) edge node {0:0} (5)
(5) edge [loop above] node{\(\begin{matrix}0:R_2 \\ 1: R_2 \end{matrix}\)} (5)
(5) edge [bend left] node{B:1:L} (6)
(6) edge [loop right] node{B:$L_2$} (6)
(6) edge [bend left] node{$x$:E:R} (5)
(6) edge node{\textschwa:R} (7)
(7) edge [loop below] node{\(\begin{matrix}0: R_2 \\ 1:R_2 \\ x:R_2 \\ {\textschwa:R_2} \end{matrix}\)} (7)
(7) edge node{B:0:$L_2$} (4);
\end{tikzpicture}
\end{document}
在此示例中,我似乎不需要数学模式版本,但{\textnormal{\textschwa}}
应该可以工作。如果您希望将其斜体化,可以尝试\textit{\textschwa}
或\textnormal{\itshape\textschwa}
。