使用缩进在此LaTeX文档中插入代码

six*_*ude 395 latex

如何将代码插入LaTeX文档?是否有类似的东西:

\begin{code}## Heading ##
...
\end{code}
Run Code Online (Sandbox Code Playgroud)

我真正需要的唯一东西是缩进和固定宽度字体.语法高亮可能很好,虽然它绝对不是必需的.

Clo*_*ger 588

使用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
}
Run Code Online (Sandbox Code Playgroud)

您可以在文档中间更改默认语言\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}
Run Code Online (Sandbox Code Playgroud)

这是结果:

示例图片

  • 我有一个跟你有关你代码的问题.看看你是否有机会:http://stackoverflow.com/questions/3408996/insert-code-into-a-latex-doc-without-leading-tabs (3认同)
  • 有没有办法减少代码行之间的空间? (2认同)

mid*_*iby 150

您也可以使用逐字环境

\begin{verbatim}
your
code
example
\end{verbatim}
Run Code Online (Sandbox Code Playgroud)

  • 在逐字环境中使用制表符存在问题.如果选项卡转换为"空格",则问题将消失. (53认同)

ala*_*lan 110

以下是添加内联代码的方法:

您可以使用{\tt code }或添加内联代码\texttt{ code }.如果要格式化内联代码,那么最好自己创建命令

\newcommand{\code}[1]{\texttt{#1}}
Run Code Online (Sandbox Code Playgroud)

另请注意,可以使用其他文件加载代码块

\lstinputlisting[breaklines]{source.c}
Run Code Online (Sandbox Code Playgroud)

breaklines不是必需的,但我发现它很有用.请注意,您必须指定此\usepackage{ 列表 }.

  • `\ texttt {code}`正是我所需要的!谢谢! (6认同)

Phi*_*ipp 31

minted依赖于Pygments进行格式化的专用软件包提供了各种优势listings.引用minted手册,

与传统包相比,Pygments提供了更优越的语法突出显示.例如,列表基本上只突出显示字符串,注释和关键字.另一方面,Pygments可以完全自定义,以突出显示源语言可能支持的任何令牌类型.这可能包括字符串,数字,不同类型的标识符和HTML标记等外来结构中的特殊格式序列.

  • 对于许多用户来说,这可能是一个令人不满意的解决方案,因为Pygmentsic需要外部调用.特别是,使用`-shell-escape`指令调用latex的要求充其量只是对现有构建系统的一个小修改,最坏的情况是与某些用户的安全性偏好不兼容. (3认同)
  • 我已经尝试过minted,文档非常简单。默认样式很好。 (2认同)

Shi*_*hah 14

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}
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明


小智 14

如果您的代码是用 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}
Run Code Online (Sandbox Code Playgroud)

看起来像: 在此输入图像描述

不幸的是,这仅适用于 Python。


The*_*hMe 11

使用铸造.

它是一个使用功能强大的Pygments库在LaTeX中提供富有表现力的语法高亮的软件包.该软件包还提供了使用fancyvrb自定义突出显示的源代码输出的选项.

它比任何其他包更加进化和可定制!

  • 然而,正如在类似答案中已经提到的那样,“-shell-escape”可能对某些人来说很糟糕。 (2认同)

Mat*_*gro 6

由于此处尚未提及,因此可能值得再添加一个选项包spverbatim(不突出显示语法):

\documentclass{article}
\usepackage{spverbatim}

\begin{document}

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

\end{document}
Run Code Online (Sandbox Code Playgroud)

另外,如果不需要突出显示语法,请打包alltt

\documentclass{article}
\usepackage{alltt}

\begin{document}

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

\end{document}
Run Code Online (Sandbox Code Playgroud)