들여 쓰기로이 LaTeX 문서에 코드 삽입


426

LaTeX 문서에 코드를 어떻게 삽입합니까? 다음과 같은 것이 있습니까?

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

내가 정말로 필요한 유일한 것은 들여 쓰기와 고정 너비 글꼴입니다. 구문 강조는 꼭 필요하지는 않지만 좋을 수 있습니다.


정확한 복제본은 아니지만 답변은 같은 근거를 다룹니다 : stackoverflow.com/questions/741985/…
Charles Stewart

나는 또한 후속 질문이 있습니다 : stackoverflow.com/questions/3408996/…
sixtyfootersdude

답변:


630

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}

결과는 다음과 같습니다.

이미지 예


3
코드와 관련된 후속 질문이 있습니다. : 당신이 기회를 얻는 경우에 보라 stackoverflow.com/questions/3408996/...
sixtyfootersdude

1
코드 줄 사이의 공간을 줄이는 방법이 있습니까?
sukhvir

라텍스에서 그림 아래에 작성된 텍스트와 유사한 코드 스 니펫 아래에 작은 텍스트를 추가 할 수 있습니까?
브라이언 J

@Brian 나는 그것을 모른다. 아마도 내부에 코드가 있으면 figure효과를 얻을 수 있습니다.
Cloudanger

이 패키지가 더 이상 사용되지 않는다고 들었습니다.
xxx ---

165

당신은 또한 그대로 환경을 사용할 수 있습니다

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

57
완전 환경 내에서 탭을 사용하는 데 문제가 있습니다. 탭이 "공백"으로 변환되면 문제가 사라집니다.
midtiby

1
텍스트 파일 내용의 예 (예 : 프로그램에서 읽거나 처리 할 텍스트 데이터)를 표시하는 데 좋습니다.
nalyd88

두 열 기사의 경우 여백을 잘 처리하지 못합니다.
Sazzad Hissain Khan

115

인라인 코드를 추가하는 방법은 다음과 같습니다.

{\tt code }또는로 인라인 코드를 추가 할 수 있습니다 \texttt{ code }. 인라인 코드를 포맷하려면 직접 명령을 작성하는 것이 가장 좋습니다.

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

또한 코드 블록을 사용하여 다른 파일에서 코드 블록을로드 할 수 있습니다.

\lstinputlisting[breaklines]{source.c}

breaklines필요하지 않지만 유용하다고 생각합니다. 이 \usepackage{ 목록 을 지정해야합니다 }.

업데이트 : 리스팅 패키지도 포함 \lstinline같은 기능을 강조 같은 구문은 명령 \lstlisting\lstinputlisting(구성 세부 Cloudanger의 답변을 참조) 명령을. 다른 답변에서 언급했듯이, \mintinline명령 을 제공하는 민트 패키지도 있습니다 . 마찬가지로 \lstinline, \mintinline일반 발행 년도 코드 블록으로 강조 동일한 구문을 제공한다 :

\documentclass{article}

\usepackage{minted}

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

1
키워드 색상 등을 활성화하는 인라인 코드의 더 좋은 방법은 무엇입니까?
nano

예. 토론을 위해 답변을 업데이트했습니다.
alan

더 읽기 쉽게 보이도록 간격 / 탭을 어떻게 삽입합니까?
Charlie Parker

32

minted포맷을 수행하기 위해 피그먼트에 의존하는와 같은 특수화 된 패키지 는 listings패키지 보다 다양한 장점을 제공 합니다. minted매뉴얼 에서 인용하자면

피그먼트는 기존 패키지에 비해 훨씬 뛰어난 구문 강조를 제공합니다. 예를 들어 목록은 기본적으로 문자열, 설명 및 키워드 만 강조 표시합니다. 반면, 피그먼트는 소스 언어가 지원할 수있는 모든 토큰 종류를 강조하도록 완전히 사용자 정의 할 수 있습니다. 여기에는 문자열, 숫자, 다른 종류의 식별자 및 HTML 태그와 같은 이국적인 구문 내의 특수 형식화 시퀀스가 ​​포함될 수 있습니다.


1
나는 민트를 시도했지만 문서는 매우 간단합니다. 기본 스타일은 quit good입니다.
user2262504

5
Pygmentsic에 필요한 외부 호출로 인해 많은 사용자에게 불만족스러운 솔루션 일 수 있습니다. 특히, -shell-escape지시문을 사용하여 라텍스를 호출해야하는 요구 사항 은 기껏해야 기존 빌드 시스템을 약간 수정하고 최악의 경우 일부 사용자의 보안 기본 설정과 호환되지 않는 것입니다.
KDN

12

사용 발행 년도 .

강력한 피그먼트 라이브러리를 사용하여 LaTeX에서 표현 구문 강조를 용이하게하는 패키지입니다 . 이 패키지는 fancyvrb를 사용하여 강조 표시된 소스 코드 출력을 사용자 정의하는 옵션도 제공합니다 .

다른 어떤 패키지보다 훨씬 진화하고 사용자 정의가 가능합니다!


그러나 비슷한 대답에서 이미 언급했듯이 -shell-escape일부 사람들에게는 짜증이 날 수 있습니다.
Egor Hans

8

발행 년도 에 workes 종이의 뒷면 , 텍 라이브와 MiKTeX.

예:

\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}

산출:

여기에 이미지 설명을 입력하십시오


6

아직 여기에 언급되지 않았으므로 패키지 spverbatim(구문 강조 표시 없음) 옵션을 하나 더 추가하는 것이 좋습니다 .

\documentclass{article}
\usepackage{spverbatim}

\begin{document}

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

\end{document}

또한 구문 강조가 필요하지 않은 경우 package alltt:

\documentclass{article}
\usepackage{alltt}

\begin{document}

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

\end{document}

1
이것은 다소 원하는 것이지만 탭으로 들여 쓰기가 불가능합니다. 더 쉽게 들여 쓰기 할 수있는 비슷한 패키지가 어떻게 들여 쓰기 / 있습니까?
Darokrithia

1
@ Darokrithia 내 답변을 편집했습니다 : 들여 쓰기를 확인 / 직면 할 수 있습니까? :)
MattAllegro

1
작동하지 않는 것 같습니다. 사용중인 코드를 보낼 수는 있지만 주석에서 서식이 손상됩니다. BTW 다른 답변을 사용했지만 정상적으로 작동했지만 앞으로 독자 에게이 문제가 여전히 해결되어야한다고 생각합니다.
Darokrithia

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.