Olen hämmentynyt paketeista yksinkertaisten ”algoritmien” kirjoittamiseksi. Vaihtoehtoja on liikaa, ja on hämmentävää, kun mitä käytetään. Esimerkiksi, jos käytän algpseudocode
, en voi lisätä t algorithmic
, koska se sisältyy jo osioon algorithm
-paketti.
Onko virtaviivaiseen lähestymistapaan olemassa tarkkoja ohjeita? Kaikki ehdotukset otetaan huomioon.
Kommentit
-
algpseudocode
on osaalgorithmicx
-pakettia, se antaa sinulle parannetun versionalgorithmic
joidenkin muiden ominaisuuksien tarjoamisen lisäksi. - Liittyvät: Tulosta ohjelmat oikean syntaksin avulla
vastaus
TL; DR-versio:
- algoritmi – kellukääre algoritmeille.
- algoritminen – ensimmäisen algoritmin lajitteluympäristö.
- algoritmicx – toinen algoritmi Typetti ng-ympäristö.
- algpseudokoodi –
algorithmicx
- algoritmi2e – kolmas algoritmien ladontaympäristö.
Käytän algorithmicx
kanssa algpseudocode
, koska ne ovat parempia kuin algorithmic
. Mielestäni algorithmicx
tarjoaa saman toiminnallisuuden kuin algorithm2e
, mutta mielestäni sen syntakse on selkeämpi kuin algorithm2e
.
Yksityiskohtainen versio
algoritmi
Kelluva kääre algoritmeille. Se on samanlainen kuin lohkokomennot table
tai figure
, jotka kiertelet pöydän / kuvan ympärille saadaksesi sille numeron ja estäessä sitä jaettu kahdelle sivulle. -dokumentaatiossa sanotaan:
Kun se sijoitetaan tekstiin ilman kotelointia kelluvaan osaan ympäristö
algorithmic
ympäristöt voidaan jakaa sivurajan yli, mikä vähentää huomattavasti niiden ulkonäköä. Lisäksi on hyödyllistä, että algoritmit on numeroitu viitteeksi ja sisällysluetteloon liitetään algoritmiluettelot.algorithm
-ympäristön on tarkoitus vastata näihin huolenaiheisiin tarjoamalla kelluva ympäristö algoritmeille.
Esimerkki:
\begin{algorithm} \caption{Algorithm caption} \label{alg:algorithm-label} \begin{algorithmic} ... Your pseudocode ... \end{algorithmic} \end{algorithm}
algoritminen
Tässä ympäristössä kirjoitat pseudokoodisi. Sinulla on ennalta määritetyt komennot tavallisille rakenteille, kuten if
, while
, procedure
. Kaikki komennot ovat isoja, esim. \IF{cond} ... \ELSE ...
. Dokumentaatiossa 1 sanotaan:
algorithmic
ympäristö tarjoaa ympäristön algoritmien kuvaamiseen jaalgorithm
ympäristö tarjoaa ”float” -kääreen algoritmeille (toteutettu käyttämälläalgorithmic
tai jotakin muu menetelmä käyttäjien valinnan mukaan). Kahden ympäristön tarjoamisen syy on antaa käyttäjälle maksimaalinen joustavuus.
Esimerkki:
\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}
algoritmicx
Tämä paketti on kuin päivitetty algorithmic
. Sen avulla voit määrittää mukautettuja komentoja, joita algorithmic
ei voi tehdä. Joten jos et halua kirjoittaa (hulluja) mukautettuja komentojasi, sinä olet kunnossa algorithmic
. Käytät algorithmicx
samalla tavalla kuin algorithmic
, vain syntaksissa ja yksityiskohdissa on hieman eroja. Katso lisätietoja alla olevasta esimerkistä. -dokumentaatiossa sanotaan:
Pakettialgoritmi itse ei määritä mitään algoritmisia komentoja , mutta antaa joukon makroja tällaisen komentojoukon määrittelemiseksi. Voit käyttää vain algoritmiikkaa ja määritellä komennot itse, tai voit käyttää jotakin ennalta määritetyistä komentojoukoista
Esimerkki:
\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}
algpseudokoodi
Tämä on vain algorithmicx
-asettelua, joka yrittää olla mahdollisimman samanlainen algorithmic
. On myös muita asetteluja, kuten:
-
algcompatible
(täysin yhteensopiva algoritmipaketin kanssa), -
algpascal
(pyrkii luomaan alustetun pascal-ohjelman, voit muuntaa pascal-ohjelmanalgpascal
-algoritmikuvaukseksi, jossa on joitain peruskorvaussääntöjä). -
algc
(aivan kuten algpascal, mutta c. Tämä asettelu on epätäydellinen).
dokumentaatio sanoo:
Jos olet perehtynyt algoritmipakettiin, löydät sen helppo vaihtaa. Voit käyttää vanhoja algoritmeja
algcompatible
-asettelun kanssa, mutta uusille algoritmeille käytäalgpseudocode
-asettelua. Jos haluat käyttääalgpseudocode
, käytä vain\usepackage{algpseudocode}
. Sinun ei tarvitse ladataalgorithmicx
-pakettia manuaalisesti, koska tämän tekeealgpseudocode
.
Katso esimerkki algorithmicx
, se käyttää algpseudocode
-asettelua.
algoritmi2e
Tämä on toinen algoritmiympäristö, kuten algorithmic
tai algorithmicx
. -dokumentaatiossa sanotaan:
Algoritmi2e on ympäristö algoritmien kirjoittamiseen LaTeX2e: ssä.
algorithm
määritellään kelluvana objektina, kuten kuviot. Se tarjoaa makroja, joiden avulla voit luoda erilaisia avainsanoja, jolloin annetaan joukko ennalta määritettyjä avainsanoja. Voit myös muuttaa avainsanojen typografiaa.
Esimerkki:
\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
"? Keskustelusi on hyvin selvää siitä, miksi ja haluatkoalgorithmicx
mieluummin kuinalgorithmic
, mutta ei ' t tarjoaa paljon vertailua malliinalgorithm2e
. Johtuuko tämä siitä, että tunnet sen vähemmän, koska sen tiedetään olevan huonompi tai jotain muuta?algorithm2e
. Mielestäni heidän pitäisi tarjota samanlaisia toimintoja, mutta pidän parempanaalgorithmicx
-syntaksista. Muokkasin vastaustani tekemään selväksi, että se on vain (subjektiivinen) mieltymykseni.algorithmicx
, ymmärrän, että sinun on vielä ladattavaalgorithm
myös?algorithmicx
, en ' saa heti, ettäalgpseudocode
tulisi myös ladata, jotta pakettia voidaan käyttää. Ehkä minä olen ' ainoa, joka kokenut sen, muuten se voidaan ehkä lisätä johonkin.