Sunt confuz cu privire la pachetele pentru scrierea „algoritmilor” simpli. Există prea multe opțiuni și este confuz când trebuie să folosiți ce. De exemplu, dacă folosesc algpseudocode
, atunci nu pot „adăuga algorithmic
deoarece este deja inclus în algorithm
pachet.
Există linii directoare definitive pentru o abordare simplificată? Orice sugestie va fi apreciată.
Comentarii
-
algpseudocode
face parte din pachetulalgorithmicx
, vă oferă o versiune îmbunătățită aalgorithmic
în afară de furnizarea altor funcții. - Corelate: Imprimați programe cu sintaxa corespunzătoare
Răspuns
TL; versiune DR:
- algoritm – float wrapper pentru algoritmi.
- algoritmic – primul mediu de tipare a algoritmului.
- algorithmicx – al doilea algoritm typesetti Mediu înconjurător.
- algpseudocode – aspect pentru
algorithmicx
. - algorithm2e – al treilea mediu de tipare a algoritmului.
Folosesc algorithmicx
cu algpseudocode
deoarece sunt superioare algorithmic
. Cred că algorithmicx
oferă aceeași funcționalitate comparativ cu algorithm2e
, dar sintaxul său este mai clar decât cel oferit de algorithm2e
.
Versiune detaliată
algoritm
Float wrapper pentru algoritmi. Este similar cu comenzile de blocare table
sau figure
, pe care le înfășurați în jurul mesei / cifrei pentru a-i da un număr și pentru a preveni ca acesta să fie împărțit pe două pagini. Documentația spune:
Atunci când este plasat în text fără a fi încapsulat într-un flotant mediile
algorithmic
mediile pot fi împărțite peste o limită a paginii, afectând în mare măsură aspectul lor. În plus, este util să aveți algoritmi numerotați pentru referință și ca listele de algoritmi să fie anexate la lista de conținut. Mediulalgorithm
este menit să răspundă acestor probleme oferind un mediu plutitor pentru algoritmi.
Exemplu:
\begin{algorithm} \caption{Algorithm caption} \label{alg:algorithm-label} \begin{algorithmic} ... Your pseudocode ... \end{algorithmic} \end{algorithm}
algoritmic
Acesta este mediul în care vă scrieți pseudocodul. Aveți comenzi predefinite pentru structuri comune precum if
, while
, procedure
. Toate comenzile sunt cu majuscule, de ex. \IF{cond} ... \ELSE ...
. Documentația 1 spune:
algorithmic
oferă un mediu pentru descrierea algoritmilor, iar mediulalgorithm
oferă un wrapper „float” pentru algoritmi (implementat utilizândalgorithmic
sau unele altă metodă la alegerea utilizatorilor). Motivul pentru care sunt oferite două medii este de a permite utilizatorului flexibilitate maximă.
Exemplu:
\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
Acest pachet este ca algorithmic
actualizat. Vă permite să definiți comenzi personalizate, ceea ce algorithmic
nu poate face. Deci, dacă nu doriți să scrieți comenzile personalizate (nebunești), veți fi bine cu algorithmic
. Folosiți algorithmicx
în același mod în care utilizați algorithmic
, doar sintaxa și detaliile sunt ușor diferite. Vedeți exemplul de mai jos pentru detalii. Documentația spune:
Pachetul algoritmicx în sine nu definește nicio comandă algoritmică , dar oferă un set de macrocomenzi pentru a defini un astfel de set de comenzi. Puteți utiliza numai algorithmicx și puteți defini comenzile dvs. sau puteți utiliza unul dintre seturile de comenzi predefinite
Exemplu:
\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
Acesta este doar un aspect pentru algorithmicx
care încearcă să fie cât mai similar posibil pentru algorithmic
. Există, de asemenea, alte aspecte, cum ar fi:
-
algcompatible
(complet compatibil cu pachetul algoritmic), -
algpascal
(își propune să creeze un program pascal formatat, puteți transforma un program pascal într-o descriere a algoritmuluialgpascal
cu câteva reguli de substituție de bază). -
algc
(la fel ca algpascal, dar pentru c. Acest aspect este incomplet).
documentația spune:
Dacă sunteți familiarizat cu pachetul algoritmic, îl veți găsi ușor de schimbat. Puteți utiliza algoritmii vechi cu aspectul
algcompatible
, dar folosiți aspectulalgpseudocode
pentru algoritmi noi. Pentru a utilizaalgpseudocode
, pur și simplu utilizați\usepackage{algpseudocode}
. Nu este nevoie să încărcați manual pachetulalgorithmicx
, deoarece acest lucru este realizat dealgpseudocode
.
Consultați exemplul pentru algorithmicx
, folosește aspectul algpseudocode
.
algorithm2e
Acesta este un alt mediu de algoritm la fel ca algorithmic
sau algorithmicx
. Documentația spune:
Algorithm2e este un mediu pentru scrierea algoritmilor în LaTeX2e. Un
algorithm
este definit ca figură ca obiect plutitor. Oferă macrocomenzi care vă permit să creați diferite tipuri de cuvinte cheie, astfel se oferă un set de cuvinte cheie predefinite. De asemenea, puteți modifica tipografia cuvintelor cheie.
Exemplu:
\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}
algorithmicx
"? Discuția dvs. este foarte clară despre motivul și dacă, să preferațialgorithmicx
decâtalgorithmic
, dar nu ' t oferă multă comparație cualgorithm2e
. Se întâmplă asta pentru că îl cunoașteți mai puțin, pentru că este bine cunoscut că este inferior sau altceva?algorithm2e
. Cred că ar trebui să ofere funcționalități similare, dar prefer sintaxaalgorithmicx
. Mi-am editat răspunsul pentru a clarifica faptul că este doar preferința mea (subiectivă).algorithmicx
Înțeleg că tot trebuie să încărcațialgorithm
de asemenea?algorithmicx
, nu am ' obțineți imediat caalgpseudocode
să fie încărcat și pentru a utiliza pachetul. Poate că eu ' sunt singurul care a experimentat asta, altfel ar putea fi adăugat undeva.