td
[Warning: This post is a backup recovery from my previous Wordpress blog. All content was automatically converted accessing a MySQL database using a Python script (details). Mostly are in Portuguese but if you are interest I can translate to English. If you found any problem dont’t hesitate to contact me in comments.]
Estou utilizando o Vim et all, para escrever o texto do meu trabalho de concluso de curso (conhecido tambm como trabalho de diploma, td), so basicamente as ferramentas:
- vim - editor
- aspell - correo ortogrfica
- bibtex - referencias textuais
- latex - processador de texto
- abntex - padro do documento
A norma (!) diz que as palavras estrangeiras devem ser escritas em itlico. Como um texto tcnico, h o uso frequente de palavras in english e o risco de deixar uma para trs grande. Como a motivao para no escrever maior, dispersei e acabei fazendo um programa que a partir de uma entrada (CSV) varre o texto e insere o itlico quando for necessrio. O prottipo at agora esta assim:
O cdigo ainda no est limpo para torn-lo acessvel num repositrio on-line. Alm disso, acho que h outras maneiras mais eficazes: sed, python, etc. Como no sei quando vou ter tempo para torn-lo til de verdade, vou colar aqui as duas partes do cdigo que achei interessante.
A alterao no texto simples: primeiro varremos o texto procurando pelo termo (*palavra um iteraror da QStringList) e associamos um ndice para cada ocorrncia (indexOf) adicionando em uma lista (pos um QList<int>). Antes de fazermos a troca (replace) comparamos com outra lista (blacklist) se essa insero j no est dentro de um \textit. Se isso no acontecer, pode existir casos do tipo: \textit{\textit{itlico}}.
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 construo da blacklist pode tambm 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); }
Concluso: esse post nem era para existir, mas quem sabe eu no invento algum programa que escreva o texto sozinho :P
At mais!