의사코드 알고리즘의 형식을 지정하는 방법

의사코드 알고리즘의 형식을 지정하는 방법

아래 그림과 같은 의사코드 알고리즘의 형식을 지정하는 방법을 알고 싶습니다. 이 그림에 표시된 의사 코드의 스타일, 형식 및 디자인을 모방하는 Tex/Latex 코드의 예를 보고 싶습니다. 간단한 의사코드 알고리즘을 작성하는 방법을 알고 있지만 작성하는 방법을 모릅니다.

  1. 의사코드를 "Some text.." 항목으로 정렬합니다.
  2. 의사 코드를 작성하는 방법입력그리고산출프로시저/함수 바로 아래에 있으므로 번호가 매겨지지 않고 프로시저/함수와 정렬되지 않습니다.
  3. "수직선" 형태로 블록 괄호를 사용하는 방법

여기에 이미지 설명을 입력하세요

나의 시도

\documentclass[a4paper]{article}

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{graphicx}
\usepackage[colorinlistoftodos]{todonotes}
\usepackage{algorithm}
\usepackage{algpseudocode}

\usepackage{geometry}
 \geometry{
 a4paper,
 total={210mm,297mm},
 left=20mm,
 right=20mm,
 top=20mm,
 bottom=20mm,
 }

\begin{document}
\begin{enumerate}

 \item Some text goes here . . .
  \begin{algorithm}
   \caption{Merge Sort}
    \begin{algorithmic}[1]
      \Function{Merge}{$A,p,q,r$}\Comment{Where A - array, p - left, q - middle, r - right}

        \State ${n_1} = q - p + 1$
        \State ${n_2} = r - q$
        \State Let $L[1 \ldots {n_1} + 1]$ and $R[1 \ldots {n_2} + 1]$ be new arrays
        \For{$i = 1$ to ${n_1}$}
            \State $L[i] = A[p + i - 1]$
        \EndFor
        \For{$j = 1$ to ${n_2}$}
            \State $R[i] = A[q + j]$
        \EndFor
        \State $L[{n_1} + 1] =  \infty $
        \State $R[{n_2} + 1] =  \infty $
        \State $i = 1$
        \State $j = 1$
        \For{$k = p$ to $r$}
            \If {$L[i] < R[j]$}
                \State $A[k] = L[i]$
                \State $i = i + 1$
            \ElsIf {$L[i] > R[j]$}
                \State $A[k] = R[j]$
                \State $j = j + 1$
            \Else
                \State $A[k] = - \infty$ \Comment{We mark the duplicates with the largest negative integer}
                \State $j = j + 1$
            \EndIf
        \EndFor
       \EndFunction

\end{algorithmic}
\end{algorithm}
\end{enumerate}
\end{document}

내 결과 여기에 이미지 설명을 입력하세요

코멘트

  1. 보시다시피 알고리즘을 항목별 텍스트와 정렬하는 방법을 모르겠습니다.
  2. 어떻게 배치해야 할지 모르겠어요입력그리고산출함수 아래에 단어가 있으므로 번호가 매겨지지 않고 함수와 정렬되지도 않습니다.
  3. 저는 그냥 수직 라인 블록 스타일보다는 세로 라인 블록 스타일을 더 좋아해요.조건:끝.

저는 Latex를 사용하여 의사 코드 알고리즘을 작성하는 것이 처음이지만 제가 찾고 있는 스타일과 형식이 패키지에 있는 것 같습니다.알고리즘2e. 누군가 다음 결과를 얻는 방법을 보여줄 수 있습니까?

여기에 이미지 설명을 입력하세요

위 그림과 같은 스타일로 의사코드 알고리즘을 작성하는 방법을 배우고 싶습니다.

답변1

여기있어:

여기에 이미지 설명을 입력하세요

암호:

\documentclass{article}
\usepackage{amsmath}
\usepackage[linesnumbered,ruled]{algorithm2e}

\begin{document}
\begin{algorithm}
    \SetKwInOut{Input}{Input}
    \SetKwInOut{Output}{Output}

    \underline{function Euclid} $(a,b)$\;
    \Input{Two nonnegative integers $a$ and $b$}
    \Output{$\gcd(a,b)$}
    \eIf{$b=0$}
      {
        return $a$\;
      }
      {
        return Euclid$(b,a\mod b)$\;
      }
    \caption{Euclid's algorithm for finding the greatest common divisor of two nonnegative integers}
\end{algorithm}
\end{document} 

관련 정보