答案与实现:
用于格式化LaTeX中源代码的软件包是listings.查看它在手册这里中可以做些什么。这是我们实现出来的结果:
标题的文件名也是下载链接的目标.对不起,没有圆角.那些可能是用TikZ完成的.
这是序言:
\usepackage{listings} \usepackage[T1]{fontenc} \usepackage[scaled]{beramono} \usepackage{tgadventor} \usepackage[usenames,dvipsnames]{color} \usepackage[colorlinks=true]{hyperref} \definecolor{lineno}{rgb}{0.5,0.5,0.5} \definecolor{code}{rgb}{0,0.1,0.6} \definecolor{keyword}{rgb}{0.5,0.1,0.1} \definecolor{titlebox}{rgb}{0.85,0.85,0.85} \definecolor{download}{rgb}{0.8,0.1,0.5} \definecolor{title}{rgb}{0.4,0.4,0.4} \lstset{ language=Lisp, basicstyle=\ttfamily\small\color{code}, showspaces=false, showstringspaces=false, numbers=left, firstnumber=1, stepnumber=5, numberfirstline=true, numberstyle=\color{lineno}\sffamily\scriptsize, keywordstyle=\color{keyword}\bfseries, stringstyle=\itshape, morekeywords={dosync,if}, deletekeywords={alter} } \makeatletter \gdef\lst@SkipOrPrintLabel{% \ifnum\lst@skipnumbers=\z@ \global\advance\lst@skipnumbers-\lst@stepnumber\relax \lst@PlaceNumber \lst@numberfirstlinefalse \else \lst@ifnumberfirstline {\def\thelstnumber{Line \@arabic\c@lstnumber}\lst@PlaceNumber}% \lst@numberfirstlinefalse \else {\def\thelstnumber{-}\lst@PlaceNumber}% \fi \fi \global\advance\lst@skipnumbers\@ne}% \def\lst@maketitle#1{ \vskip\abovecaptionskip \colorbox{titlebox}{ \scriptsize \color{download}\ttfamily\href{http://example.com/#1}{Download} \color{title}\sffamily\bfseries#1} \vskip\belowcaptionskip} \makeatother
正文中可以这样使用:
\begin{lstlisting}[title=examples/introduction.clj] (defn hello "Writes hello message to *out*. Calls you by username. Knows if you have been here before." [username] (dosync (let [past-visitor (@visitors username)] (if past-visitor (str "Welcome back, " username) (do (alter visitors conj username) (str "Hello, " username)))))) \end{lstlisting}
发表评论 取消回复