1. 程式人生 > >LaTex:插入程式碼的listings包和lstlisting環境

LaTex:插入程式碼的listings包和lstlisting環境

典型的應用示例程式碼:

% LaTex中插入高亮顯示的程式碼需以下設定
 % 注意,程式碼中不能含有中文,否則為無法編譯。
\usepackage[utf8]{inputenc}
%\usepackage[T1]{fontenc}
%\usepackage{textcomp}
\usepackage{listings}
% 在LaTex中新增程式碼
\usepackage{color}
 
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
 
\lstdefinestyle{mystyle}{
    backgroundcolor=\color{backcolour},   
    commentstyle=\color{codegreen},
    keywordstyle=\color{magenta},
    numberstyle=\tiny\color{codegray},
    stringstyle=\color{codepurple},
    basicstyle=\footnotesize,
    breakatwhitespace=false,         
    breaklines=true,                 
    captionpos=b,                    
    keepspaces=true,                 
    numbers=left,                    
    numbersep=5pt,                  
    showspaces=false,                
    showstringspaces=false,
    showtabs=false,                  
    tabsize=2
}
\end{lstlisting}

...
\begin{lstlisting}[language=C++]
#include <iostream>
using namespace std;
int main(){
    cout << "Hello world!" << endl;
}
\end{lstlisting}
</iostream>

效果如下:


如果lstlisting環境中含有中文等其它語言字元,pdfLaTex或LaTex編譯時會有如下報錯:

Package inputenc error unicode char u8:字 not set up for use with LaTex.

確實需要在lstlisting環境中插入中文的話,可設定“逃逸”字串,臨時從lstlisting環境跳回到LaTex環境,從而顯示相應的中文:

\lstset{style=mystyle, escapeinside=``}
\begin{lstlistings}
`我就要用中文`
\end{lstlistings}

或者,也可以用XeLaTex來編譯,同樣可以正常顯示。

但是,有一種情況:如果你的lstlisting環境是跨頁顯示的,而恰好你又有含中文字元的頁首或頁尾。這時,LaTex編譯同樣會報錯,錯誤好像就出在頁首頁尾也被納入了lstlisting環境。這時你可以敲入s並回車以忽略這一系列錯誤強行編譯,至少目前看來得到的PDF效果一樣;但如果你跟主頁菌一樣是個完美主義者,偏想將這個錯誤完全解決掉,那請與我一起期待有經驗者能在此傾囊相授。因為主頁菌也還未找到有效辦法。


相關推薦

LaTex插入程式碼listingslstlisting環境

