我正在尝试使用该包以 BNF 格式编写 FOL 的语法syntax
,但每次使用逻辑符号或数学模式命令(例如 \neg、\land、\mathbb{} 等)时,都会出现错误。例如:
\documentclass[12pt]{article}
\usepackage{amsfonts}
\usepackage{amsmath,amsthm,amssymb}
\usepackage[mathscr]{euscript}
\usepackage{syntax}
\usepackage[margin=1in]{geometry}
\begin{grammar}
<formula> ::= <formula> <connective> <formula>
\alt `\neg' <formula>
\alt <quantifier> <variable> `(' <formula> `)'
\end{grammar}
返回错误
Missing $ inserted. \alt `\neg
Extra }, or forgotten $. \alt `\neg'
Missing $ inserted. \alt `\neg'
Missing } inserted. \alt `\neg'
我尝试使用 $...$ 和 ${...}$,但仍然出现错误。
其他错误通常
\< command > allowed only in math mode.
有没有办法在grammar
环境中使用数学模式?
答案1
在grammar
环境中,角色`
、<
和"
处于活动状态,以获得以下外观
引用syntax
手册
在这些缩写形式中,文本或多或少被逐字处理:
任何
$
、%
、^
、&
、{
或字符}
都按字面意思处理:它们的正常特殊含义将被忽略~
。#
除 之外的其他特殊字符
\
也按字面意思处理:[...]
在这种情况下,LaTeX 的内联数学运算方式,即\(...\)
,可以解决问题。
\documentclass{article}
\usepackage{syntax}
\begin{document}
\begin{grammar}
<formula> ::= <formula> <connective> <formula>
\alt `\(\neg\)' <formula>
\alt <quantifier> <variable> `(' <formula> `)'
\end{grammar}
\end{document}