
아래 그림과 같은 의사코드 알고리즘의 형식을 지정하는 방법을 알고 싶습니다. 이 그림에 표시된 의사 코드의 스타일, 형식 및 디자인을 모방하는 Tex/Latex 코드의 예를 보고 싶습니다. 간단한 의사코드 알고리즘을 작성하는 방법을 알고 있지만 작성하는 방법을 모릅니다.
- 의사코드를 "Some text.." 항목으로 정렬합니다.
- 의사 코드를 작성하는 방법입력그리고산출프로시저/함수 바로 아래에 있으므로 번호가 매겨지지 않고 프로시저/함수와 정렬되지 않습니다.
- "수직선" 형태로 블록 괄호를 사용하는 방법
나의 시도
\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}
내 결과
코멘트
- 보시다시피 알고리즘을 항목별 텍스트와 정렬하는 방법을 모르겠습니다.
- 어떻게 배치해야 할지 모르겠어요입력그리고산출함수 아래에 단어가 있으므로 번호가 매겨지지 않고 함수와 정렬되지도 않습니다.
- 저는 그냥 수직 라인 블록 스타일보다는 세로 라인 블록 스타일을 더 좋아해요.조건:끝.
저는 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}