들여 쓰기로이 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.