用 LaTeX 制作源碼輸出與書籍一樣的效果

有用戶讀到 Pragmatic Bookshelf 的書籍時,可以看看這里,它的代碼具有以下格式:

>如何使用LaTeX?左側的行號,著色源代碼和灰色的源名稱.

>使用LaTeX的源代碼列表的工具是什么?

listingstest-exam.png

答案與實現:

用于格式化LaTeX中源代碼的軟件包是listings.查看它在手冊這里中可以做些什么。這是我們實現出來的結果:

listingstest.png

標題的文件名也是下載鏈接的目標.對不起,沒有圓角.那些可能是用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\[email protected]{%
    \ifnum\[email protected]=\[email protected]
        \global\advance\[email protected]\[email protected]\relax
        \[email protected]
        \[email protected]
    \else
        \[email protected]
            {\def\thelstnumber{Line \@arabic\[email protected]}\[email protected]}%
            \[email protected]
        \else
            {\def\thelstnumber{-}\[email protected]}%
        \fi
    \fi
    \global\advance\[email protected]\@ne}%
\def\[email protected]#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}

選自:https://codeday.me/bug/20190212/645996.html 

分享到:
未經允許不得轉載:用 LaTeX 制作源碼輸出與書籍一樣的效果
已有 條意見

    最新文章

    加載中...
      本站提供專業LaTeX排版、咨詢、定制服務,請點擊下圖咨詢詳情


      全國首個精品的LaTeX視頻教程,大牛帶著你入門,讓LaTeX學習不再糾結,請點擊下圖咨詢詳情

      熱門評論

        聯系我們

        交流QQ群:91940767
        本站QQ號:343083553
        郵箱聯系[email protected]
        淘寶店鋪https://shop240512713.taobao.com/ 提供排版,模板定制,培訓,圖片處理,視頻教程等LaTeX服務。

        關注我們微信公眾號

        如果您投稿或者希望加入我們團隊,請發送您的簡歷到[email protected]

        科技藝術的完美融合,專業精致的排版體驗

        聯系我們聯系我們
        飞艇人工免费计划下载