如何在 LaTeX 中包含 lambda 演算代码?

如何在 LaTeX 中包含 lambda 演算代码?

在 LaTeX 中包含 lambda 演算代码的最佳方法是什么(例如 Courier 新字体),尤其是允许在整个环境中使用数学符号以及 $\lambda$ 的方法。

例如,我正在尝试排版:

fix fib : int $\rightarrow$ int . 

$\lambda$ n : int .

if (n < 2) then n

else (fib (n-1)) (fib (n-2))

答案1

那这个呢?它使用listings包用于“解析”输入并使用适当的样式进行打印。查看手册以查看所有选项。该包允许非常高级的自定义。

\documentclass{article}

\usepackage{listings}

\lstdefinelanguage{Lambda}{%
  morekeywords={%
    if,then,else,fix % keywords go here
  },%
  morekeywords={[2]int},   % types go here
  otherkeywords={:}, % operators go here
  literate={% replace strings with symbols
    {->}{{$\to$}}{2}
    {lambda}{{$\lambda$}}{1}
  },
  basicstyle={\sffamily},
  keywordstyle={\bfseries},
  keywordstyle={[2]\itshape}, % style for types
  keepspaces,
  mathescape % optional
}[keywords,comments,strings]%

\begin{document}

\begin{lstlisting}[language=Lambda]
fix fib : int -> int.
  lambda n : int.
    if (n < 2) then n$^2$
    else (fib (n-1)) (fib (n-2))
\end{lstlisting}

\end{document}

输出:

输出

如果您更喜欢打字机字体,只需更改\sffamily为,\ttfamily但请注意,并非所有打字机字体都支持粗体(Computer Modern 不支持)。

使用该选项,mathescape您可以将数学运算放入其中$,并在 λcalculus 代码中呈现它。我在这里选择的样式只是为了演示。如果您需要粗体 lambda,您可以包含amsmath并使用,\boldsymbol\lambda而不仅仅是\lambda

相关内容