Zavarban vagyok az egyszerű “algoritmusok” írására szolgáló csomagok miatt. Túl sok lehetőség van, és zavaró, amikor mit kell használni. Például, ha a következőt használom: algpseudocode
, akkor nem adhatom hozzá algorithmic
, mert az már szerepel a algorithm
csomag.
Van-e végleges irányelv az egyszerűsített megközelítéshez? Minden javaslatot értékelni fogunk.
Megjegyzések
-
algpseudocode
aalgorithmicx
csomag része, aalgorithmic
néhány egyéb szolgáltatás biztosítása mellett. - Kapcsolódó: Programok nyomtatása a megfelelő szintaxissal
Válasz
TL; DR verzió:
- algoritmus – lebegő burkoló algoritmusokhoz.
- algoritmikus – első algoritmus-szedési környezet.
- algoritmicx – második algoritmus-típus ng környezet.
- algpseudocode –
algorithmicx
elrendezése . - algoritmus2e – harmadik algoritmus-szedési környezet.
A algorithmicx
-t a algpseudocode
-vel együtt használom, mivel ezek felülmúlják a algorithmic
-et. Azt hiszem, a algorithmicx
ugyanazt a funkcionalitást kínálja a algorithm2e
-hez képest, de szintaxisát egyértelműbbnek találom, mint a algorithm2e
.
Részletes verzió
algoritmus
Float burkoló algoritmusokhoz. Hasonló a table
vagy a figure
blokkparancsokhoz, amelyeket az asztal / ábra köré teker, hogy számot adjon neki és megakadályozza, hogy két oldalra osztva. A dokumentáció a következőket mondja ki:
Ha a szövegbe helyezzük anélkül, hogy lebegőbe foglalnánk őket A környezet
algorithmic
környezetek feloszthatók egy oldalhatáron, jelentősen rontva azok megjelenését. Ezenkívül hasznos, ha algoritmusokat számozunk referenciaként és algoritmuslistákat csatolunk a tartalomjegyzékhez. Aalgorithm
környezet célja, hogy megoldja ezeket az aggályokat azáltal, hogy lebegő környezetet biztosít az algoritmusok számára.
Példa:
\begin{algorithm} \caption{Algorithm caption} \label{alg:algorithm-label} \begin{algorithmic} ... Your pseudocode ... \end{algorithmic} \end{algorithm}
algoritmikus
Ez az a környezet, amelyben az álkódot írja. Előre definiált parancsok vannak a közös szerkezetekhez, például if
, while
, procedure
. Az összes parancs nagybetűs, pl. \IF{cond} ... \ELSE ...
. A 1 dokumentáció a következőket mondja:
A
algorithmic
környezet biztosítja az algoritmusok leírásához szükséges környezetet, aalgorithm
környezet pedig egy „lebegő” burkolatot biztosít az algoritmusok számára (algorithmic
vagy néhány mással megvalósítva) a felhasználó választása szerint más módszer). Két környezet biztosításának oka a felhasználó maximális rugalmasságának lehetővé tétele.
Példa:
\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}
algoritmikusx
Ez a csomag olyan, mint algorithmic
. Lehetővé teszi egyedi parancsok definiálását, amit algorithmic
nem lehet megtenni. Tehát ha nem akarja megírni (őrült) egyéni parancsait, akkor a algorithmic
. A algorithmicx
-t ugyanúgy használja, mint a algorithmic
-et, csak a szintaxis és a részletek némileg eltérnek. A részletekért lásd az alábbi példát. A dokumentáció ezt írja: , de makrókészletet ad meg egy ilyen parancskészlet definiálásához. Csak algoritmicxet használhat, és maga határozhatja meg a parancsokat, vagy használhatja az előre definiált parancskészletek egyikét
Példa:
\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
Ez csak egy elrendezés a algorithmicx
számára, amely a lehető leghasonlóbb algorithmic
. Vannak más elrendezések is, például:
-
algcompatible
(teljesen kompatibilis az algoritmikus csomaggal), -
algpascal
(egy formázott pascal program létrehozására törekszik, a pascal programot átalakíthatalgpascal
algoritmusleírássá néhány alapvető helyettesítési szabály mellett). -
algc
(csakúgy, mint az algpascal, de c esetén. Ez az elrendezés hiányos).
A dokumentáció ezt mondja:
Ha ismeri az algoritmikus csomagot, akkor megtalálja könnyen kapcsolható. Használhatja a régi algoritmusokat az
algcompatible
elrendezéssel, de az új algoritmusokhoz használja azalgpseudocode
elrendezést. Azalgpseudocode
használatához egyszerűen használja az\usepackage{algpseudocode}
parancsot. Nem kell manuálisan betöltenie aalgorithmicx
csomagot, mivel ezt azalgpseudocode
.
Lásd a algorithmicx
példát , a algpseudocode
elrendezést használja.
algoritmus2e
Ez egy másik algoritmuskörnyezet, csakúgy, mint algorithmic
vagy algorithmicx
. A dokumentációban ez áll: A algorithm
lebegő objektumszerű ábrákként definiálva van. Olyan makrókat biztosít, amelyek lehetővé teszik különféle kulcsszavak létrehozását, így előre definiált kulcsszavak kerülnek megadásra. Megváltoztathatja a kulcsszavak tipográfiáját is.
Példa:
\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
"? A vita nagyon világos arról, hogy miért, és miért szeretné aalgorithmicx
-t előnyben részesíteni aalgorithmic
helyett, de nem ' t sok összehasonlítást kínál aalgorithm2e
-vel. Ez azért van, mert kevésbé ismeri, mert köztudottan alacsonyabbrendű, vagy valami más?algorithm2e
. Szerintem hasonló funkcionalitást kell kínálniuk, de én inkább aalgorithmicx
szintaxisát preferálom. A válaszomat úgy szerkesztettem, hogy egyértelművé váljon, hogy ez csak az én (szubjektív) preferenciám.algorithmicx
üzenetet, megértem, hogy még mindig be kell töltenie aalgorithm
is?algorithmicx
részt, nem tettem ' azonnal megkapja, hogy a csomag használatához be kell tölteni azalgpseudocode
-t is. Lehet, hogy csak én ' én tapasztaltam ezt, különben talán valahova hozzá lehetne adni.