Tabulações versus espaços nas listagens: qual é a diferença e devo me importar?

Tabulações versus espaços nas listagens: qual é a diferença e devo me importar?

Esta é uma pergunta complementar paraProblema com o pacote Listings relacionado à quebra de linha e alinhamento incorreto. Por que tenho problemas ao copiar e colar código dentro do lstlistingambiente? Devo ter cuidado com tabulações ou espaços nas listagens? E se sim, então por que isso? Como exatamente as tabulações e espaços afetam o espaçamento horizontal no código-fonte composto com o listingspacote?

Responder1

Existem outros caracteres invisíveis além do caractere de espaço (código ASCII 32); um deles é otabulador, também conhecido comocaractere de tabulação(código ASCII 9), que são usados ​​em alguns tipos de arquivos de origem; mais notavelmente, talvez, em makefiles. Para obter mais informações sobre caracteres invisíveis em geral, remeto-vos para oPágina da Wikipedia sobre caracteres de controle ASCII.

O listingspacote trata caracteres de espaço e tabuladores de maneira muito diferente, conforme explicado na subseção 2.5 da listingsdocumentação.

Você poderá obter resultados inesperados se suas fontes contiverem tabuladores. O pacote pressupõe paradas de tabulação nas colunas 9, 17, 25, 33 e assim por diante. Isso é predefinido via tabsize=8. Se você alterar o oito para o número n, obterá paradas de tabulação nas colunas n+1,2n+1,3n+1 e assim por diante.

Se você não quer surpresas e se seu código precisa apenas de espaços e sem tabulações, manter os espaços e evitar tabulações por completo é provavelmente uma boa ideia.

Suponho que você esteja usando um IDE LaTeX, como o texmaker, em vez de um editor de texto, como o emacs ou o vim. Seu IDE provavelmente insere um caractere de tabulação quando a Tabtecla é pressionada por padrão, mas deve haver uma maneira de configurá-lo para inserir um número fixo de espaços (normalmente 2,4 ou 8). No entanto, tal opção pode não ser retroativa; em outras palavras, os caracteres de tabulação que já estavam presentes no seu arquivo não podem ser substituídos por espaços simplesmente ativando essa opção. Talvez seja necessário pesquisar e substituir tabulações por espaços para se livrar de todas elas. Isso provavelmente está sujeito a erros, mas você pode não ter outra opção se usar um IDE. No entanto...

Editar(após o comentário de Barbara Beeton): ... editores como emacs e vim têm uma função integrada para substituir eficientemente todas as guias por espaços no buffer atual. No emacs, você tem untabify; no vim, você tem retab(vejaesse).

insira a descrição da imagem aqui

Bons editores de texto também permitem criar caracteres invisíveis (tabuladores, novas linhas, etc.)visível, para que você saiba com que tipo de personagem invisível está lidando. Na imagem acima (captura de tela de um buffer vim), o símbolo indica uma tabulação e o ¬símbolo indica uma nova linha.

Esses são mais dois motivos para deixar seu IDE de lado e começar a usar um editor de texto:)

Atualizar: texmaker 4.2 (01/05/2014) agora permite que usuários avançadosestender as funcionalidades do IDEexecutando código Javascript personalizado de dentro. Isso abre a porta para um script "retab", mas pressupõe que você conheça um pouco de Javascript.

informação relacionada