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

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. A algorithm 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, a algorithm 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:

  1. algcompatible (teljesen kompatibilis az algoritmikus csomaggal),
  2. algpascal (egy formázott pascal program létrehozására törekszik, a pascal programot átalakíthat algpascal algoritmusleírássá néhány alapvető helyettesítési szabály mellett).
  3. 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 az algpseudocode elrendezést. Az algpseudocode használatához egyszerűen használja az \usepackage{algpseudocode} parancsot. Nem kell manuálisan betöltenie a algorithmicx csomagot, mivel ezt az algpseudocode.

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} 

Megjegyzések

  • Kedves, részletes válasz! Úgy hangzik, hogy a TL; DRTL; DR verzió: " use algorithmicx "? A vita nagyon világos arról, hogy miért, és miért szeretné a algorithmicx -t előnyben részesíteni a algorithmic helyett, de nem ' t sok összehasonlítást kínál a algorithm2e -vel. Ez azért van, mert kevésbé ismeri, mert köztudottan alacsonyabbrendű, vagy valami más?
  • Igen, igazad van: nem nagyon ismerem a algorithm2e. Szerintem hasonló funkcionalitást kell kínálniuk, de én inkább a algorithmicx szintaxisát preferálom. A válaszomat úgy szerkesztettem, hogy egyértelművé váljon, hogy ez csak az én (szubjektív) preferenciám.
  • Még akkor is, ha betölti a algorithmicx üzenetet, megértem, hogy még mindig be kell töltenie a algorithm is?
  • Kiterjedt válasz! A gyors döntés érdekében hasznos lehet az egyes csomagok lefordított kimeneteinek felvétele
  • Amikor elolvastam a algorithmicx részt, nem tettem ' azonnal megkapja, hogy a csomag használatához be kell tölteni az algpseudocode -t is. Lehet, hogy csak én ' én tapasztaltam ezt, különben talán valahova hozzá lehetne adni.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük