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

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 ja algorithm 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:

  1. algcompatible (täysin yhteensopiva algoritmipaketin kanssa),
  2. algpascal (pyrkii luomaan alustetun pascal-ohjelman, voit muuntaa pascal-ohjelman algpascal -algoritmikuvaukseksi, jossa on joitain peruskorvaussääntöjä).
  3. 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 ladata algorithmicx -pakettia manuaalisesti, koska tämän tekee algpseudocode.

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} 

Kommentit

  • ihana, yksityiskohtainen vastaus! Kuulostaa siltä, että TL; DRTL; DR-versio on: " use algorithmicx "? Keskustelusi on hyvin selvää siitä, miksi ja haluatko algorithmicx mieluummin kuin algorithmic, mutta ei ' t tarjoaa paljon vertailua malliin algorithm2e. Johtuuko tämä siitä, että tunnet sen vähemmän, koska sen tiedetään olevan huonompi tai jotain muuta?
  • Kyllä, olet oikeassa: En ole kovin perehtynyt algorithm2e. Mielestäni heidän pitäisi tarjota samanlaisia toimintoja, mutta pidän parempana algorithmicx -syntaksista. Muokkasin vastaustani tekemään selväksi, että se on vain (subjektiivinen) mieltymykseni.
  • Vaikka lataatkin algorithmicx, ymmärrän, että sinun on vielä ladattava algorithm myös?
  • Laaja vastaus! Nopean päätöksen tekemiseksi voi olla hyödyllistä sisällyttää kuvia jokaisen paketin kootuista tuotoksista.
  • Kun luin osan 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.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *