Nie mam pojęcia co do pakietów do pisania prostych „algorytmów”. Jest zbyt wiele opcji, a kiedy ich użyć, jest mylące. Na przykład, jeśli używam algpseudocode, nie mogę dodać algorithmic, ponieważ jest już uwzględniony w algorithm.

Czy istnieją jakieś ostateczne wytyczne dotyczące usprawnionego podejścia? Wszelkie sugestie będą mile widziane.

Komentarze

Odpowiedź

TL; Wersja DR:

  • algorytm – opakowanie typu float dla algorytmów.
  • algorytmiczne – pierwsze środowisko do składania algorytmu.
  • algorytmicx – drugi typ algorytmuetti ng środowiska.
  • algpseudocode – układ dla algorithmicx .
  • algorytm2e – trzecie środowisko składu algorytmu.

Używam algorithmicx z algpseudocode, ponieważ są one lepsze niż algorithmic. Myślę, że algorithmicx oferuje tę samą funkcjonalność co algorithm2e, ale uważam, że jego składnia jest jaśniejsza niż ta dostarczona przez algorithm2e.

Szczegółowa wersja

algorytm

Opakowanie typu float dla algorytmów. Jest podobny do poleceń blokowych table lub figure, które owijasz wokół stołu / figury, aby nadać mu numer i zapobiec jego podzielone na dwie strony. Dokumentacja mówi:

Po umieszczeniu w tekście bez umieszczenia w postaci pływającej środowisko algorithmic środowiska mogą być podzielone poza granice strony, co znacznie zmniejsza ich wygląd. Ponadto przydatne jest numerowanie algorytmów w celu odniesienia się do nich i dołączania list algorytmów do spisu treści. Środowisko algorithm ma na celu rozwiązanie tych problemów poprzez zapewnienie swobodnego środowiska dla algorytmów.

Przykład:

\begin{algorithm} \caption{Algorithm caption} \label{alg:algorithm-label} \begin{algorithmic} ... Your pseudocode ... \end{algorithmic} \end{algorithm} 

algorytmiczne

To jest środowisko, w którym piszesz swój pseudokod. Masz predefiniowane polecenia dla typowych struktur, takich jak if, while, procedure. Wszystkie polecenia są pisane wielkimi literami, np. \IF{cond} ... \ELSE .... Dokumentacja 1 mówi:

algorithmic zapewnia środowisko do opisywania algorytmów, a środowisko algorithm zapewnia opakowanie „float” dla algorytmów (zaimplementowane przy użyciu algorithmic lub innych inna metoda według uznania użytkownika). Powodem udostępnienia dwóch środowisk jest zapewnienie użytkownikowi maksymalnej elastyczności.

Przykład:

\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} 

gorithmicx

Ten pakiet jest jak algorithmic zaktualizowany. Umożliwia zdefiniowanie niestandardowych poleceń, których algorithmic nie można zrobić. Więc jeśli nie chcesz pisać swoich (szalonych) niestandardowych poleceń, wystarczy algorithmic. Używasz algorithmicx w taki sam sposób jak algorithmic, tylko składnia i szczegóły są nieco inne. Zobacz przykład poniżej, aby uzyskać szczegółowe informacje. Dokumentacja mówi:

Sam pakiet algorytmicx nie definiuje żadnych poleceń algorytmicznych , ale podaje zestaw makr do zdefiniowania takiego zestawu poleceń. Możesz używać tylko Algorytmicx i samodzielnie definiować polecenia, lub możesz użyć jednego z predefiniowanych zestawów poleceń

Przykład:

\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

To jest tylko układ dla algorithmicx, który stara się być jak najbardziej podobny do algorithmic. Istnieją również inne układy, takie jak:

  1. algcompatible (w pełni kompatybilny z pakietem algorytmicznym),
  2. algpascal (ma na celu utworzenie sformatowanego programu pascal, możesz przekształcić program pascal w opis algorytmu algpascal z podstawowymi zasadami podstawiania).
  3. algc (tak jak algpascal, ale dla c. Ten układ jest niekompletny).

dokumentacja mówi:

Jeśli znasz pakiet algorytmiczny, znajdziesz go łatwe do zmiany. Możesz użyć starych algorytmów z układem algcompatible, ale w przypadku nowych algorytmów użyj układu algpseudocode. Aby użyć algpseudocode, po prostu użyj \usepackage{algpseudocode}. Nie musisz ręcznie ładować pakietu algorithmicx, ponieważ robi to algpseudocode.

Zobacz przykład dla algorithmicx , używa układu algpseudocode.


algorytm2e

To jest inne środowisko algorytmu, takie jak algorithmic lub algorithmicx. Dokumentacja mówi:

Algorithm2e to środowisko do pisania algorytmów w LaTeX2e. algorithm jest definiowany jako obiekt pływający, taki jak figury. Udostępnia makra, które umożliwiają tworzenie różnych rodzajów słów kluczowych, dzięki czemu dostarczany jest zestaw wstępnie zdefiniowanych słów kluczowych. Możesz także zmienić typografię słów kluczowych.

Przykład:

\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} 

Komentarze

  • Urocza, szczegółowa odpowiedź! Wygląda jak wersja TL; DRTL; DR: " użyj algorithmicx "? Twoja dyskusja jest bardzo jasna na temat tego, dlaczego i czy wolisz algorithmicx zamiast algorithmic, ale nie ' t oferuje wiele porównań do algorithm2e. Czy to dlatego, że gorzej go znasz, ponieważ powszechnie wiadomo, że jest gorszy, czy coś innego?
  • Tak, masz rację: niezbyt dobrze znam algorithm2e. Myślę, że powinny oferować podobną funkcjonalność, ale wolę składnię algorithmicx. Zmieniłem swoją odpowiedź, aby wyjaśnić, że jest to tylko moje (subiektywne) preferencje.
  • Nawet jeśli załadujesz algorithmicx Rozumiem, że nadal musisz załadować algorithm też?
  • Obszerna odpowiedź! W szybkim podjęciu decyzji pomocne może być dołączenie obrazów skompilowanych wyników dla każdego pakietu
  • Kiedy przeczytałem sekcję o algorithmicx, nie ' t od razu otrzymaj, że algpseudocode również powinno zostać załadowane, aby móc korzystać z pakietu. Może ' jestem jedyną osobą, która tego doświadczyła, w przeciwnym razie może to zostać gdzieś dodane.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *