簡體   English   中英

使用縮進在此 LaTeX 文檔中插入代碼

[英]Inserting code in this LaTeX document with indentation

如何在 LaTeX 文檔中插入代碼? 有沒有類似的東西:

\begin{code}## Heading ##
...
\end{code}

我唯一真正需要的是縮進和固定寬度的字體。 語法高亮可能很好,盡管它絕對不是必需的。

使用listings包。

LaTeX 標頭的簡單配置(在\\begin{document} ):

\usepackage{listings}
\usepackage{color}

\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\lstset{frame=tb,
  language=Java,
  aboveskip=3mm,
  belowskip=3mm,
  showstringspaces=false,
  columns=flexible,
  basicstyle={\small\ttfamily},
  numbers=none,
  numberstyle=\tiny\color{gray},
  keywordstyle=\color{blue},
  commentstyle=\color{dkgreen},
  stringstyle=\color{mauve},
  breaklines=true,
  breakatwhitespace=true,
  tabsize=3
}

您可以使用\\lstset{language=Java}更改文檔中間的默認語言。

文檔中的用法示例:

\begin{lstlisting}
// Hello.java
import javax.swing.JApplet;
import java.awt.Graphics;

public class Hello extends JApplet {
    public void paintComponent(Graphics g) {
        g.drawString("Hello, world!", 65, 95);
    }    
}
\end{lstlisting}

結果如下:

示例圖像

您還可以使用逐字環境

\begin{verbatim}
your
code
example
\end{verbatim}

以下是添加內聯代碼的方法:

您可以使用{\\tt code }\\texttt{ code }添加內聯代碼。 如果要格式化內聯代碼,那么最好制作自己的命令

\newcommand{\code}[1]{\texttt{#1}}

另外,請注意代碼塊可以從其他文件加載

\lstinputlisting[breaklines]{source.c}

breaklines不是必需的,但我覺得它很有用。 請注意,您必須為此指定\\usepackage{ listings }

更新: listings 包還包括\\lstinline命令,它具有與\\lstlisting\\lstinputlisting命令相同的語法突出顯示功能(有關配置詳細信息,請參閱 Cloudanger 的回答)。 正如其他一些答案中提到的,還有 minted 包,它提供了\\mintinline命令。 \\lstinline一樣, \\mintinline提供與常規鑄造代碼塊相同的語法突出顯示:

\documentclass{article}

\usepackage{minted}

\begin{document}
  This is a sentence with \mintinline{python}{def inlineCode(a="ipsum)}
\end{document}

專門的包,例如minted ,它依賴於 Pygments 進行格式化,與listings包相比具有各種優勢。 引用minted手冊,

與傳統的包相比,Pygments 提供了更優越的語法高亮。 例如,列表基本上只突出顯示字符串、評論和關鍵字。 另一方面,Pygments 可以完全自定義以突出顯示源語言可能支持的任何標記類型。 這可能包括字符串、數字、不同類型的標識符和外來結構(如 HTML 標簽)中的特殊格式序列。

Minted ,無論是來自GitHub還是CTAN,綜合 TeX 檔案網絡,在Overleaf 、TeX Live 和 MiKTeX 中工作。

它需要安裝 Python 包Pygments 這在上述任一來源的文檔中都有解釋。 盡管 Pygments 將自己標榜為 Python 語法高亮工具,但 Minted 保證了數百種其他語言的覆蓋范圍。

例子:

\documentclass{article}
\usepackage{minted}
\begin{document}

\begin{minted}[mathescape, linenos]{python}

# Note: $\pi=\lim_{n\to\infty}\frac{P_n}{d}$
title = "Hello World"

sum = 0
for i in range(10):
 sum += i

\end{minted}

\end{document}

輸出:

在此處輸入圖片說明

使用Minted

這是一個使用強大的Pygments庫在 LaTeX 中促進表達性語法突出顯示的包。 該軟件包還提供了使用fancyvrb自定義突出顯示的源代碼輸出的選項

它比任何其他軟件包都更加先進和可定制!

由於這里還沒有提到它,可能值得再添加一個選項,包spverbatim (無語法高亮):

\documentclass{article}
\usepackage{spverbatim}

\begin{document}

\begin{spverbatim}
  Your code here
\end{spverbatim}

\end{document}

此外,如果不需要語法高亮,請打包alltt

\documentclass{article}
\usepackage{alltt}

\begin{document}

\begin{alltt}
  Your code here
\end{alltt}

\end{document}

使用Pygments

如果您的代碼在 Python 中,我不必安裝 Python 包,那么一種非常簡單的方法是:

\documentclass[11pt]{article}  
\usepackage{pythonhighlight}

\begin{document}

The following is some Python code

\begin{python}
# A comment
x = [5, 7, 10]
y = 0

for num in x:
    y += num
    
print(y)
\end{python}

\end{document}

看起來像: 在此處輸入圖片說明

不幸的是,這僅適用於 Python。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM