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
-
algpseudocode
jest częścią pakietualgorithmicx
i zapewnia ulepszoną wersjęalgorithmic
oprócz innych funkcji. - Powiązane: Drukuj programy z odpowiednią składnią
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. Środowiskoalgorithm
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 środowiskoalgorithm
zapewnia opakowanie „float” dla algorytmów (zaimplementowane przy użyciualgorithmic
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:
-
algcompatible
(w pełni kompatybilny z pakietem algorytmicznym), -
algpascal
(ma na celu utworzenie sformatowanego programu pascal, możesz przekształcić program pascal w opis algorytmualgpascal
z podstawowymi zasadami podstawiania). -
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ładualgpseudocode
. Aby użyćalgpseudocode
, po prostu użyj\usepackage{algpseudocode}
. Nie musisz ręcznie ładować pakietualgorithmicx
, ponieważ robi toalgpseudocode
.
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}
algorithmicx
"? Twoja dyskusja jest bardzo jasna na temat tego, dlaczego i czy woliszalgorithmicx
zamiastalgorithmic
, ale nie ' t oferuje wiele porównań doalgorithm2e
. Czy to dlatego, że gorzej go znasz, ponieważ powszechnie wiadomo, że jest gorszy, czy coś innego?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.algorithmicx
Rozumiem, że nadal musisz załadowaćalgorithm
też?algorithmicx
, nie ' t od razu otrzymaj, żealgpseudocode
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.