알고리즘 및 소스 목록

실제 코드에 대한 알고리즘2e 스케치 및 목록.

알고리즘 및 소스 목록

논문에서는 코드를 두 가지 서로 다른 형식으로 제시하며 LaTeX에는 각각에 대해 별도의 도구가 있습니다. 유사 코드는 알고리즘의 이상적인 스케치이며 키워드와 수학으로 조판되어 있으며 ‘algorithm2e’ 패키지가 이를 처리합니다. 소스 목록은 고정 폭 글꼴로 그대로 재현된 실제 코드이며 listings 패키지가 이를 처리합니다. 잘못된 도구를 선택하는 것은 마찰의 일반적인 원인이므로 두 가지를 모두 확인하는 데 도움이 됩니다.

알고리즘2e를 사용한 의사코드

\usepackage[ruled,vlined]{algorithm2e}
\begin{algorithm}
\caption{Train}
\While{not converged}{
Update $\theta$\;
}
\end{algorithm}

패키지 옵션은 시각적 스타일을 설정합니다. ruled는 알고리즘 위와 아래에 수평 규칙을 그리고 캡션을 맨 위에 배치합니다. 이는 대부분의 장소에서 기대하는 관례입니다. 반면 vlined는 각 블록의 범위를 표시하는 작은 수직선을 그려서 중첩이 큰 들여쓰기 없이 읽기 쉽게 유지됩니다. 알고리즘 환경은 그림과 같은 부동 소수점이므로 인용할 \ref에 대한 숫자를 제공하는 \caption을 전달합니다.

내부에서 \While{condition}{body}는 굵은 키워드, 조건 및 들여쓰기 블록으로 본문을 사용하여 루프를 형식화합니다. \For, \If, \Return은 동일한 패턴을 따릅니다. 명령문은 \;로 끝나며, 이는 줄의 종결자를 인쇄하고 새 줄을 시작합니다. 그것을 잊어버리는 것은 전형적인 초보자 오류입니다. 선이 함께 실행됩니다. 이것은 일반적인 LaTeX이기 때문에 $\theta$와 같은 수학은 인라인으로 작동합니다. 의사코드는 특정 언어가 아닌 표기법으로 업데이트 규칙을 설명하는 데 사용됩니다.

목록이 포함된 실제 코드

\usepackage{listings}
\begin{lstlisting}[language=Python]
def f(x):
return x**2
\end{lstlisting}

‘lstlisting’ 환경은 공백을 유지하고 특수 문자를 문자 그대로 처리하여 내용을 정확하게 재현하므로 어떤 항목도 벗어나지 않고 코드를 붙여넣을 수 있습니다. 언어=Python 옵션은 해당 언어에 대한 키워드 강조 표시를 설정하고 목록은 수십 개의 다른 언어를 알고 있습니다. 기본적으로 출력은 일반입니다. 대부분의 사람들은 행 번호와 함께 적절한 크기의 고정 폭 글꼴을 얻기 위해 서문에 일회성 \lstset{basicstyle=\ttfamily\small,number=left}를 추가합니다. 붙여넣는 대신 파일을 직접 포함하려면 \lstinputlisting[언어=Python]{train.py}가 디스크에서 해당 파일을 읽어 문서를 실제 소스와 동기화합니다. 색상이 있는 고품질 강조 표시를 원한다면 외부 도구와 셸 이스케이프가 필요한 대가로 ‘minted’ 패키지가 더 강력한 대안입니다.

둘 중 선택하기

문서 본문에 의사 코드를 사용하여 아이디어를 전달하고 부록이나 도구 설명과 같이 정확한 코드가 중요한 아티팩트에 대한 축어적 목록을 예약합니다. 흔한 실수는 [fragile] 옵션 없이 Beamer 프레임 내부에 lstlisting을 배치하는 것입니다. 이는 불투명한 오류로 인해 실패합니다. 첫 번째 Beamer 데크에도 동일한 주의 사항이 나타납니다.

분야 키트(으)로 돌아가기