> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# {Minted}

이 글에서는 [`minted` 패키지](https://ctan.org/pkg/minted?lang=en)를 사용해 LaTeX 문서 안에서 프로그래밍 언어 소스 코드의 서식을 지정하고 강조 표시하는 방법을 예시와 함께 설명합니다.

```latex theme={null}
\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}{python}
import numpy as np
    
def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #to become the incidence matrix
    VT = np.zeros((n*m,1), int)  #dummy variable
    
    #compute the bitwise xor matrix
    M1 = bitxormatrix(genl1)
    M2 = np.triu(bitxormatrix(genl2),1) 

    for i in range(m-1):
        for j in range(i+1, m):
            [r,c] = np.where(M2 == M1[i,j])
            for k in range(len(r)):
                VT[(i)*n + r[k]] = 1;
                VT[(i)*n + c[k]] = 1;
                VT[(j)*n + r[k]] = 1;
                VT[(j)*n + c[k]] = 1;
                
                if M is None:
                    M = np.copy(VT)
                else:
                    M = np.concatenate((M, VT), 1)
                
                VT = np.zeros((n*m,1), int)
    
    return M
\end{minted}
\end{document}
```

이 예시의 출력 결과는 다음과 같습니다.

<p style={{ textAlign: "center" }}>
  <img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/f0/OLV2minted.png" alt="minted 패키지의 출력을 보여 주는 예시" />
</p>

여기에는 두 가지 중요한 명령이 있습니다. 프리앰블에서 다음과 같이 작성해 패키지를 불러옵니다.

```latex theme={null}
\usepackage{minted}
```

그런 다음 `\begin{minted}{python}`과 `\end{minted}` 태그로 환경을 구분합니다. 이 환경은 텍스트를 고정폭 글꼴로 있는 그대로 출력하며, 주석·키워드·함수에 색상도 적용합니다. 매개변수 `python`은 소스 코드가 작성된 프로그래밍 언어입니다. `minted`는 150개 이상의 프로그래밍 언어와 마크업 언어, 구성 파일을 지원합니다. 지원되는 언어 목록은 [참조 가이드](https://www.overleaf.com/learn/latex/Code_Highlighting_with_minted#Reference_guide)를 확인하세요.

**참고**: *로컬* LaTeX 배포판에서 `minted`를 사용하려면 [Pygments](https://pygments.org/)라는 별도 프로그램을 설치해야 합니다. [Overleaf](https://www.overleaf.com/)를 사용하면 이를 설치하거나 문서를 컴파일하기 위해 특수한 명령을 실행하는 번거로움을 덜 수 있습니다. Overleaf에서는 `minted`를 사용하는 문서가 "별도 설정 없이" 바로 작동합니다.

### 기본 사용법

다음 예시처럼 `minted` 환경을 구성하여 조판된 코드의 시각적 표현을 변경할 수 있습니다. 여기서 `minted` 환경은 `key=value` 형식의 쉼표로 구분된 여러 매개변수를 사용합니다.

```latex theme={null}
\documentclass{article}
\usepackage{minted}
\usepackage{xcolor} % to access the named colour LightGray
\definecolor{LightGray}{gray}{0.9}
\begin{document}
\begin{minted}
[
frame=lines,
framesep=2mm,
baselinestretch=1.2,
bgcolor=LightGray,
fontsize=\footnotesize,
linenos
]
{python}
import numpy as np
    
def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #to become the incidence matrix
    VT = np.zeros((n*m,1), int)  #dummy variable
    
    #compute the bitwise xor matrix
    M1 = bitxormatrix(genl1)
    M2 = np.triu(bitxormatrix(genl2),1) 

    for i in range(m-1):
        for j in range(i+1, m):
            [r,c] = np.where(M2 == M1[i,j])
            for k in range(len(r)):
                VT[(i)*n + r[k]] = 1;
                VT[(i)*n + c[k]] = 1;
                VT[(j)*n + r[k]] = 1;
                VT[(j)*n + c[k]] = 1;
                
                if M is None:
                    M = np.copy(VT)
                else:
                    M = np.concatenate((M, VT), 1)
                
                VT = np.zeros((n*m,1), int)
    
    return M
\end{minted}
\end{document}
```

이 예시의 출력 결과는 다음과 같습니다.

<p style={{ textAlign: "center" }}>
  <img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/ff/OLV2minted2.png" alt="minted 패키지로 조판한 코드에 서식을 적용한 예시" />
</p>

이 예시에서 사용한 매개변수는 다음과 같습니다.

* `frame=lines`: 코드 위아래에 각각 선을 하나씩 그려 테두리를 만듭니다. 그 밖에 `leftline`, `topline`, `bottomline`, `single` 값을 사용할 수 있습니다.
* `framesep=2mm`: 테두리 간격을 2mm로 설정합니다. 다른 [길이 단위](https://www.overleaf.com/learn/latex/Lengths_in_LaTeX)도 사용할 수 있습니다.
* `baselinestretch=1.2`: 코드의 줄 간격을 1.2로 설정합니다.
* `bgcolor=LightGray`: 배경색을 `LightGray`로 설정합니다. 이를 사용하려면 `xcolor` 패키지를 불러와야 합니다. 색상 다루기에 대한 자세한 내용은 [LaTeX에서 색상 사용하기](https://www.overleaf.com/learn/latex/Using_colours_in_LaTeX)를 참조하세요.
* `fontsize=\footnotesize`: 글꼴 크기를 `footnotesize`로 설정합니다. 다른 [글꼴 크기](https://www.overleaf.com/learn/latex/Font_sizes_and_kinds%23Reference_guide)도 설정할 수 있습니다.
* `linenos`: 줄 번호를 표시합니다.

그 밖에 유용한 옵션은 다음과 같습니다.

* `mathescape`: 코드 주석에서 수식 모드를 사용할 수 있게 합니다.
* `rulecolor`: 테두리 색상을 변경합니다.
* `showspaces`: 공백을 특수 문자로 표시합니다.

### 파일에서 코드 불러오기

코드는 보통 소스 파일에 저장되어 있으므로, 다음 예시처럼 파일에서 코드를 자동으로 불러오는 명령이 매우 편리합니다.

```latex theme={null}
\documentclass{article}
\usepackage{minted}
\title{Importing files using minted}
\begin{document}
The next code will be directly imported from a file:

\inputminted{octave}{BitXorMatrix.m}
\end{document}
```

이 예시의 출력 결과는 다음과 같습니다.

<img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/c/c8/OLV2mintedinput.png" alt="minted로 코드 파일 불러오기" height="392" width="600" />

`\inputminted{octave}{BitXorMatrix.m}` 명령은 `BitXorMatrix.m` 파일에서 코드를 불러오며, 매개변수 `octave`는 LaTeX에 코드의 프로그래밍 언어를 알려 줍니다. 이 명령은 파일의 일부만 불러오기 위해 두 개의 추가 매개변수를 받을 수 있습니다. 예를 들어 2번째 줄부터 12번째 줄까지의 코드를 불러오려면 명령을 다음과 같이 작성합니다.

```latex theme={null}
\inputminted[firstline=2, lastline=12]{octave}{BitXorMatrix.m}
```

### 한 줄 코드

코드 한 줄만 입력해야 한다면, 다음 예시에 문법이 나와 있는 `\mint` 명령을 사용하면 됩니다.

```latex wrap theme={null}
One-line code formatting also works with \texttt{minted}. For example, a small fragment of HTML like this:
\mint{html}|<h2>Something <b>here</b></h2>|
\noindent can be formatted correctly.
```

이 예시의 출력 결과는 다음과 같습니다.

<img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/d/d9/OLV2mintedHTML.png" alt="minted를 사용한 한 줄 코드 예시" height="112" width="600" />

중괄호 안의 매개변수는 프로그래밍 언어(이 경우 `html` 마크업 언어)를 지정하며, 실제로 서식을 적용할 텍스트는 '|' 문자로 구분합니다.

### 자체 호스팅 Overleaf에서의 문제

샌드박스 컴파일과 함께 Overleaf 서버를 사용해 Overleaf를 배포하는 경우 minted가 제대로 작동하지 않을 수 있습니다. 자세한 내용은 [issues/131](https://github.com/yu-i-i/overleaf-cep/issues/131)을 참조하세요. minted가 작동하려면 arm 명령어 프로필과 일부 시스템 호출을 활성화해야 합니다.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.