
간단한 "알고리즘"을 작성하기 위한 패키지에 대해 혼란스럽습니다. 옵션이 너무 많아서 언제 무엇을 사용해야 할지 혼란스럽습니다. 예를 들어 를 사용하면 이미 패키지에 포함되어 있으므로 algpseudocode
추가할 수 없습니다 .algorithmic
algorithm
간소화된 접근 방식에 대한 명확한 지침이 있습니까? 어떤 제안이라도 감사하겠습니다.
답변1
TL;DR 버전:
- 연산- 알고리즘에 대한 부동 래퍼.
- 알고리즘의- 최초의 알고리즘 조판 환경.
- 알고리즘x- 두 번째 알고리즘 조판 환경.
- algpseudocode- 에 대한 레이아웃
algorithmicx
. - 알고리즘2e- 세 번째 알고리즘 조판 환경.
나는 with 가 . 보다 우수하기 때문에 algorithmicx
with를 사용합니다 . 와 비교하여 동일한 기능을 제공한다고 생각 하지만 에서 제공하는 것보다 구문이 더 명확합니다 .algpseudocode
algorithmic
algorithmicx
algorithm2e
algorithm2e
상세 버전
연산
알고리즘을 위한 플로트 래퍼. 이는 블록 명령과 유사합니다 table
.figure
. 표/그림을 둘러싸서 숫자를 지정하고 두 페이지에 걸쳐 분할되는 것을 방지합니다. 그만큼선적 서류 비치말한다:
부동 환경에 캡슐화하지 않고 텍스트 내에 배치하면
algorithmic
환경이 페이지 경계를 넘어 분할되어 모양이 크게 손상될 수 있습니다. 또한 참조용으로 알고리즘에 번호를 매기고 알고리즘 목록을 콘텐츠 목록에 추가하는 것이 유용합니다. 환경algorithm
은 알고리즘에 대한 부동 환경을 제공하여 이러한 문제를 해결하기 위한 것입니다.
예:
\begin{algorithm}
\caption{Algorithm caption}
\label{alg:algorithm-label}
\begin{algorithmic}
... Your pseudocode ...
\end{algorithmic}
\end{algorithm}
알고리즘의
이것은 의사 코드를 작성하는 환경입니다. if
, while
, 등의 일반적인 구조에 대해 미리 정의된 명령이 있습니다 procedure
. 모든 명령은 대문자로 표시됩니다. 예:\IF{cond} ... \ELSE ...
. 문서1말한다:
환경
algorithmic
은 알고리즘을 설명하기 위한 환경을 제공하고algorithm
알고리즘에 대한 "부동" 래퍼를 제공합니다(algorithmic
사용자 선택에 따라 또는 다른 방법을 사용하여 구현됨). 두 가지 환경을 제공하는 이유는 사용자에게 최대한의 유연성을 허용하기 위해서입니다.
예:
\begin{algorithmic}
\IF{some condition is true}
\STATE do some processing
\ELSIF{some other condition is true}
\STATE do some different processing
\ELSE
\STATE do the default actions
\ENDIF
\end{algorithmic}
알고리즘x
이 패키지는 algorithmic
업그레이드된 것과 같습니다. 이를 통해 algorithmic
수행할 수 없는 사용자 정의 명령을 정의할 수 있습니다 . 따라서 (미친) 사용자 정의 명령을 작성하고 싶지 않다면 algorithmic
. 당신은 algorithmicx
당신이 사용하는 것과 같은 방법을 사용합니다algorithmic
하지만 구문과 세부 사항만 약간 다릅니다. 자세한 내용은 아래 예를 참조하세요. 그만큼선적 서류 비치말한다:
패키지 알고리즘icx 자체는 알고리즘 명령을 정의하지 않지만 그러한 명령 세트를 정의하는 매크로 세트를 제공합니다. 알고리즘x만 사용하고 명령을 직접 정의하거나 사전 정의된 명령 세트 중 하나를 사용할 수 있습니다.
예:
\begin{algorithm}
\caption{Euclid’s algorithm}
\label{euclid}
\begin{algorithmic}[1] % The number tells where the line numbering should start
\Procedure{Euclid}{$a,b$} \Comment{The g.c.d. of a and b}
\State $r\gets a \bmod b$
\While{$r\not=0$} \Comment{We have the answer if r is 0}
\State $a \gets b$
\State $b \gets r$
\State $r \gets a \bmod b$
\EndWhile\label{euclidendwhile}
\State \textbf{return} $b$\Comment{The gcd is b}
\EndProcedure
\end{algorithmic}
\end{algorithm}
algpseudocode
algorithmicx
이것은 가능한 한 유사하게 하려는 레이아웃일 뿐입니다 algorithmic
. 다음과 같은 다른 레이아웃도 있습니다.
algcompatible
(알고리즘 패키지와 완벽하게 호환됨)algpascal
(형식화된 파스칼 프로그램을 만드는 것이 목표이므로algpascal
몇 가지 기본 대체 규칙을 사용하여 파스칼 프로그램을 알고리즘 설명으로 변환할 수 있습니다.)algc
(algpascal과 비슷하지만 c의 경우입니다. 이 레이아웃은 불완전합니다).
그만큼선적 서류 비치말한다:
알고리즘 패키지에 익숙하다면 전환이 쉽다는 것을 알게 될 것입니다. 기존 알고리즘을 레이아웃과 함께 사용할 수 있지만 , 새로운 알고리즘에는 레이아웃을
algcompatible
사용하세요 .algpseudocode
를 사용하려면algpseudocode
을 사용하면 됩니다\usepackage{algpseudocode}
.algorithmicx
에 의해 수행되므로 패키지를 수동으로 로드할 필요가 없습니다algpseudocode
.
의 예를 참조하세요 . 레이아웃 algorithmicx
을 사용합니다 algpseudocode
.
알고리즘2e
algorithmic
이것은 or 와 같은 또 다른 알고리즘 환경입니다 algorithmicx
. 그만큼선적 서류 비치말한다:
Algorithm2e는 LaTeX2e에서 알고리즘을 작성하기 위한 환경입니다. An은
algorithm
그림처럼 떠다니는 객체로 정의됩니다. 다양한 종류의 키워드를 생성할 수 있는 매크로를 제공하므로 사전 정의된 키워드 세트가 제공됩니다. 키워드의 타이포그래피를 변경할 수도 있습니다.
예:
\begin{algorithm}[H]
\SetAlgoLined
\KwData{this text}
\KwResult{how to write algorithm with \LaTeX2e }
initialization\;
\While{not at end of this document}{
read current\;
\eIf{understand}{
go to next section\;
current section becomes this one\;
}{
go back to the beginning of current section\;
}
}
\caption{How to write algorithms}
\end{algorithm}
답변2
- 최근에 찾아보니
algpseudocodex
패키지다양한algorithm*
패키지의 통합을 향한 좋은 발걸음이 될 것입니다. - 해당 패키지는 의 일부 기능(예: 일반성, 템플릿 작성)
algorithmicx
과 간결한 레이아웃algorithm2e
, 즉 수직 범위 선을 훌륭하게 결합합니다.