我需要包含特殊符号的 LateX 代码中的下表

我需要包含特殊符号的 LateX 代码中的下表

我希望你能帮助我。我正在用 LaTeX 写作业(使用 TexStudio 作为环境)。

在此处输入图片描述

该表包含三列:语法、严格性和语义。对于我的家庭作业,我需要描述这些表,其中最重要的是语义列。开发人员使用了特殊的代数符号,我在数学包中找不到这些符号。以第一行为例。“x”下面的变量“i”表示“i”将替换“x”。但分数符号实际上不是分数,不是吗?我如何在 LaTeX 中使用它?如果你继续往下看,直到“while”条件,你会看到一条长虚线,我该如何使用它?

这将是我用 LaTeX 制作的第一张表格,因为我从未使用过 LaTeX 撰写论文/项目。我还需要了解如何使用 LaTeX 生成表格。

请帮忙。

答案1

这实际上不是初学者的任务。无论如何,我认为这是学习 LaTeX 的好机会。

  1. 在确定最常用的构造并按种类划分它们之后,为各个子任务定义命令;
  2. 查看表格布局:我们在“原始语言语法”部分识别出三列(r,c 和 l);
  3. 以一致的方式添加项目。

我所认识的结构是“元变量”、“键”(细分为单词、运算符、二元运算、关系和标点符号)。在最后一列中,我们可以看到尖括号中的结构;分数类对象已用带array实线或点分隔符的 来处理。

最后,对于少数需要拆线的情况,我定义了一个特别指定 \dbl命令。在一些情况下,需要人工干预。

\documentclass{article}
\usepackage{amsmath,mathtools,amssymb,array,arydshln}

\newcommand{\meta}[1]{\mathit{#1}}
\newcommand{\kword}[1]{\mathtt{#1}}
\newcommand{\kop}[1]{\mathop{{}\texttt{#1}}}
\newcommand{\kbin}[1]{\mathbin{\texttt{#1}}}
\newcommand{\krel}[1]{\mathrel{\texttt{#1}}}
\newcommand{\kpun}[1]{\mathpunct{\texttt{#1}}}
\newcommand{\str}[1]{[\textit{#1}]}
\newcommand{\sem}[2]{\langle #1\rangle_{\mathsf{#2}}}
\newcommand{\sop}[2]{#1_{\mathit{#2}}}
\newcommand{\Ceq}{\Coloneqq}
\newcommand{\dbl}[1]{\begin{array}[t]{@{}l@{}}#1\end{array}}
\newcommand{\subexp}[2]{\begin{array}[t]{@{}c@{}}#1\\\hline#2\end{array}}
\newcommand{\sv}{\subexp{\mbox{\enspace}}{\mbox{\enspace}}}
\newcommand{\dsubexp}[2]{%
  \begin{array}[t]{@{}c@{}}#1\\\cdashline{1-1}[.4pt/1pt]#2\end{array}%
}

\begin{document}

\begin{tabular}{
  |
  >{$}r<{$}
  @{}
  >{${}}c<{{}$}
  @{}
  >{$}l<{$}
  |
  l
  |
  >{$}l<{$}
  |
}
\hline
\multicolumn{3}{|c|}{Original language syntax} &
\multicolumn{1}{c|}{Strictness} &
\multicolumn{1}{c|}{Semantics} \\
\hline
\meta{AExp}
& \Ceq & \meta{Int}\mid \meta{Id} &
&
\sem{\subexp{x}{i}\quad \sv}{k} \quad \sem{\sv\quad x\mapsto i\quad \sv}{state} \\
& \mid & \meta{AExp}\kbin{+}\meta{AExp} &
\str{strict} &
i_1\kbin{+}i_2 \to i_1 \sop{+}{Int} i_2 \\
& \mid & \meta{AExp}\kbin{/}\meta{AExp} &
\str{strict} &
i_1\kbin{/}i_2 \to i_1 \sop{/\!}{Int} i_2 \qquad \text{when $i_2\ne0$} \\
\meta{BExp}
& \Ceq & \meta{AExp}\krel{<=}\meta{AExp} &
\str{seqstrict} &
i_1\krel{<=}i_2 \to i_1 \sop{\le}{Int} i_2 \\
& \mid & \kop{not}\meta{BExp} &
\str{strict} &
\kop{not} t \to \sop{\lnot}{Bool} t \\
& \mid & \meta{BExp}\krel{and}\meta{BExp} &
\str{strict\textup{(1)}} &
\dbl{
  \meta{true}\krel{and} b \to b \\
  \meta{false}\krel{and} b \to \kword{false}
} \\
\meta{Stmt}
& \Ceq & \kword{skip}\kpun{;} &
&
\kword{skip}\kpun{;} \to {\cdot} \\
& \mid & \meta{Id}\krel{=}\meta{AExp}\kpun{;} &
\str{strict\textup{(2)}} &
\sem{\subexp{x\krel{=}i\kpun{;}}{\cdot}\quad \sv}{k}
  \quad \sem{\sv\quad x\mapsto \subexp{{\!\underline{\quad }\!}}{\,i\,}\quad \sv}{state} \\
& \mid & \meta{Stmt}\quad \meta{Stmt} &
&
s_1\quad s_2 \rightharpoonup s_1 \curvearrowright s_2 \\
& \mid & \krel{if}\meta{BExp}\;\dbl{\krel{then}\meta{Stmt}\\\krel{else}\meta{Stmt}} &
\str{strict\textup{(1)}} &
  \dbl{
    \krel{if}\meta{true}\krel{then} s \krel{else} \_ \to s \\
    \krel{if}\meta{false}\krel{then} \_ \krel{else} s \to s
  } \\
& \mid & \krel{while}\meta{BExp}\krel{then}\meta{Stmt} &
&
\sem{
  \dsubexp
    {\krel{while} b \krel{do} s}
    {\krel{if} b \krel{then} (s\krel{while} b \krel{do} s)
     \krel{else}\kword{skip}\kpun{;}}
  \quad \sv}{k} \\
\meta{Pgm}
& \Ceq & \kop{var}\mathsf{List}[\meta{Id}]\kpun{;}\quad \meta{Stmt} &
&
\sem{\dsubexp{\kop{var}xl\kpun{;}\quad s}{s}}{k}
  \quad \sem{\dsubexp{\cdot}{xl\mapsto 0}}{state} \\
\hline
\end{tabular}

\end{document}

在此处输入图片描述

相关内容