典型的應用示例程式碼: % LaTex中插入高亮顯示的程式碼需以下設定 % 注意,程式碼中不能含有中文,否則為無法編譯。 \usepackage[utf8]{inputenc} %\usepackage[T1]{fontenc} %\usepackage{textcom

[轉] [Java] 知乎下巴第5集使用HttpClient工具寬度爬蟲

fan param 出隊 page connect ise dex ide xtra 原文地址:http://blog.csdn.net/pleasecallmewhy/article/details/18010015 下載地址:https://code.csdn.net

python3程式碼演示SocketServer 實現通訊.

這個是 socket程式設計的流程,socket 的本質是個程式設計介面,它把應用層和傳輸層進行了連線。 連線過程可以分為三個步驟:伺服器監聽,客戶端請求,連線確認。 伺服器監聽 是指 伺服器端socket一直是開放的狀態,隨時等待客戶端發來請求 伺服器端socket一

GO語言學習程式碼拆分(級私有公共)

1.把一個檔案拆分為多個(同級目錄)   為了便於理解,在此處用例子說明:   在工作區下新建一個資料夾q0,在此資料夾中,   使用命令vim demo0.go,寫入以下程式碼     package main     import "flag"     var name string    

javascript學習prototype原型使用基礎

c# 作用 cnblogs public return rem 聲明 pre 都是 閉包 function Person(name) { this.Username = name; var Userage = 18;

張書樂在發爾康葛優躺表情時,你可能在侵權,他卻在賺錢

表情包使用次數TOP10的表情符號裏,“哭笑不得”的表情使用次數最多,總計高達7518440701次;女性青年每人平均每天使用表情2.84次,而男性青年每人平均每天使用表情次數為0.74次,女性是男性的3.83倍。與男性相比,女性的表情使用普遍偏感性。文/張書樂(人民網、人民郵電報專欄作者)新著有《微博運營完

51nod 1065 最小正字段 解決辦法set存前綴,二分插入二分查找

idt 查找 容器 esp images 叠代 mes pre iterator 題目: 這題要求大於0的最小字段和,常規O(n)求最大字段和的方法肯定是沒法解的。 我的解法是:用sum[i]存前i項的和,也就是前綴和。       這題就變成了求sum[j]-sum

問題0-1背、完全背多重背

不同 們的 efi .com col 固定 sin 二維 def 背包問題泛指以下這一種問題: 給定一組有固定價值和固定重量的物品,以及一個已知最大承重量的背包,求在不超過背包最大承重量的前提下,能放進背包裏面的物品的最大總價值。 這一類問題是典型的使用動態規劃解決的問題,

手機抓的兩種方法wireshark抓fiddler抓

選項 wire res response 網卡 wifi熱點 特殊 兩種 監聽 1、電腦做wifi熱點,手機連上後電腦上使用wireshark抓包 該方法手機無須root,並且適用於各種有wifi功能的手機(IOS、android等)、平板等。只要電腦的無線網卡具有無線承載

算法學習筆記(一)插入排序線性查找

插入排序 算法學習 AS 獲取 ear array import 右移 創建 (一)插入排序 看下面這張圖片:把打牌時手上的牌抽象為一個列表A,j表示當前最新抓的牌的索引(先放到手上最右邊) 索引 j =0 時 A[j] = 3 j >= 1時, 1、我們拿到

Apache安全優化設置防盜鏈,隱藏版本信息 (內含Apache源碼工具)

http 末尾 註意 包含 設定 情況 服務器 發現 for 防盜鏈:一些不良網站有時為了不增加成本又想擴充自己站點的內容,經常盜用其他網站的鏈接,一方面損害了原網站的合法利益,另一方面又加重了服務器的負擔隱藏版本信息:一般情況下,軟件的漏洞信息和特定版本是相關的如果×××

Latex插入程式碼並高亮顯示

Latex可以方便地支援多種程式碼高亮,辦法如下: 用到的包 \usepackage{listings} 預設的高亮是關鍵詞加粗 也可以自定義高亮格式,例如新增以下設定(為了能夠使用\color,需引入包\usepackage{xcolor}) \lstset{ %bac

LaTeX lstlisting環境中執行LaTeX程式碼

問題提出 有一段Visual Basic 程式碼,需要在LaTeX文件中生成: Private Sub Form_Click() Print For i = 1 To 5 Print Tab(i); String(6 - i, "▼"); Spc(6); Stri

程式碼 實現使用者輸入使用者名稱密碼,當用戶名為seven且密碼為123時,顯示登入成功,否則登入失敗。

# 寫程式碼# 實現使用者輸入使用者名稱和密碼,當用戶名為seven且密碼為123時,顯示登入成功,否則登入失敗。username = input("Please enter your username: ")password = input("Please enter your password: ")if

學習了一個月python,進行實戰一下爬取文章標題正文並儲存的程式碼

爬取東方財富網文章標題和正文並儲存的程式碼。自己知道寫的很爛,不過主要是為了自己備忘,也為了以後回頭看看自己的爛作品,哈哈哈。 #!/usr/bin/env python # -*- coding:utf-8 -*- import requests from bs4 import B

#Java乾貨分享一篇文章讓你深入瞭解Java中的介面

很多新手程式設計師對於Java中兩個具創新性的特徵————包與介面不是非常清楚,所以我特意發了這篇文章來闡述什麼是包,什麼是介面。 包(package)是多個類的容器,它們用於保持類的名稱空間相互隔離。 如果有想學習java的程式設計師,可來我們的java學習扣qun:79979,2590免

GO語言學習安裝下載linux環境變數配置

1.安裝包下載   地址:https://golang.google.cn/dl/   截圖:    2.解壓安裝包   解壓後的檔案如下圖:     把解壓後的檔案放在 、usr/local/下,如下圖      3.配置環境變數   使用root許可權登入

程式碼生成器——java程式碼自動生成MAVEN類檔案

package cn.ps; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import com.baomidou.mybatisplus.core.exceptions.Mybat

Javawindows shell 下packageimport的問題類放在同一下為什麼顯示cant find symbol?

使用cmd或者powershell執行java注意事項 不使用IDE時,我們編寫多個java檔案後想要編譯並測試執行的話,需要注意一些問題 對於執行入口的App.java或者測試XXTest.java而言,需要cmd在根package目錄的上一級目錄下執行 比如你要寫一個軟體,myapp

《程式設計珠璣》程式碼之路10little定律,一個生活息息相關的結論

今天,同學聚會,喝了十瓶啤酒,死皮賴臉的要了一個哥們的電腦,保證自己不會吐上邊哈哈。 哈哈,好啦,進入正題: Little定律:系統中物體的平均數量等於物體離開系統的平均速率和物體在系統中平均停留時間的乘積。 和大部分定律一樣,乍眼看去,一點用沒有。 現在給出下面一個場景:一個可以容