gpt4 book ai didi

formatting - 如何使用 LaTeX 以实用程序员系列丛书的风格格式化源代码列表?

转载 作者:bug小助手 更新时间:2023-10-28 10:48:08 29 4
gpt4 key购买 nike

当我阅读实用书架书籍时,它具有以下格式:

http://img210.imageshack.us/img210/2965/screenshot20100717at121.png
  • 如何使用 LaTeX 做到这一点?左侧的行号、着色的源代码和灰色的源名称。
  • 使用 LaTeX 列出源代码的工具有哪些?

最佳答案

用于在 LaTeX 中格式化源代码的包是 listings .在其手册 here 中查看它可以做什么.

这是我设法接近的距离:

The listing, as typeset in LaTeX

标题中的文件名也是 Download 链接的目标。抱歉没有圆角。这些可能都可以用 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}

我喜欢 LaTeX。

关于formatting - 如何使用 LaTeX 以实用程序员系列丛书的风格格式化源代码列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3272479/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com