TL;DR 버전:

TL;DR 버전:

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

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

답변1

TL;DR 버전:

  • 연산- 알고리즘에 대한 부동 래퍼.
  • 알고리즘의- 최초의 알고리즘 조판 환경.
  • 알고리즘x- 두 번째 알고리즘 조판 환경.
  • algpseudocode- 에 대한 레이아웃 algorithmicx.
  • 알고리즘2e- 세 번째 알고리즘 조판 환경.

나는 with 가 . 보다 우수하기 때문에 algorithmicxwith를 사용합니다 . 와 비교하여 동일한 기능을 제공한다고 생각 하지만 에서 제공하는 것보다 구문이 더 명확합니다 .algpseudocodealgorithmicalgorithmicxalgorithm2ealgorithm2e

상세 버전

연산

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

  1. algcompatible(알고리즘 패키지와 완벽하게 호환됨)
  2. algpascal(형식화된 파스칼 프로그램을 만드는 것이 목표이므로 algpascal몇 가지 기본 대체 규칙을 사용하여 파스칼 프로그램을 알고리즘 설명으로 변환할 수 있습니다.)
  3. 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, 즉 수직 범위 선을 훌륭하게 결합합니다.

여기에 이미지 설명을 입력하세요 (예제는 매뉴얼에서 따왔습니다.)

관련 정보