我在用着乳胶排版一些 Racket 源代码。我希望在左边缘显示行号,这样我就可以在我的文档中引用它们。但是,我还没有发现打开行号的选项。
我想我应该切换到列表包并完成它,但在这之前,我想与这里的其他 LaTeX 专家核实一下。
答案1
来自清单文档:
SLaTeX 是一个漂亮的打印 Scheme 程序(可自动调用 LaTeX),专为 Scheme 和其他 Lisp 方言而设计。它支持独立文件、文本和显示列表,如果您在注释中使用 LATEX 代码,甚至可以嵌套命令/环境。关键字、常量、变量和符号都是可定义的,并且可以使用不同的样式。没有行号。
最好的办法是使用listings
或pygments
。下面是 MWE ,可listings
帮助您入门。
\documentclass{article}
\usepackage{xcolor,listings}
\begin{document}
\lstloadlanguages{Lisp}
\newcommand\emphasis[2][red]{\lstset{emph={#2,},
emphstyle={\ttfamily\textcolor{#1}}}}%
\emphasis{x,a}
\lstset{%
language={[Auto]Lisp},
framesep=0pt,
numbers=left,numberstyle=\normalsize,stepnumber=1,numbersep=5pt,
breaklines=true,
basicstyle=\normalsize\ttfamily,
showstringspaces=false,
keywordstyle=\ttfamily\color{blue},
identifierstyle=\ttfamily,
stringstyle=\color{maroon},
commentstyle=\color{black},
rulecolor=\color{gray!10},
xleftmargin=5pt,
xrightmargin=5pt,
aboveskip=\bigskipamount,
belowskip=\bigskipamount,
backgroundcolor=\color{gray!5}
}
\begin{lstlisting}
(define-syntax setq
(syntax-rules ()
[(setq x a)
(begin (set! x a)
x)]))
\end{lstlisting}
\end{document}
我特别喜欢列表(特别是如果你编写教程),因为你可以突出显示特定的关键词(参见\emphasis
代码中的宏)。
如果你确实坚持使用 SLaTeX,你可以尝试以下代码,它将编号完整页面。
\documentclass[10pt]{article}
\usepackage{fancyhdr,lipsum}
\makeatletter
\newsavebox{\@linebox}
\savebox{\@linebox}[3em][t]{\parbox[t]{3em}{%
\@tempcnta\@ne\relax
\loop{\underline{\scriptsize\the\@tempcnta}}\\
\advance\@tempcnta by \@ne\ifnum\@tempcnta<48\repeat}}
\pagestyle{fancy}
\fancyhead{}
\fancyfoot{}
\fancyhead[CO]{\scriptsize How to Count Lines}
\fancyhead[RO,LE]{\footnotesize\thepage}
%% insert this block within a conditional
\fancyhead[LE]{\footnotesize\thepage\begin{picture}(0,0)%
\put(-26,-25){\usebox{\@linebox}}%
\end{picture}}
\fancyhead[LO]{%
\begin{picture}(0,0)%
\put(-18,-25){\usebox{\@linebox}}%
\end{picture}}
\fancyfoot[C]{\scriptsize Draft copy}
%% end conditional
\makeatother
\begin{document}
\section*{Lorem Ipsum}
\lipsum[1]
$$f_{nk}=\sum\,{\frac{n!}{
1!^{k_1}\,k_1!\,2!^{k_2}\,k_2!\,3!^{k_3}\,k_3!\,\ldots}}\;
f_1^{k_1}f_2^{k_2}f_3^{k_3}\ldots\;,$$
summed over all $k_1,k_2,k_3,\ldots\geq 0$
\lipsum[3]
$$f_{nk}=\sum\,{\frac{n!}{
1!^{k_1}\,k_1!\,2!^{k_2}\,k_2!\,3!^{k_3}\,k_3!\,\ldots}}\;
f_1^{k_1}f_2^{k_2}f_3^{k_3}\ldots\;,$$
summed over all $k_1,k_2,k_3,\ldots\geq 0$
\lipsum[5-7]
\end{document}