Composição de pseudocódigo no LaTeX

Não há consenso sobre a maneira ‘certa’ de compor pseudocódigo. Consequentemente, existe uma variedade de pacotes LaTeX a escolher para produzir listagens de pseudocódigo esteticamente agradáveis.

Pseudocódigo difere de listagem de programas reais por não possuir sintaxe e semântica estritas. Além disso, como o pseudocódigo é, supostamente, uma expressão clara de um algoritmo, ele pode ter que incorporar notações matemáticas, figuras, tabelas e outros recursos do LaTeX que não aparecem em linguagens convencionais de programação. A composição de listagens de programas é descrita em outro lugar.

Você pode, com certeza, criar seu próprio ambiente para compor pseudocódigo usando, por exemplo, os ambientes tabbing ou list — não é difícil, mas pode ser entediante. Por isso, vale a pena experimentar os pacotes a seguir, todos concebidos especificamente para composição de pseudocódigo.

O conjunto algorithms (que contém os pacotes algorithm e algorithmic, ambos necessários para o uso comum) tem uma interface simples e produz uma saída bastante interessante. Ele fornece primitivas para declarações, que podem conter comandos arbitrários do LaTeX, comentários, e um conjunto de construtos iterativos e condicionais. Essas primitivas podem ser facilmente redefinidas para produzir texto diferente na saída. Contudo, não há suporte para adicionar novas primitivas. A composição de pseudocódigo em si é realizada no algorithmic; o pacote algorithms usa os recursos do pacote float para numerar algoritmos sequencialmente, permitir algoritmos flutuantes, como figuras ou tabelas, e suportar a inclusão de uma Lista de Algoritmos na matéria da frente de um documento. Os pacotes contidos no conjunto algorithmicx são semelhantes, tanto em conceito quanto em formato de saída, aos do algorithmic , mas oferecem, adicionalmente, suporte para adicionar novas palavras-chave e alterar a formatação. Ele fornece o pacote algpseudocode que é (quase) um substituto direto do algorithmic. Outro pacote no conjunto, o algpascal, usa palavras-chave semelhantes às de Pascal, cria recuos de forma diferente do algpseudocode, e coloca argumentos de comando no modo de matemática em vez de no modo de texto. Não existe um ambiente flutuante, mas o algorithmicx, assim como o algorithmic, é compatível com o pacote algorithm. (Há relatos de dificuldade em definir novos comandos que se harmonizem com o pacote; infelizmente, o autor não está disponível para comentar.)

O pacote alg, assim como o algorithms, oferece um ambiente de algoritmo flutuante com todas as sutilezas subsequentes. No entanto, o alg pode legendar suas caixas flutuantes em uma variedade de linguagens (naturais). Além disso, o alg , diferentemente do algorithms, facilita a adição de novos construtos.

O pacote newalg tem uma interface um tanto semelhante à do algorithms, mas sua saída foi projetada para imitar a composição bastante agradável usada no livro “Introduction to Algorithms” de Corman, Leiserson, Rivest e Stein. Infelizmente, o newalg não suporta um ambiente flutuante ou qualquer customização da saída.

“O uso de Bona fide” do estilo do “Introduction to Algorithms” pode ser conseguido com o clrscode, do próprio Corman: este é o pacote que foi usado na segunda edição do livro.

Da mesma forma, o estilo do “Combinatorial Algorithms: Generation, Enumeration and Search” é suportado pelo pacote pseudocode , escrito pelos autores do livro. Ele tem o estilo comum tipo Pascal, e tem alguns construtos interessantes para o que se imagina como blocos de Pascal.

O algorithm2e é de longa data e é amplamente utilizado e recomendado. Ele carrega o pacote float para dar a opção de descrições flutuantes de algoritmo, mas você sempre escolher a opção “H” do float para que o algoritmo apareça “onde você o escrever”.

O uso do pacote program é um pouco diferente daquele dos outros pacotes. Ele tipografa programas no modo de matemática em vez de no modo de texto, e as quebras de linha são significativas. O program carece de um ambiente flutuante, mas numera algoritmos da mesma forma que o alg e o algorithms. Customização e extensão não são suportadas. A documentação do pacote program (tal como ela é) aparece em um arquivo program.msg na distribuição.

Nenhuma das opções acima é perfeita. Os fatores que devem influenciar sua escolha de pacote incluem o estilo de saída que você preferir, o quanto você precisa estender ou modificar o conjunto de palavras-chave, e se você precisa que os algoritmos flutuem como figuras e tabelas.

algorithm2e.sty
algorithm2e
algorithmicx bundle
algorithmicx
algorithms bundle
algorithms
alg.sty
alg
clrscode.sty
clrscode
float.sty
float
newalg.sty
newalg
program.sty
program
pseudocode.sty
pseudocode

This answer last edited: 2011-10-12


Do you have any question? Ask on: latex.net.br - we love qood questions!