mai
10
2010

td

Estou utilizando o Vim et all, para escrever o texto do meu trabalho de conclusão de curso (conhecido também como trabalho de diploma, td), são basicamente as ferramentas:

  1. vim – editor
  2. aspell – correção ortográfica
  3. bibtex – referencias textuais
  4. latex – processador de texto
  5. abntex – padrão do documento

A norma (!) diz que as palavras estrangeiras devem ser escritas em itálico. Como é um texto técnico, há o uso frequente de palavras in english e o risco de deixar uma para trás é grande. Como a motivação para não escrever é maior, dispersei e acabei fazendo um programa que a partir de uma entrada (CSV) varre o texto e insere o itálico quando for necessário. O protótipo até agora esta assim:

O código ainda não está limpo para torná-lo acessível num repositório on-line. Além disso, acho que há outras maneiras mais eficazes: sed, python, etc. Como não sei quando vou ter tempo para torná-lo útil de verdade, vou colar aqui as duas partes do código que achei interessante.

A alteração no texto é simples: primeiro varremos o texto procurando pelo termo (*palavra é um iteraror da QStringList) e associamos um índice para cada ocorrência (indexOf) adicionando em uma lista (pos é um QList<int>). Antes de fazermos a troca (replace) comparamos com outra lista (blacklist) se essa inserção já não está dentro de um \textit. Se isso não acontecer, pode existir casos do tipo: \textit{\textit{itálico}}.

while ((i=s.indexOf(*palavra,i+1)) != -1)
	pos << i;

for (index=0, offset=0; index < pos.length() ; index++)
	if (blacklist.contains(pos.at(index)) == false) {
		str = "\\textit{" + *palavra + "}";
		s.replace(pos.at(index)+offset,(*palavra).length(),str);
		offset += 9;
	}

A construção da blacklist pode também ser aproveitada para evitar outros contextos, como notas de rodapé. Apenas trocar o \\textit pelo \\footnote.

while ((a=s.indexOf("\\textit{",b+1)) != -1) {
	b = s.indexOf("}",a);
	if ((c=s.indexOf(*palavra,a)) < b)
		blacklist << s.indexOf(*palavra,a);
}

Conclusão: esse post nem era para existir, mas quem sabe eu não invento algum programa que escreva o texto sozinho :P

Até mais!

posted in unifei by Tiago Maluta

Follow comments via the RSS Feed | Deixe um comentário | Trackback URL

Leave Your Comment