
我用它minted
來突出顯示 Python 中的程式碼。在某些情況下,我想將程式碼與用戶將看到的輸出混合在一起。這給了我紅色語法錯誤框,例如像這樣:
有時它沒有給我錯誤,但我想關閉突出顯示(第二行):
所以我想知道是否可以關閉幾行的突出顯示,但同時保留行編號和背景等選項。
微量元素:
\documentclass{article}
\usepackage{minted}
\definecolor{bg}{rgb}{0.95,0.95,0.95}
\newminted{python3}{bgcolor=bg, linenos=true, tabsize=4}
\begin{document}
I want lines 2 and 4 not to be highlighted but still keep the background and line numbering.
\begin{python3code}
>>> type(3.14)
<class 'float'>
>>> print(name)
NameError: name 'name' is not defined
\end{python3code}
\end{document}
編輯:澄清一下:我想要突出顯示一些以 開頭的行>>>
,並且我想要突出顯示一些不以 開頭的行>>>
。還有一些我不想突出顯示的行。所以預設應該是它突出顯示該行,但我可以為某些行添加例外。
答案1
簡而言之,就是:寫一個特殊的詞法分析器。但你很幸運,它已經存在,只需用作pycon
語言即可。
\newminted{pycon}{bgcolor=bg, linenos=true, tabsize=4}
答案2
#
解決問題的一個非常簡單的解決方案是透過在不以 a 開頭的每行之前添加 來預處理程式碼>>>
,這至少看起來不錯,即使它不是 python 控制台輸出的完美副本。這可以透過許多編輯器透過使用 regex 選項或使用sed
Unix 上的其他工具(例如)來完成。
不過,前導>>>
可能還是會讓 Python 詞法分析器失望。在這種情況下,您可以刪除這些內容(您會失去原始內容的更多保真度,但它是可讀的,因為輸出看起來像註釋)。
答案3
快速瀏覽一下minted
的文檔,該包似乎不支援該功能。無論哪種方式指定特定的行號似乎都是一種非常醜陋的方式。
但它用作pygmentize
後端和您想要的線路不是忽略適合一個非常特定的模式,它們都以 開頭>>>
,因此必須易於以程式方式檢測和忽略它們。
看著關於編寫自己的詞法分析器的 pygments 文檔,似乎您可以指定對於某些模式(正規表示式)您想要讓另一個詞法分析器處理字串。然後,您可以處理不以 開頭的行>>>
,並將那些以 開頭的行(不帶>>>
)傳遞給常規 Python 詞法分析器。