간단한 “알고리즘”을 작성하기위한 패키지에 대해 혼란 스럽습니다. 옵션이 너무 많고 언제 무엇을 사용해야하는지 혼란 스럽습니다. 예를 들어 algpseudocode
를 사용하면 iv id = “246e825daa에 이미 포함되어 있으므로 algorithmic
를 추가 할 수 없습니다. “>
패키지.
간소화 된 접근 방식에 대한 명확한 지침이 있습니까? 어떤 제안이라도 감사하겠습니다.
댓글
답변
TL; DR 버전 :
- 알고리즘 -알고리즘 용 부동 래퍼.
- 알고리즘 – 첫 번째 알고리즘 조판 환경입니다.
- algorithmicx -두 번째 알고리즘 유형 etti 환경.
- algpseudocode –
algorithmicx
의 레이아웃 . - algorithm2e -세 번째 알고리즘 조판 환경
algorithmic
보다 우수하므로 algorithmicx
를 algpseudocode
와 함께 사용합니다. algorithmicx
는 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
환경은 알고리즘에 대한 “float”래퍼를 제공합니다 (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}
algorithmicx
이 패키지는 업그레이드 된 algorithmic
와 같습니다. algorithmic
로는 할 수없는 사용자 지정 명령을 정의 할 수 있습니다. 따라서 (미친) 사용자 지정 명령을 작성하지 않으려면 algorithmic
. algorithmic
를 사용하는 것과 동일한 방식으로 algorithmicx
를 사용합니다. 구문과 세부 정보 만 약간 다릅니다. 자세한 내용은 아래 예를 참조하십시오. 문서 에 따르면
package algorithmicx 자체는 알고리즘 명령을 정의하지 않습니다. , 그러나 그러한 명령 세트를 정의하는 매크로 세트를 제공합니다. algorithmicx 만 사용하고 직접 명령을 정의하거나 사전 정의 된 명령 집합 중 하나를 사용할 수 있습니다.
예 :
\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
레이아웃을 사용합니다.
algorithm2e
이것은 또는 algorithmicx
. 문서 에 따르면 다음과 같습니다.
Algorithm2e는 LaTeX2e에서 알고리즘을 작성하기위한 환경입니다.
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}
댓글
- 아름답고 상세한 답변입니다! TL; DRTL; DR 버전은 다음과 같습니다. "
algorithmicx
"를 사용 하시겠습니까? 귀하의 논의는algorithmicx
를algorithmic
보다 선호하는 이유와 여부에 대해 매우 분명하지만 'algorithm2e
와 많은 비교를 제공하지 않습니다. 그것은 당신이 그것에 대해 덜 익숙하기 때문입니까, 열등하다고 잘 알려져 있기 때문입니까, 아니면 다른 것입니까? - 예, 맞습니다. 저는
algorithm2e
. 비슷한 기능을 제공해야한다고 생각하지만algorithmicx
구문을 선호합니다. 내 (주관적) 환경 설정일뿐임을 명확히하기 위해 답변을 수정했습니다. -
algorithmicx
를로드하더라도도요?
- 다양한 답변! 빠른 결정을 위해 각 패키지에 대한 컴파일 된 출력 사진을 포함하는 것이 도움이 될 수 있습니다.
-
algorithmicx
에 대한 섹션을 읽을 때 ' 패키지를 사용하려면algpseudocode
도로드해야한다는 것을 즉시 확인하지 마십시오. 아마도 나는 ' 이것을 경험 한 유일한 사람 일 수도 있고 그렇지 않으면 어딘가에 추가 될 수도 있습니다.
algpseudocode
는algorithmicx
번들의 일부이며algorithmic
.