LaTeX 入門 - 代碼塊 listings 宏包
listings宏包用於設置代碼塊
1. 引入與使用
引入宏包
\usepackage{listings}
使用
- 常規使用代碼塊
\begin{lstlisting}
codes
\end{lstlisting}
- 從文件中導入代碼塊
\lstinputlisting[language=Python]{main.py}
\lstinputlisting[language=Python, firstline=2, lastline=12]{main.py}
- 行內代碼
\lstinline|mycodes|
2. 設置命令
\lstset{
columns = fixed,
basicstyle = \linespread{0.8} \ttfamily, % 設置行距,字體
numbers = left, % 在左側顯示行號
numberstyle = \tiny \color{gray}, % 設定行號格式
keywordstyle = \bfseries \color[RGB]{40,40,255}, % 設定關鍵字顏色
numberstyle = \footnotesize \color{darkgray},
commentstyle = \color[RGB]{0,96,96}, % 設置代碼注釋的格式
stringstyle = \color[RGB]{128,0,0}, % 設置字符串格式
frame = single, % 不顯示背景邊框
backgroundcolor = \color[RGB]{245,245,244}, % 設定背景顏色
showstringspaces = false, % 不顯示字符串中的空格
language=R % 設置語言
}
行號相關設置
| 參數 | 說明 | 可選值 |
|---|---|---|
numbers |
行號 | left:左側顯示行號right:右側顯示行號none:不顯示行號 |
stepnumber |
每隔多少行顯示行號 | 整數 |
numbersep |
行號與代碼內容的間隔 | |
firstnumber |
行號起始數字 | 整數:last:起始行數為上一段lstlisting環境結尾的行數·` |
框架相關設置
| 參數 | 說明 | 可選值 |
|---|---|---|
frame |
代碼塊邊框設置 | topline:只有上側有線rightline:只有右側有線bottomline:只有底部有線leftline:只有左側有線trbl,tbl,tb:按照top、right、bottom、left順序,指定的任意方位設置邊框TRBL,TBl,Tb:大寫字母表示雙豎線shadowbox:帶有陰影none:不設置邊框 |
frameround |
邊框圓角 | fftt:邊框右上角、右下角、左下角、左上角(順時針方向)4個角的方角(f)或圓角(t) |
rulecolor |
設置框架線條顏色 | |
rulesepcolor |
設置框架陰影顏色 | 只有當 frame=shadowbox才會起作用 |
linewidth |
行寬 | 可與framexrightmargin產生相同效果 |
framexleftmarginframexrightmarginframextopmarginframexbottommargin |
邊框往左、右、上、下擴展的距離 僅改變框架,不會改變代碼、行號的位置 |
距離:可以為正數、或負數,分別表示往外、或內擴展 |
xleftmarginxrightmarginxtopmarginxbottommargin |
調整框架整體(包括框架、代碼、行號)往左、右、上、下擴展的距離。 | 距離:可以為正數、或負數,分別表示往外、或內擴展 |
aboveskipbelowskip |
框架整體與上、下方的距離 | 距離: |
樣式相關設置
| 參數 | 說明 | 可選值 |
|---|---|---|
numberstyle |
行號樣式 | |
keywordstyle |
關鍵字樣式 | |
stringstyle |
字符串樣式 | |
commentstyle |
注釋樣式 |
其他相關設置
| 參數 | 說明 | 可選值 |
|---|---|---|
tabsize |
縮進空格數 | 整數: |
columns |
調整字母之間的距離 | fixed:flexible:fullflexible: |
firstlinelastline |
只排版firstline到lastline的代碼 |
整數: |
language |
程序語言 | Python,R,C++,Jave等 |
3. 設置字體
- 將編譯器(complier)改成 XeLaTex
- 引入宏包
fontspec,並通過\setmonofont命令設置等寬字體 - 在
lstset或lstlisting中設置basicstyle = \ttfamily
\usepackage{fontspec}
\setmonofont{Source Code Pro}
\begin{lstlisting}[basicstyle = \ttfamily]
codes
\being{lstlisting}
參考資料
[1] LaTeX listings 宏包使用說明(一), 知乎, 地址
