latex附录中放python代码_LaTeX 里「添加程序代码」的完美解决方案
坑邊閑話:如何在 Word 里添加代碼片段呢?這個可以通過 VBA 編程實現,加上某些可以導出 HTML 格式的源碼編輯器,基本無縫操作。但是 Word 插入代碼并自動更新,真的是讓人非常惱火,寫完這篇文章,我再回看 Word 中插入代碼,簡直是地獄般的操作,雖然小代碼量不難,也能借助某些操作能做得很好,但是終究不夠優雅。那么,
能做到嗎?如果能的話,如何在
里面添加源代碼并完美呈現呢?
1. 為什么需要在
里面添加源碼
有很多時候,我們需要讓自己的源代碼作為附錄寫在文章里,比如你的學位論文,再比如你的實驗報告。這些時候你單純寫結論上去不是很合適,別人沒有你的代碼是很難評價你的實驗真實性的。
所以源代碼必須要有。
1.1 最終PDF里面的源代碼應該是什么樣子的呢
我個人認為,應該至少滿足如下效果:代碼高亮,而且高亮的顏色可以自己設置;
代碼要使用等寬字體;
字間距也要跟編輯器里的完全一致,我添加幾個空格,你就呈現幾個空格,自動調節字間距的行為堅決不允許;
可以支持 include 導入源代碼。
關于 1~3 很好解釋,那就是我們要求 PDF 里的代碼片段看起來和公式編輯器里的一模一樣。第 4 條可能有人不理解,我在這里解釋一下。如果你的論文已經寫好,只差粘貼代碼進去就搞定,那么你絕對不需要第四條;但是,一旦你覺得有個地方不太對,那你需要在源碼里修改,然后再把修改過來的黏貼進來,這就很難受了!你需要找到對應的修改地方,而且手工很難保證自己
里的代碼和工程里的代碼完全一致!
2. 終極解決方案
這里我們采用時下比較火熱的 Python 進行演示。
有個叫做listings的宏包專門解決代碼展示問題!用了這個庫之后,你的代碼至少可以做到如圖 1 所示的樣子。
圖 1 最終的效果。字體嚴格等寬,代碼有自動高亮。
在這里要想到到上面的效果,需要這種命令:
\usepackage{listings}
\usepackage{ctex}
% 用來設置附錄中代碼的樣式
\lstset{
basicstyle = \sffamily, % 基本代碼風格 keywordstyle = \bfseries, % 關鍵字風格 commentstyle = \rmfamily\itshape, % 注釋的風格,斜體 stringstyle = \ttfamily, % 字符串風格 flexiblecolumns, % 別問為什么,加上這個 numbers = left, % 行號的位置在左邊 showspaces = false, % 是否顯示空格,顯示了有點亂,所以不現實了 numberstyle = \zihao{-5}\ttfamily, % 行號的樣式,小五號,tt等寬字體 showstringspaces = false,
captionpos = t, % 這段代碼的名字所呈現的位置,t指的是top上面 frame = lrtb, % 顯示邊框}
\lstdefinestyle{Python}{
language = Python, % 語言選Python basicstyle = \zihao{-5}\ttfamily,
numberstyle = \zihao{-5}\ttfamily,
keywordstyle = \color{blue},
keywordstyle = [2] \color{teal},
stringstyle = \color{magenta},
commentstyle = \color{red}\ttfamily,
breaklines = true, % 自動換行,建議不要寫太長的行 columns = fixed, % 如果不加這一句,字間距就不固定,很丑,必須加 basewidth = 0.5em,
}
只要把上面的這一段代碼,粘貼到你的
導言區域就可以了,當前,前提是你安裝了 listings 庫,如果沒有,請參見我的另一篇文章:如何安裝 TeXLive 2020。
現在我來解釋一下上面的代碼做了些什么。\usepackage{listings} 不用多說,就是簡單地引用庫;
\lstset 是對庫進行設置,主要是設置某些關鍵的地方,它含有很多字段;
\lstdefinestyle{Python} 是新定義一個叫做Python的樣式,到時候直接引用這個設置就可以;
\lstset 和 \lstdefinestyle{Python} 的東西差不多,不同之處就是優先級不同,后者更高,前者是在你沒有在 Python 中進行相關設定的時候,為你自動設置的一些東西。總而言之,Python 樣式里有的,一定會在 Python 代碼里忠實被執行;Python 樣式里沒有的,系統會檢查 \lstset 里有沒有相關設置,如果有就用,沒有的話就用系統的默認設置。
其他字符自己看注釋
那我如何使用這些設定呢?看代碼
\lstinputlisting[
style = Python,
caption = {\bf ff.py},
label = {ff.py}
]{../src/duke/ff.py}
{../src/duke/ff.py}是我源代碼在本系統中相對于TeX文件的位置;style選擇之前定義過的Python,label是一個可引用的標簽,以后可以使用ref{ff.py}關鍵字引用這段代碼,caption是我要在這個代碼上面顯示的表頭,告訴大家這個代碼有關什么東西,\bf 是加粗,沒什么其他意思。
再上一個圖,看一下長代碼行換行。
圖 2 長代碼換行。
結束語
到這里就結束了,如果你還想知道如何設置 C++、Java 等代碼的風格,可以關注我的專欄「修辭與編程」,我會在后期提供方案。如果這篇文章幫助到了你,請點贊支持我,感謝!
總結
以上是生活随笔為你收集整理的latex附录中放python代码_LaTeX 里「添加程序代码」的完美解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: T60 硬盘升级更换拆解视频教程!
- 下一篇: 金3银4面试前,把自己弄成卷王