在 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
。