Como mostrado anteriormente (veja Exemplo 3) o DocBook é um excelente aliado para elaborar documentação em trechos de código, funções, etc. facilitando a elaboração de comentários em linhas ou grupos de linhas específicos.
Há a possibilidade de ter as linhas automaticamente numeradas, ao invés de se usar o recurso de chamada (callout) de comentário. Para isso basta se acrescentar um parâmetro a mais no comando e a alteração se refletirá na próxima conversão.
int main(int argc, char *agrv[]) { FILE *input_file; FILE *output_file; char caractere; char fim_de_caractere; int tamanho_caractere; char appendix[5] = ".dos"; char *output_name; char *input_name;Algo ainda mais interessante para se fazer é incluir o arquivo de código automaticamente. O código abaixo veio diretamente do arquivo de programa e, portanto, nÃo há nenhuma marcação adicional neste:
Exemplo 5. Códigos de programas inseridos diretamente do arquivo fonte
#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { FILE *input_file; FILE *output_file; char caractere; char fim_de_caractere; char fim_cr = 13; char fim_lf = 10; int tamanho_caractere; char appendix[5] = ".dos"; char *output_name; char *input_name; if (argc < 2) { puts("Você precisa passar o nome de um arquivo.\n"); return 0; } /* Creates the output filename based on the input plus a suffix. */ input_name = argv[1]; output_name = strcat(input_name, appendix); /* Open input and output files. */ if ((output_file = fopen(output_name, "w")) == NULL) { fprintf(stderr, "Cannot open %s\n", output_name); return 0; } if ((input_file = fopen(input_name, "r")) == NULL) { fprintf(stderr, "Cannot open %s\n", input_name); return 0; } /* Varre a caractere procurando pelo LF */ caractere = fgetc(input_file); printf(" Antes... %c \n\n", caractere); /* depuração */ while ( caractere != EOF ) { printf("Oi!!!\n\n\n"); /* depuração */ if ( caractere == fim_lf ) { /* Se achou o LF acrescenta antes o CR */ fputc(fim_cr, output_file); } /* Grava a caractere alterada ou não */ fputc(caractere, output_file); /* Lê o próximo caractere */ caractere = fgetc(input_file); } fclose(output_file); fclose(input_file); } |
Como se vê, as utilidades do DocBook são diversas tanto para a documentação de programas quanto para se escrever livros.