以下操作在 LaTeX 中不起作用,因为逻辑符号只能在数学模式下使用:
\texttt{\forall x(\exists y((f(x)=y)\land(\neg(g(y)=y))))}
我想这样做是为了强调这些公式作为字符串(数学对象)的性质。逻辑符号应该看起来更类似于其他固定宽度的符号,而不是普通的数学模式符号。然后我也可以写出以下内容:
If $\phi$ is a formula of first-order logic and $x$ is a variable, then
\texttt{\forall$x$($\phi$)} is again a formula of first-order logic.
最好的方法是什么?显然,使用不同的命令代替 \forall、\land 等就可以了。直接输入 unicode 数学字符会更好:
\texttt{∀x(∃y((f(x)=y)∧(¬(g(y)=y))))}
If $\phi$ is a formula of first-order logic and $x$ is a variable, then
\texttt{∀$x$($\phi$)} is again a formula of first-order logic.
我尝试使用 \usepackage{utf8x} 来运行 XeTeX,但不起作用。否定符号给出“Character172appearedalone”,其他字符根本就不会打印。
[第一条回复后添加]
以下是迄今为止最好的近似值:
\newcommand{\Forall}{$\mathtt\forall$}
\newcommand{\Exists}{$\mathtt\exists$}
\newcommand{\Neg}{$\mathtt\neg$}
\newcommand{\Land}{$\mathtt\land$}
\newcommand{\Lor}{$\mathtt\lor$}
\noindent\texttt{\Forall x\Exists y(x\Land y)}\\
\texttt{abcde\Forall x\Exists y(x\Land y)}
使用示例表明逻辑符号的宽度并不完全正确。但至少在最初阶段,它足以满足我的需求。我想,对于最终的解决方案,我将研究如何让这些符号使用宽度零并将它们打印在 monotype 空格字符上。
答案1
XeTeX 没有问题如果您加载包含以下字符的字体:
\documentclass{minimal}
\usepackage{fontspec}
\setmainfont{DejaVu Serif}
\setsansfont{DejaVu Sans}
\setmonofont{DejaVu Sans Mono}
\begin{document}
\texttt{∀x(∃y((f(x)=y)∧(¬(g(y)=y))))}
If $\phi$ is a formula of first-order logic and $x$ is a variable, then
\texttt{∀$x$($\phi$)} is again a formula of first-order logic.
\end{document}
inputenc
注意:使用 XeTeX 编译时切勿加载该包。
使用 DejaVu Sans Mono 的结果:
使用 FreeMono 的结果:
答案2
你不能用吗$\mathtt{\forall x(\exists y((f(x)=y)\land(\neg(g(y)=y))))}$
?