다양한 언어로 된 코드의 구문 강조를위한 LaTeX 패키지


164

코드에서 구문 강조를 수행하는 LaTeX 패키지를 찾고 있습니다. 예를 들어, 지금은 그대로 블록을 사용하여 코드를 작성합니다.

\begin{verbatim}
    <html>
       <head>
           <title>Hello</title>
       </head>
       <body>Hello</body>
    </html>
\end{verbatim}

그리고 이것은 내 문서에 코드를 표시하는 데 효과적입니다. 그러나 출력 문서에서 IDE가하는 방식으로 HTML 마크 업을 강조하고 싶습니까? 도움이 될만한 패키지가 있습니까?

Java, C #, HTML, CSS 등과 같은 다양한 언어에 대해서도 동일하게 수행하고 싶습니다.


4
에 만족하지 않습니다 lstlisting. XML 코드를 전혀 강조 표시하지 않으며 외래 유니 코드 문자를 사용할 때 실수합니다. 보이는 것처럼 JavaScript도 지원되지 않습니다. LGrind가 그러한 것들을 다룰 수 있습니까?
webjunkie

답변:


157

리스팅 패키지를 사용할 수 있습니다 . 다양한 언어를 지원하며 출력을 사용자 정의하기위한 많은 옵션이 있습니다.

\documentclass{article}
\usepackage{listings}

\begin{document}
\begin{lstlisting}[language=html]
<html>
    <head>
        <title>Hello</title>
    </head>
    <body>Hello</body>
</html>
\end{lstlisting}
\end{document}

20
기본적으로 색상이 적용됩니까? 테스트 사용시 컬러 출력이 표시되지 않으며, 이것이 내 부분에 오류인지 또는 단순히 기능이 아닌지 확실하지 않습니다.
벤슨

12
여기에서 답변을 찾았습니다 : tjansson.dk/?p=419 . lstset 명령을 사용하여 다양한 속성에 대해 모든 종류의 스타일을 설정할 수 있습니다.
Benson

144

비슷한 질문을 한 후에 피그먼트를 사용하는 다른 패키지를 만들었으며보다 많은 옵션을 제공합니다 texments. 호출 minted되고 상당히 안정적이며 사용 가능합니다.

이를 보여주기 위해 다음은 강조 표시된 코드입니다.

예제 코드


이것은 실제로 꽤 좋은 일입니다. 피그먼트를 설치하는 것은 약간의 어려움이 있지만 대부분의 사람들은 기꺼이 그렇게 할 것입니다.
Vincent Ramdhanie

1
@Vincent : 불행히도 Windows에 Pygments를 설치하는 것은 현재 약간 더 복잡합니다 (사용자는 PATH변수 를 조정하고 cmd 스크립트를 만들어야합니다). 이 단계를 쉽게하기 위해 피그먼트 관리자에게 래퍼를 pygmentize함께 제공 하도록 설득하고 싶습니다 .exe.
Konrad Rudolph

1
리스팅과 민트 / 피그먼트를 모두 시도한 후 민트가 훨씬 더 우수하다고 판단했습니다. 그러나 수십 개의 후프를 뛰어 넘고 MiKTeX 2.8로 업그레이드하고 Python을 설치하고 다른 구성 요소를 설치하는 등의 작업이 필요합니다. 음소거 된 문서는 열악하며 긴 줄 바꿈을 지원하지 않습니다. 그러나 결국 Eclipse 색상으로 Java / XML을 렌더링해야합니다! jevon.org/wiki/Eclipse_Pygments_Style
jevon

@soundasleepful : 문서화 된 설명서가 지속적으로 업데이트됩니다. ;-) 나는 실제로 그것이 매우 광범위하다는 것을 알지만 (물론 편견이있다) 불만을 기꺼이 해결해 드리겠습니다. “요구 사항”섹션은 당연히 끔찍합니다.
Konrad Rudolph

3
mintedShareLatex와 Overleaf 모두에 설치되어 작동합니다. Pygments를 설치하는 데 어려움을 겪지 마십시오.)
grofte

21

나는 피그먼트를 추천 한다 . 모든 언어로 된 코드를 받아들이고 LaTeX 코드로 강조 표시된 구문을 출력합니다. 그것은 사용 fancyvrb컬러 출력을 생산하기 위해 패키지를. 나는 개인적으로 목록 패키지보다 선호합니다. fancyvrb 가 훨씬 더 예쁘게 보인다고 생각 합니다.


1
필자는 목록 뒤의 거시 학에 감탄하지만 피그먼트에는 더 나은 강조 표시, 쉬운 사용자 정의, 구문 혼합 기능 및 HTML과 같은 라텍스 이외의 형식으로 출력하는 기능이 있다는 데 동의합니다.
Charles Stewart

A의 beamer유형 문서 이것은 분명히 유일한 기능 옵션입니다. 로 올바르게 컴파일 minted하거나 listings컴파일 하지 마십시오 beamer.
루이스 드 수사

예, listings와 함께 사용 beamer했지만 목록이 포함 된 프레임을으로 지정해야합니다 [fragile].
Supernormal

11

LGrind 는 이것을합니다. 아담이 카우보이 였고 많은 프로그래밍 언어를 지원 한 이후로 사용되어 온 성숙한 LaTeX 패키지입니다.


10

리스팅 패키지 대신 개발자 Konrad Rudolph가 언급 한대로 민트 패키지 를 사용합니다 . 이유는 다음과 같습니다.

리스팅 패키지

리스팅 패키지는 기본적으로 색상을 지원하지 않습니다. 색상을 사용하려면 여기 에서 matlab 코드에 대해 설명 된대로 \ lstset 명령 을 사용하여 색상 패키지를 포함하고 색상 규칙을 직접 정의해야합니다 .

또한 목록 패키지는 유니 코드에서 제대로 작동하지 않지만 여기여기에 설명 된대로 이러한 문제를 해결할 수 있습니다 .

다음 코드

\documentclass{article}
\usepackage{listings}

\begin{document}
\begin{lstlisting}[language=html]
<html>
    <head>
        <title>Hello</title>
    </head>
    <body>Hello</body>
</html>
\end{lstlisting}
\end{document}

다음 이미지를 생성합니다.

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

민트 패키지

민트 패키지는 색상, 유니 코드를 지원하며 멋지게 보입니다. 그러나 그것을 사용하려면 python 2.6 및 pygments가 있어야 합니다. 우분투에서는 터미널에서 파이썬 버전을 확인할 수 있습니다.

python --version

와 함께 피그먼트를 설치할 수 있습니다

sudo apt-get install python-pygments

그런 다음, minted는 피그먼트를 호출하므로 다음 과 같이 -shell-escape 로 컴파일해야 합니다.

pdflatex -shell-escape yourfile.tex

TexMaker와 같은 라텍스 편집기를 사용하는 경우 편집기에서 컴파일 할 수 있도록 사용자 명령을 추가하는 것이 좋습니다.

다음 코드

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

\begin{minted}{html}
    <!DOCTYPE html>
    <html>
       <head>
           <title>Hello</title>
       </head>

       <body>Hello</body>
    </html>
\end{minted}
\end{document}

다음 이미지를 생성합니다.

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


4

나는 주로 논문에 lstlisting을 사용하지만, 컬러 출력 (슬라이드)에는 피그먼트를 대신 사용합니다.


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