간단한 “알고리즘”을 작성하기위한 패키지에 대해 혼란 스럽습니다. 옵션이 너무 많고 언제 무엇을 사용해야하는지 혼란 스럽습니다. 예를 들어 algpseudocode를 사용하면 iv id = “246e825daa에 이미 포함되어 있으므로 algorithmic를 추가 할 수 없습니다. “>

패키지.

간소화 된 접근 방식에 대한 명확한 지침이 있습니까? 어떤 제안이라도 감사하겠습니다.

댓글

답변

TL; DR 버전 :

  • 알고리즘 -알고리즘 용 부동 래퍼.
  • 알고리즘 – 첫 번째 알고리즘 조판 환경입니다.
  • algorithmicx -두 번째 알고리즘 유형 etti 환경.
  • algpseudocode algorithmicx의 레이아웃 .
  • algorithm2e -세 번째 알고리즘 조판 환경

algorithmic보다 우수하므로 algorithmicxalgpseudocode와 함께 사용합니다. algorithmicxalgorithm2e와 동일한 기능을 제공한다고 생각하지만 구문은 .

상세 버전

알고리즘

알고리즘을위한 플로트 래퍼. 블록 명령 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. 다음과 같은 다른 레이아웃도 있습니다.

  1. algcompatible (알고리즘 패키지와 완전히 호환 됨),
  2. algpascal (포맷 된 파스칼 프로그램을 만들기 위해 파스칼 프로그램을 몇 가지 기본 대체 규칙이있는 algpascal 알고리즘 설명으로 변환 할 수 있습니다).
  3. 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 "를 사용 하시겠습니까? 귀하의 논의는 algorithmicxalgorithmic보다 선호하는 이유와 여부에 대해 매우 분명하지만 ' algorithm2e와 많은 비교를 제공하지 않습니다. 그것은 당신이 그것에 대해 덜 익숙하기 때문입니까, 열등하다고 잘 알려져 있기 때문입니까, 아니면 다른 것입니까?
  • 예, 맞습니다. 저는 algorithm2e. 비슷한 기능을 제공해야한다고 생각하지만 algorithmicx 구문을 선호합니다. 내 (주관적) 환경 설정일뿐임을 명확히하기 위해 답변을 수정했습니다.
  • algorithmicx를로드하더라도

도요?

  • 다양한 답변! 빠른 결정을 위해 각 패키지에 대한 컴파일 된 출력 사진을 포함하는 것이 도움이 될 수 있습니다.
  • algorithmicx에 대한 섹션을 읽을 때 ' 패키지를 사용하려면 algpseudocode도로드해야한다는 것을 즉시 확인하지 마십시오. 아마도 나는 ' 이것을 경험 한 유일한 사람 일 수도 있고 그렇지 않으면 어딘가에 추가 될 수도 있습니다.
  • 답글 남기기

    이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다