LaTeX利用lstlistings排版IDL程序
載入宏包
由於我是mac系統所以在可選參數加了fontset
\documentclass[UTF8,fontset = macnew] {ctexart} %mac字體設置
\usepackage{listings}
\usepackage{xcolor}
\usepackage{framed}
listings的宏包支持多種語言,具體可以見下圖,而xcolor主要是用來設置一些字體顏色或者邊框等顏色,framed的話主要是爲了避免程序過長超過一頁.
這裏面是lstlistings支持的語言.需要的時候只需要在可選參數裏設置langauage = 即可
由於很多時候代碼太長,會導致超出一頁,邊框無法封閉,在lstlistings的doc裏面說的需要使用framed宏包進行封閉.
xcolor的話只需要定義自己需要的顏色.一些基本的顏色如圖
\lstset{numbers=left,
numberstyle=\tiny,
stepnumber=1}
這是對lst環境進行全局的設置,如果設置則會對每個環境進行設置,但是如果在後續的可選參數進行修改的話仍會被覆蓋(沒試過但是應該跟tikz差不多)
面的話主要是設置旁邊的代碼行數顯示進行設置number顯示在左邊,stepnumber就是步距…
\begin{lstlisting}[language=IDL,
firstnumber=1, %行標開始字數
frame = single, %邊框,有single等
xrightmargin=2cm,
framexrightmargin = 3cm,
breaklines = true, %如果過長自動斷行
keywordstyle=\color{red}, %關鍵字顏色
commentstyle=\color{brown}, %註釋顏色
ndkeywordstyle=\corlor{yellow},
stringstyle = \color{blue}, %字符串顏色
basicstyle=\color{teal}, %基本字體的顏色
rulesepcolor=\color{blue},
numbersep=3.2pt, %行數顯示距離邊框的距離
]
;coding = GBK
;to draw classified graphics and colorbar
pro READCLASS
file = 'C:\Users\黃\Desktop\classimage.dat'
data = make_array(5963,5988,type = 1)
ioenr,lun,file,/get_lun
readu,lun,data
lun_lun,lun
data = congird(data,596,599)
window,1,xsize = 800,ysize=700
device, decomposed = 0
lookup = [255,255,255,90,178,115,233,255,
190,240,240,240,151,219,242,214,133,137]
lookup = reform(lookup, 3, 6)
tvlct,lookup[0,*],lookup[1,*],lookup[2,*]
erase,0
tv,data,50,50,order = 1
colbar = rebin(indgen(1, 6),40,240)
tv,colbar,650,50
loadct,0
shadowdata = bytarr(3,240)+180
tv,shadowdata,690,50
bottomshad = bytarr(40,3)+180
tv,bottomshad,653,47
classnames = ['background','forest','agriculture','city','water','other']
xpos = 705+intarr(6)
ypos = 60+indgen(6)*40
xyouts,xpos,ypos,classnames,color=0,/device
end
\end{lstlisting}
這裏我都寫了一些註釋,需要注意的是這裏的鎖進是非常嚴格的.你可以先全部縮進之後然後再空格設置(我還沒想到好方法).
這個是沒有超出一頁邊框的程序效果如圖.
具體的還是需要多讀讀lstlistings的documentation的.有許多的參數