Comentários Diversos sobre uso do CWEB

Internacionalização

Acentuação

Para usar acentuação nos programas em CWEB, é recomendável usar o arquivo acentos.tex de macros feito pelo prof. Arnaldo Mandel. Desta maneira, pode-se fazer a digitação de arquivos com acentos (iso-8859-1), sem a necessidade de usar caracteres de controle do TeX.

Imagino que uma boa estratégia seja usá-lo no limbo do documento (i.e., antes de qualquer seção do documento ser definida) e, mais ainda, como argumento para o comando \input, em vez de usá-lo como uma diretiva @i, uma vez que, assim, pode-se colocá-lo em um diretório listado no conteúdo da variável TEXINPUTS, em vez de colocá-lo sempre no diretório corrente ou especificar um path hardcoded para o arquivo.

Para incluir uma entrada no índice do programa, a forma usual é digitar @^entrada@> no código fonte do CWEB. Entretanto, dados os problemas de internacionalização do TeX, se a entrada tiver acentos (e.g., a palavra árvores), ela não sairá no local desejado (no exemplo, junto das entradas iniciadas por a). O jeito de fazer isso funcionar é usar @:chave-índice}{entrada@>, onde chave-índice é o que o CWEB deve usar para ordenar a entrada entrada.

Tradução de Referências entre Seções

Para usar nomes traduzidos para referências das seções geradas no CWEB, é recomendável usar o arquivo de macros cwebmac-br.tex produzido pelo prof. Paulo Feofiloff;

Geração de Hyperlinks

Quando um arquivo .tex é gerado pelo cweave, o pdftex é capaz de fazê-lo ficar com hyperlinks (internos).

Para gerar hyperlinks externos (e.g., para a WWW), pode-se usar a macro \pdfURL definida pelo próprio CWEB, com o seguinte uso: \pdfURL{página do Rogério}{http://www.ime.usp.br/\TILDE/rbrito/}.

Há ainda um outro problema: quando o arquivo de macros para acentuações do prof. Arnaldo é usado, os nomes das seções que o pdftex para o índice ("bookmarks") do arquivo PDF ficam sem os caracteres acentuados. Isso parece ocorrer porque as macros do CWEB "limpam" os títulos a serem enviados para o arquivo PDF (talvez elas "limpem" demais?). Vide página 27 do manual do CWEB.

Inclusão de Ilustrações

Para incluir figuras ou gráficos em plain TeX (e, por conseqüência, em arquivos produzidos pelo CWEB), pode-se usar o pacote epsf, que vem incluso com o tetex (seu uso: \input epsf). Esta é, aliás, a estratégia que vi o próprio prof. Donald Knuth usar em um de seus programas em CWEB.

Há um problema, entretanto: as figuras devem ser geradas em formato PostScript (EPS, talvez?) em vez de PDF e não é possível (ou não parece ser) usar o pdftex nessa situação.

Em outras palavras, para gerar um arquivo PDF que contenha a figura, é necessário gerar primeiro o DVI e depois gerar o PDF. Dependendo do meio como o PDF foi gerado (e.g., com o uso do dvips e com a posterior utilização do ps2pdf), pode ser que os links do arquivo sejam todos perdidos.

Nesses casos a recomendação é a seguinte: após o arquivo .tex, digamos exemplo.tex, ter sido gerado pelo cweave, o comando tex "\let\pdf+ \input exemplo" deve ser usado e o arquivo DVI correspondente deve ser processado pelo dvipdfm (que também faz parte de versões novas do tetex).

Escrita de Programas em C++

O cweave fica confuso na hora de tipografar classes em C++, principalmente quando tais classes são subclasses de alguma classe base. Além disso, quando é feito uso de listas de inicialização em vez de atribuições nos construtores de uma classe, a formatação fica um tanto bagunçada. Nesses casos, o uso das diretivas @/ (para forçar quebra de linha), @; (para fazer o papel de um ponto-e-vírgula) e @+ (para proibir uma quebra de linha) pode ser apropriado.

O arquivo de macros do CWEB contém também algumas macros úteis: \CEE/, \CPLUSPLUS/, \UNIX/.