Я пытаюсь написать грамматику FOL в BNF с помощью пакета syntax
, но каждый раз, когда я использую логический символ или команду mathmode (например, \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.
Есть ли способ использовать mathmode внутри 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}