
是否有一個套件允許 LaTeX 中的原始程式碼作為文字?我寧願不使用該listings
包,因為程式碼佔用太多空間。複製/貼上很乏味,因為不會保留空格。
答案1
我可以為您提供一些有關開始嘗試的套件和工具的提示,我過去嘗試過幾種工具:
我喜歡TeX 中的
verbatim
和verbatim*
環境。這是一種立即排版一小部分程式碼的簡單且直接的方法。但是,它不能換行。fancyvrb
我前段時間用過這個包,http://ctan.org/pkg/fancyvrb。這是我注意到(完全)可以交叉引用原始程式碼行號的第一個套件,請參閱文件的第 14 頁和第 15 頁。listings
我經常使用這個包,http://ctan.org/pkg/listings。它是相當複雜的包,但它滿足了我的需求,特別是它格式化外部文件的選項(命令\lstinputlisting
)。它還可以換行並向這些行添加開始和結束符號。我記得我為 VBA 語言(Visual Basic for Applications)建立了自己的過濾器,嘗試起來很有趣。處理UTF-8編碼字元時有一個新的包,請參閱該listingsutf8
包,http://ctan.org/pkg/listingsutf8。我正在使用轉義序列來listings
解決這個特定問題。我在原始碼中排版了CJKV(中文、日文、韓文、越南文),例如さようなら(即再見!在日語中,它是再見!用英語講)。我曾經展示過我的 PF 明信片的準備工作。如果您正在處理
R
程式碼,現在有一些出色的工具可以使用,knitr
(http://yihui.name/knitr/)和相當舊的工具,名為Sweave
(http://www.stat.uni-muenchen.de/~leisch/Sweave/)。如果你正在處理
Sage
程式碼,請嘗試一下SageTeX
樣式,http://ctan.org/pkg/sagetex。它是由來自捷克共和國布爾諾的 Robert Mařík 編寫的,他是我曾經面對面見過的一個人/開發人員。:-)
我也使用該
Highlight
程式(http://www.andre-simon.de/)。可以選擇在一個原始程式碼中混合多種語言來突出顯示(LaTeX+Lua、HTML+CSS 等)。這就是檔案中嵌套語言的格式化和識別,當 LuaTeX 誕生時我就要求提供這個功能,我很自豪我做到了這一點。這兩個程式(這個程式和 Pygments)都提供 LaTeX 格式作為其他語言的匯出選項。可以將樣式從文件的其餘部分提取到單獨的文件中。值得一提的是一個非常強大的工具,名為
Pygments
(http://pygments.org/)。我直接從命令列使用它(或作為 Python 中的庫),而且在 TeX 世界中(至少)有兩個套件可以使轉換更容易TeXments
:(http://ctan.org/pkg/texments) 和Minted
(http://ctan.org/pkg/minted)。說到Python,還有一個名為 的包PythonTeX
,請參閱http://ctan.org/pkg/pythontex。試一試!最近了解了這個
pandoc
工具,http://johnmacfarlane.net/pandoc/。它更像是一個格式到格式的轉換器,但值得一試。除了適用於所有主要作業系統的獨立可執行檔之外,還有一個線上版本,http://johnmacfarlane.net/pandoc/try/。 LaTeX 格式是轉換器輸入端和輸出端的選項。看來這個工具是(來自)未來的!
祝您排版原始碼順利!
答案2
這是我用來給我的學生(學習 TeX)家庭作業的源代碼的習慣用法,這樣他們在寫數學時就可以研究和編輯它。
\documentclass{article}
\usepackage{verbatim}
\begin{document}
Homework exercises here \ldots
\newpage
Here is the \LaTeX{} source for this document. You can cut it from the
pdf and use it to start your answers. I used the \verb!\jobname! macro
for the source file name, so you can call your file by any name you like.
\verbatiminput{\jobname}
\end{document}
答案3
這用於verbatimbox
將其放置在尺寸減小的盒子中。使用 可以進一步縮小盒子的尺寸\scalebox
。雖然框不會跨越頁面邊界,但該軟體包還提供了一些巨集的「nobox」版本,這些巨集將跨越頁面邊界。然而,盒裝功能非常適合將逐字包含在圖形、表格中,並將其向右移動到線上或居中。
在此 MWE 中,為了清晰起見,我在所有逐字框周圍手動添加了\fbox
外殼,但它們不是逐字框的一部分。
\documentclass{article}
\usepackage{verbatimbox}
\usepackage{graphicx}
\parskip 1ex
\parindent 0in
\begin{document}
With verbatimbox, you can tell the macro to make the code ``footnotesize.''\par
\begin{verbbox}[\footnotesize]
Here is my input code text
Line two of my $%& code text
Done now.
\end{verbbox}
\fbox{\theverbbox}\par
If it is from a file, I can do that, too, this time \verb|\scriptsize|:\par
\verbfilebox[\scriptsize]{junk.tex}
\fbox{\theverbbox}\par
Alternately, you could shrink it further with a \verb|\scalebox|:\par
\fbox{\scalebox{.5}{\theverbbox}}\par
If you have need to break across pages, the package offers ``nobox'' versions
of some of its macros.
\end{document}
還有numberedblock
允許以以下方式格式化小程式碼區塊的套件(注意:影像取自套件文件):