Wie kann ich die Formel formatieren

Wie kann ich die Formel formatieren

Hallo, ich muss die Syntax einer Formel als Abbildung angeben. Wie kann ich sie formatieren?

\begin{figure}[h]
Formula $\to$ PrimitiveFormula $\vert$ (Formula Connective Formula)
$\vert \neg$ Sentence $\vert$ Quantifier Variable Formula
Primitive Formula $\to$ Predicate(Term,\cdots ,Term)
\end{figure}

Syntax als Figur

Antwort1

Diese Satzaufgabe lässt sich am einfachsten mit einer tabularUmgebung erledigen. Im folgenden Code lade ich das Paket, um separate Formatierungsanweisungen für die Spalten 1 und 3 (automatischer Kursivmodus) und für Spalte 2 (automatischer Mathematikmodus) einzurichten. Dadurch ist es nicht mehr nötig, viele Symbole und Anweisungen in den Hauptteil der Umgebung arrayeinzufügen .$\itshapetabular

Das folgende Beispiel verwendet auch eine optionale \fboxAnweisung, um den Inhalt der tabularUmgebung optisch von seiner Umgebung abzuheben.

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{array,caption}
\begin{document}
\begin{figure}
\caption{A formula} \label{fig:formula}
\centering
\fbox{%  % framebox is optional
\begin{tabular}{ >{\itshape}r >{$}c<{$} >{\itshape}l }
Formula & \to & PrimitiveFormula\\
 & \vert & $($Formula Connective Formula$)$ \\
 & \vert & $\lnot$ Sentence \\
 & \vert & Quantifier Variable Formula \\[2ex]
PrimitiveFormula & \to & Predicate$($Term,\dots,Term$)$ \\[2ex]
Term & \to & Function$($Term,\dots,Term$)$ \\
 & \vert & Constant \\
 & \vert & Variable \\
\end{tabular}}
\end{figure}

A cross-reference to figure \ref{fig:formula}.
\end{document} 

Antwort2

Sie können align*hierfür verwenden.

\documentclass{article}
\usepackage{mathtools,calc}

\newcommand{\ent}[1]{\mathit{#1}} % `entity'
\newcommand{\alt}[1][\to]{\mathrel{\mathmakebox[\widthof{$#1$}]{\vert}}}

\begin{document}

\begin{table}
\caption{Recursive definition of a formula} \label{fig:formula}

\begin{align*}
\ent{Formula} &\to \ent{PrimitiveFormula}\\
 & \alt (\ent{Formula} \mathbin{\ent{Connective}} \ent{Formula}) \\
 & \alt \lnot \ent{Sentence} \\
 & \alt \ent{Quantifier} \, \ent{Variable} \, \ent{Formula} \\[2ex]
\ent{PrimitiveFormula} & \to \ent{Predicate}(\ent{Term},\dots,\ent{Term}) \\[2ex]
\ent{Term} & \to \ent{Function}(\ent{Term},\dots,\ent{Term}) \\
 & \alt \ent{Constant} \\
 & \alt \ent{Variable}
\end{align*}
\end{table}

A cross-reference to table \ref{fig:formula}.
\end{document}

Bildbeschreibung hier eingeben

Hier ist eine andere Implementierung, bei der die Ausrichtung nicht beibehalten wird, was meiner Meinung nach besser ist, da es die Unabhängigkeit der verschiedenen Teile unterstreicht. Auch die Eingabesyntax ist einfacher.

Der Standardwert für das Trennzeichen ist das Semikolon, Sie können jedoch jedes beliebige Zeichen verwenden, das nicht im zweiten obligatorischen Argument vorkommt (ich habe im ersten \syntaxBefehl nur als Beispiel eine Instanz verwendet, das Semikolon wäre genauso gut).

\documentclass{article}
\usepackage{xparse,amsmath,array}

\newcommand{\ent}[1]{\mathit{#1}}

\ExplSyntaxOn

\NewDocumentEnvironment{syntax}{ }
 { \use:c {align*} }
 { \use:c {endalign*} }

\NewDocumentCommand{\syntaxitem}{O{;}mm}
 { % #1 is the separator
   % #2 is the defined term
   % #3 is a #1 separated list of alternatives
  \syntax_format_syntax:nnn { #1 } { #2 } { #3 }
 }

\seq_new:N \l__syntax_item_seq

\cs_new_protected:Npn \syntax_format_syntax:nnn #1 #2 #3
 {
  & % for the align*
  \seq_set_split:Nnn \l__syntax_item_seq { #1 } { #3 }
  \begin{array}{@{} r @{} >{{}}c<{{}} @{} l @{} }
  #2 & \to & \seq_use:Nn \l__syntax_item_seq { \\ & \vert & }
  \end{array}
 }
\ExplSyntaxOff

\begin{document}

\begin{table}
\caption{Recursive definition of a formula} \label{fig:formula}

\begin{syntax}
\syntaxitem[,]{\ent{Formula}} % use comma just by way of example
 {
  \ent{PrimitiveFormula},
  (\ent{Formula} \mathbin{\ent{Connective}} \ent{Formula}),
  \lnot \ent{Sentence},
  \ent{Quantifier} \, \ent{Variable} \, \ent{Formula}
 }
\\[2ex]
\syntaxitem{PrimitiveFormula}
 {
  \ent{Predicate}(\ent{Term},\dots,\ent{Term})
 }
\\[2ex]
\syntaxitem{\ent{Term}}
 {
  \ent{Function}(\ent{Term},\dots,\ent{Term});
  \ent{Constant};
  \ent{Variable}
 }
\end{syntax}
\end{table}

A cross-reference to table \ref{fig:formula}.

\end{document}

Bildbeschreibung hier eingeben

Antwort3

So funktioniert es \halignin einfachem TeX:

\input opmac
\def\rmbrackets{\adef({{\rm(}}\adef){{\rm)}}}\rmbrackets

\hfil\vbox{
\halign{\hfil\it#\unskip\ &\hfil$#$\hfil&\ \it#\hfil\cr
  Formula &\to& Primitive Formula\cr
          &|&   (Formula Connective Formula)\cr
          &|&   $\neg$ Sentence\cr
          &|&   Quantifier Variable Formula\cr
                                            \noalign{\medskip}
  Primitive Formula &\to& Predicate(Term,\dots,Term)\cr
                                                    \noalign{\medskip}
  Term    &\to& Function(Term,\dots,Term)\cr
          &|&   Constant\cr
          &|&   Variable\cr
}}

\bye

verwandte Informationen