본문으로 건너뛰기

알고리즘과 의사코드

의사코드를 \caption과 함께 algorithm 환경으로 감싸면 "Algorithm 1"이 됩니다. 그 안에서 Scissor LaTeX는 algorithmic의 대문자 명령(\STATE, \FOR)을 학회 레이아웃에서만 읽으므로, 다른 문서에서는 단계를 verbatim 블록에 넣으세요.

algorithm 환경

algorithm 패키지는 그림처럼 번호가 붙는 의사코드 환경을 제공합니다. \caption을 쓰면 번호("Algorithm 1")가 붙고, 캡션 뒤에 \label을 두면 \ref로 참조할 수 있습니다. Scissor LaTeX에서 알고리즘은 쓴 자리에 그대로 머물며 캡션은 그 아래에 조판됩니다.

안에 무엇을 넣을지는 단계를 쓰는 데 사용하는 패키지에 따라 다르며, 지원 범위도 여기서 달라집니다.

패키지명령Scissor LaTeX에서
algorithmalgorithm 환경, \caption, \label동작함: "Algorithm N"으로 번호가 붙고 캡션은 아래에 옵니다.
algorithmic\STATE, \IF, \FOR, \WHILE, \RETURN ... (대문자)일부: 학회 레이아웃 문서에서만 읽히며, 그 밖에서는 알 수 없는 명령입니다.
algpseudocode (algorithmicx)\State, \If, \For, \EndFor, \Return ...지원하지 않음: 메시지와 함께 건너뛰며, 단계가 한 줄로 이어집니다.
algorithm2e\KwIn, \For{..}{..}, \eIf ...지원하지 않음: 메시지와 함께 건너뜁니다.

어디서나 동작하는 의사코드

어떤 Scissor LaTeX 문서에서든 의사코드를 가장 확실하게 보여 주는 방법은 algorithm 안에 verbatim 블록을 넣는 것입니다. 번호와 캡션이 유지되고, 각 줄의 들여쓰기도 그대로 남습니다.

verbatim으로 단계를 쓴 알고리즘

LaTeX프리앰블: \usepackage{algorithm}편집기에서 열기 (새 탭에서 열림)
\begin{algorithm}
\caption{Sum of a list}
\label{alg:sum}
\begin{verbatim}
s := 0
for each a in xs:
    s := s + a
return s
\end{verbatim}
\end{algorithm}
Algorithm~\ref{alg:sum} adds the numbers of a list.
Scissor LaTeX로 조판: verbatim으로 단계를 쓴 알고리즘

수식이 들어간 의사코드라면 lstlisting도 같은 방식으로 쓸 수 있고, algorithm 환경 밖에서 단계를 일반 텍스트의 번호 목록으로 써도 됩니다.

수식이 들어간 번호 목록으로 쓴 단계

\textbf{Input:} numbers $a_1, \dots, a_n$.
\begin{enumerate}
  \item Set $s \gets 0$.
  \item For $i = 1, \dots, n$: set $s \gets s + a_i$.
  \item Return $s$.
\end{enumerate}
Scissor LaTeX로 조판: 수식이 들어간 번호 목록으로 쓴 단계

학회 레이아웃의 algorithmic

학회 형식 유사 레이아웃(arXiv, IEEE, NeurIPS, ICML 등)은 algorithmic 패키지의 대문자 명령을 읽습니다. for, do, end for, return 같은 키워드는 굵게 조판되고, 명령마다 새 줄이 시작됩니다. 줄 번호는 그려지지 않으며 줄은 가운데 정렬됩니다. 문제 탭에 사용 중인 레이아웃이 표시됩니다.

arXiv 스타일 문서의 algorithmic

\documentclass{article}
\usepackage{arxiv}
\usepackage{algorithm,algorithmic}
\begin{document}
\begin{algorithm}
\caption{Sum of a list}
\begin{algorithmic}
\STATE $s \gets 0$
\FOR{$i = 1$ to $n$}
  \STATE $s \gets s + a_i$
\ENDFOR
\RETURN $s$
\end{algorithmic}
\end{algorithm}
\end{document}
Scissor LaTeX로 조판: arXiv 스타일 문서의 algorithmic

문제 탭: Layout in the style of the arXiv preprint style (final mode). Not official. To compile elsewhere, add arxiv.sty from github.com/kourgeorge/arxiv-style.

algpseudocode는 지원하지 않습니다

최근 논문에서 가장 많이 쓰이는 패키지인 algpseudocode는 \State, \EndFor처럼 대소문자가 섞인 명령을 씁니다. Scissor LaTeX는 이 명령들을 모릅니다. 명령 이름은 건너뛰고 수식과 단어는 남기므로, 모든 내용이 한 줄로 이어집니다. 건너뛴 명령은 문제 탭에 나열됩니다.

algpseudocode: 단계가 한 줄로 이어집니다

LaTeX프리앰블: \usepackage{algorithm,algpseudocode}편집기에서 열기 (새 탭에서 열림)
\begin{algorithm}
\caption{Sum of a list}
\begin{algorithmic}[1]
\State $s \gets 0$
\For{$i = 1$ to $n$}
  \State $s \gets s + a_i$
\EndFor
\State \Return $s$
\end{algorithmic}
\end{algorithm}

문제 탭: Skipped 4 unknown commands: \State, \For, \EndFor, \Return

문서가 여기서도, TeX 설치 환경에서도 동작해야 한다면 위에서 보인 것처럼 단계를 verbatim으로 쓰세요. 어디서나 컴파일됩니다.

TeX 설치 환경과 다른 점

패키지 페이지는 algorithm, algorithmic, algpseudocode입니다. 설명서는 CTAN에 있습니다: algorithms, algorithmicx, algorithm2e.

알고리즘 패키지, 코드 목록, 학회 레이아웃도 참고하세요.

질문과 답변

LaTeX에서 알고리즘은 어떻게 쓰나요?

\caption과 함께 algorithm 환경을 쓰고 그 안에 단계를 넣으세요. Scissor LaTeX에서는 단계를 verbatim 블록에 넣거나, 학회 레이아웃에서 algorithmic의 \STATE 명령을 쓰는 것이 가장 잘 동작합니다.

왜 \State 줄이 한 줄로 이어지나요?

\State는 Scissor LaTeX가 지원하지 않는 algpseudocode의 명령입니다. 명령 이름을 건너뛰기 때문에 단계가 한 줄로 합쳐집니다. 대신 단계를 verbatim으로 쓰세요.

알고리즘을 번호로 참조할 수 있나요?

네. \caption 뒤에 \label{alg:name}을 두고 Algorithm~\ref{alg:name}이라고 쓰세요.

이 페이지의 모든 예제는 사이트를 빌드할 때 Scissor LaTeX로 조판됩니다. 마지막 업데이트: 2026-11-07