Categorias
Artigos

O Futuro do LaTeX, Parte II — Por Que LaTeX

Na primeira parte desta série, falamos da importância de linguagens de marcação.

Vamos analisar qual é o nosso problema e por que estou gastando tempo nisso. O seu computador contém arquivos em inúmeros formatos; alguns podem ser abertos por apenas um programa (ou um pequeno número deles). Geralmente se identifica o tipo de arquivo pela extensão do nome (algo do tipo nome_do_arquivo.extensao). Assim, o seu navegador não sabe o que fazer com um arquivo .xls, enquanto que o Excel não consegue abrir uma apresentação .ppt do PowerPoint.

Um arquivo é apenas uma sequência de bytes, um conjunto de 0 e 1 que você já deve ter visto em algum filme de ficção científica. A questão é como interpretar essa sequência, transformando-a em informação útil ao usuário. Os 0 e 1 de um arquivo do Word, por exemplo, contém todas as instruções sobre o texto, as imagens, as margens, as tabelas, as fontes etc

O formato mais básico de todos é um arquivo de texto puro (plain text). Um arquivo de texto puro contém apenas bytes que representam caracteres, sem nenhuma informação adicional. Os programas ainda precisam saber converter os bytes em letras, mas é só isso; é um formato bem documentado, aberto, e praticamente todos os sistemas lidam bem com texto puro. Se o leitor que usa Windows criar uma nota, salvar como um .txt e me mandar, posso abrir esse arquivo no meu iPhone. Existem alguns detalhes de apresentação que são característica do editor; a fonte na qual o leitor escreveu a sua nota não é a mesma na qual eu vou ler, porque esta informação não está embutida no arquivo. O programa lê o texto e o apresenta numa fonte arbitrária, ou até numa outra cor.

Mas, se o texto puro não contém formatação, como, usando esse tipo de arquivo leve e portável, produzir obras complexas como livros, sites, artigos, relatórios?

Fazemos isso com linguagens de marcação. Usando comandos em texto, marcamos regiões do nosso arquivo para serem formatadas; um programa então processa esse arquivo, interpreta os comandos e cria um arquivo final destinado à visualização.


No primeiro texto falamos de HTML e páginas da web. Agora vamos falar da produção de documentos científicos, com sua divisão em capítulos e seções e uso de equações, figuras, tabelas.

O formato mais usado na Academia para isso é o LaTeX, que é uma extensão de uma linguagem chamada TeX, que por sua foi criada por um matemático especificamente para produção de livros sobre programação e, não por acaso, é especialmente adequado para criação de equações.

(Se o leitor já está familiarizado com a linguagem e quer saber sobre o que eu acho do tal futuro do LaTeX, por favor aguarde o próximo texto. Primeiramente darei uma breve explicação do que é LaTeX e por que o uso.)

Um documento em LaTeX tem a seguinte forma:

\documentclass{article}

\usepackage[utf8]{inputenc}

\title{O Futuro do \LaTeX}
\author{Fábio}

\begin{document}

\maketitle

\section{Introdução}

O \LaTeX{} é ótimo para fazer equações, como essa na mesma linha $E = m c^2$ ou esta em um parágrafo a parte:

\begin{equation}
    a^2 + b^2 = c^2
\end{equation}

\end{document}

Repare na estrutura lógica desse trecho. Definimos a classe de um documento, (e existem diversas, como book, report, entre outras, que podem até ser criadas pelo usuário), definimos um título e um autor, damos um comando para um começo de seção. No primeiro parágrafo, colocamos uma equação, e depois criamos outra separada. Por último, fechamos um documento.

Vale repetir: isto é apenas texto. Na versão final, o título vai estar em um estilo, o cabeçalho do capítulo outro, o parágrafo normal em outro. As equações vão ter uma fonte diferente e assim por diante.

Como produzir esta versão final? Além de ser uma linguagem, existe um programa chamado LaTeX que compila um arquivo contendo um texto válido. Este post já está muito comprido, mas o leitor pode facilmente encontrar instruções de como fazer isso da maneira mais fácil na sua plataforma (Windows, Mac, Linux, até iOS). O resultado é algo assim, um PDF de onde tirei este screenshot:

Este documento é muito simples e não se compara à complexidade de uma dissertação. Existem muitas outras coisas que o LaTeX pode fazer, em especial citações. Se o leitor já fez algum trabalho acadêmico, sabe a dor que é produzir referências bibliográficas adequadamente formatadas; com o LaTeX, você cria um arquivo de bibliografia, separado do texto, contendo todas as suas referências escritas numa linguagem própria (BibTeX). Depois, cria um pacote dizendo como processar essa linguagem e produzir uma referência (como “AUTOR, Título. Local: Editora, Ano”), e, claro, existem inúmeros pacotes prontos, inclusive para ABNT. Assim, no texto, você precisa apenas escrever \cite{fortkamp}, por exemplo, e o LaTeX e BibTeX formatam a referência para você.

Isto é só uma introdução e não espero que o leitor aprenda a usar o LaTeX. Quero que fique claro apenas isso: é uma linguagem de marcação especializada para criar documentos científicos. Usando texto puro, é possível mesclar o texto que estou escrevendo com comandos que vão ser processados depois, gerando um arquivo pronto para ser distribuído.


Mas afinal, por que eu uso isso? Para repetir a pergunta que eu ouço muito, por que eu não uso o Word como uma pessoa normal?

Confiança é, para mim, um aspecto importante de como usar a tecnologia, e o Word simplesmente não é confiável. Eu já perdi muitos trabalhos feitos no Word, depois de ele travar quando eu adiciono uma figura muito grande, e isso é inaceitável. Além disso, se criar equações complicadas em LaTeX é difícil, no Word é impossível.

Quando estou escrevendo um texto em LaTeX, eu não clico em nenhum menu para inserir figura, ou deixar um pedaço negrito, ou nada disso. Vou repetir mais uma vez porque sou chato: é apenas texto. Você não insere tabelas no arquivo fonte; você dá um comando para o processador LaTeX produzir uma tabela ali. Com a prática (e com um livro de referência do lado para consultar), fica muito fácil criar uma equação complexa, digitando apenas comandos.

Além disso, o LaTeX separa a formatação da escrita. No exemplo acima, eu dou um comando para criar um título, mas não existe nenhuma informação de como o título vai estar formatado; isso é papel da classe do documento. Como falei, é possível criar classes próprias (existe uma ótima que formata todo o documento já seguindo a ABNT). Essa filosofia desencoraja o hábito nada produtivo de ficar “ajustando” a fonte e o estilo de um documento enquanto se escreve.

Gosto também da extensibilidade. O LaTeX foi criado para textos em inglês, sem acentos, mas existe um pacote que permite esses caractereres a mais (é o pacote inputenc que usei acima) — observe que a data ficou em inglês, e omiti o pacote que faz a tradução justamente para chamar a atenção para este fato. Existe outro, um dos meus preferidos atualmente, que formata unidades SI adequadamente. Ou seja: quando você está escrevendo, e encontra um problema, a chance de você achar um pacote pronto é alta.

Por último, o LaTeX é independente de programas. O compilador é software livre e pode ser facilmente instalado em qualquer sistema. E o editor… não existe um “editor de LaTeX”. Vamos repetir? É apenas texto. Você pode escrever no maldito Bloco de Notas, se quiser; ou pode escrever em algum editor de texto poderoso (voltado geralmente para programação), como o Notepad++ no Windows ou TextWrangler no Mac (que eu adoro e estou usando para escrever este post). Se preferir algo mais fácil, existem editores “integrados”, que reúnem a edição com o processamento (no Mac, muitas vezes eu uso o Texpad , que é bem razoável) — mas eles são apenas isso, editores. O texto que você escrever em um editor do Windows e me mandar vai ser aberto e, se eu tiver instalado todos os pacotes que você usou, compilado normalmente no Texpad.

Mas se o LaTeX é tão bom, por que eu acho, como é o título desta série, que ele precisa de um futuro? Aguardem cenas do próximo capítulo.

Publicidade
Categorias
Artigos

O Futuro do LaTeX, Parte I – A importância de linguagens de marcação

Esse parágrafo que você está lendo não tem nenhum recurso de formatação
especial. Há uma fonte, de um determinado tamanho, com algumas margens,
espaçamento entre linhas, mas isso é o mínimo para um texto ser
apresentável; são detalhes tão básicos que o leitor quase nem se dá
conta. Na prática, são apenas caracteres, um após o outro, formando a
mensagem que eu, escritor, quero passar a você, leitor.

Este parágrafo têm uma ênfase. Esse recurso imediatamente chama
atenção para uma palavra determinada, e altera a mensagem. Nas minhas
resenhas de livro, eu dizer que um livro é extremamente bom ou
extremamente bom são coisas diferentes, apesar da palavra ser a
mesma. Ou, quando falo de apps, dizer que um app é levemente
caro ou levemente caro provoca sentimentos diferentes por parte de
quem está lendo. Quando eu digo que algo é levemente caro, eu estou
sendo irônico, ou estou apenas dizendo que o produto não é nem caro nem
barato?

A forma da escrita afeta o conteúdo. Ênfase, ênfase ou ênfase são
três formas de escrever a mesma palavra, mas a interpretação do leitor
varia conforme o uso dos recursos.

Outro exemplo: eu poderia simplesmente dizer que Aristóteles falou que o
todo é maior que a soma das partes. Ou poderia escrever:

O todo é maior que a soma das partes – Aristóteles

Aqui, eu não alterei a forma de uma letra, mas sim a apresentação de uma
frase. Observe como eu consigo imediatamente chamar mais a atenção.

Agora, um detalhe: eu poderia configurar este site para exibir este
texto com uma outra fonte, mas eu não precisaria escrever o texto de
novo, em outra fonte. De fato, a fonte na qual eu estou escrevendo o
texto não é a mesma no qual você está lendo. Mais: eu poderia trocar os
negritos por itálicos e não precisaria reescrever essas palavras.
Poderia trocar a forma como a citação acima é exibida. Como isso é
possível?

É possível porque esses recursos são visuais. Eles não fazem parte do
conteúdo, mas se relacionam com ele. Na prática, as informações de forma
e de conteúdo são armazenadas de forma indepedente nos computadores.

O formato mais básico de texto é o chamado texto puro, plain text em
inglês. É o texto que o leitor digita no Bloco de Notas do Windows, por
exemplo, ou no TextEdit no OS X, ou em algum editor básico do Linux. São
apenas caracteres, sem formatação nenhuma. O programa exibe o texto em
alguma fonte padrão, com algum espaçamento.

Esse formato é tão básico que se o leitor escrever algum texto no Bloco
de Notas no Windows e mandar para mim, eu vou conseguir abrir no meu
iPhone. Todos os sistemas modernos conseguem interpretar texto puro.
Além disso, esse formato é extremamente leve. Repito: são apenas letras.

Porém, como já vimos, a formatação é essencial. Eu poderia escrever
todos os meus textos em texto puro e mandar para os leitores, mas isso
está longe de ser ideal. É preciso uma maneira de, usando texto puro (um
formato que o computador consegue entender), marcar o texto,
produzindo um texto rico (um formato que o leitor consegue entender). Em
vez de armazenar as palavras em negrito, armazenam-se comandos para
produzir negrito. E, então, um programa analisa essas instruções e
produz o resultado visual desejado.

Uma linguagem que marque o texto com recursos de formatação é chamada de
linguagem de marcação (markup language).

Uma linguagem de marcação usada todos os dias

O leitor é exposto a uma linguagem de marcação todo dia, sempre que
navega pela internet em um browser. As páginas da Web são escritas em
HTML (HyperText Markup Language); é função dos navegadores interpretar
o HTML e exibir os recursos gráficos na sua tela, convertendo comandos
em pixels.

Por exemplo, este parágrafo tem a seguinte estrutura em HTML:

<p>Por exemplo, este parágrafo tem a seguinte estrutura em HTML:</p>

Repare nos elementos adicionais: <p> e </p>. Repito: um arquivo de
texto num computador é armazenado como uma sequência de caracteres,
incluindo espaços e quebras de linha. O arquivo de texto não sabe o que
é um parágrafo. O que esse comandos fazem então é instruir ao
navegador: “exiba essa sequência de caracteres como se fosse um
parágrafo, isto é, com um espaçamento antes e depois, com uma certa
tabulação etc”. Os detalhes da formatação podem ser alterados com uma
linguagem auxiliar chamada de CSS, sigla para Cascading Style Sheets
(que determinam a fonte, as margens e outros detalhes do estilo).

O parágrafo acima é interessante porque tem vários detalhes
tipográficos. Repare na sua versão em HTML:

<p>Repare nos elementos adicionais: <code><p></code> e <code></p></code>. Repito: um arquivo de texto num computador é armazenado como uma sequência de caracteres, incluindo espaços e quebras de linha. O arquivo de texto não sabe o que é um <em>parágrafo</em>. O que esse comandos fazem então é instruir ao navegador: “exiba essa sequência de caracteres como se fosse um parágrafo, isto é, com um espaçamento antes e depois, com uma certa tabulação etc”. Os detalhes da formatação podem ser alterados com uma linguagem auxiliar chamada de CSS, sigla para <em>Cascading Style Sheets</em> (que determinam a fonte, as margens e outros detalhes do <em>estilo</em>).</p>

Na maioria dos navegadores, é possível ver o código-fonte da página,
para ver como aquele site foi escrito em HTML. Recomendo como um
exercício interessante.

Separação entre produtor e consumidor

Este não é um tutorial de HTML então vamos voltar ao conceito. Uma
linguagem de marcação fundamentalmente separa o produtor do consumidor
de conteúdo. O produtor usa os comandos e os recursos da linguagem
escolhida para criar recursos gráficos.

Mas que tipo de recursos? Basta pensar em tudo que não é texto puro:

  • Margens
  • Tipo de fonte
  • Tamanho de fonte
  • Figuras
  • Tabelas
  • Equações
  • Diagramas
  • Negrito, itálico, sublinhado
  • Alinhamento dos parágrafos
  • Citações

Naturalmente, as boas linguagens permitem aos usuários criarem os seus
recursos adicionais.

Processadores de texto como o Word da Microsoft e o Pages da Apple
também usam uma linguagem de marcação, mas que fica invisível ao
público. Em vez de haver um comando para transformar uma palavra em
negrito, o usuário seleciona um texto e clica num botão. O ato de clicar
num botão efetivamente produz o comando internamente e atualiza a tela
para mostrar uma nova palavra em negrito.

A vantagem principal dessa abordagem é que ela é muito fácil de
aprender. No HTML, é preciso consultar alguma referência que o negrito é
produzido assim: <b>negrito</b>. Nos processadores, basta apertar um
botão.

Uma das “vantagens” alardeadas é que processadores são do tipo WYSIWYG,
what you see is what you get, significando que o que o leitor vê é
aquilo que está acontecendo. Se o usuário do Word está editando um texto
em Arial, o texto impresso vai estar em Arial; quando o arquivo for
mandado para outra pessoa, ele também vai estar em Arial, no mesmo
tamanho. As instruções de formatação estão codificadas internamente no
arquivo (mas independentes do conteúdo, lembre-se). O mesmo arquivo
usado para escrever o texto é usado para visualizá-lo.

Processadores de texto violam a separação entre produtor e consumidor, o
que é na verdade uma desvantagem.

O que um autor de página da Web vê quando escreve uma página em HTML é
bem diferente do que um leitor vê quando usa o Safari, Chrome, Firefox
ou outro navegador. O autor faz testes, mas quando ele está escrevendo,
ele não está preocupado com detalhes como margem e fonte. As (boas)
linguagens de marcação estimulam a boa prática de escrever e marcar o
texto de maneira apropriada, e só depois implementar a formatação. É
importante saber que em determindo lugar há uma ênfase, mas não de que
forma essa ênfase vai aparecer. É importante saber que ali há uma
tabela, mas não qual a espessura da linha.

A linguagem HTML reforça isso ainda mais ao requerer uma segunda
linguagem (o CSS) para definir detalhes de estilo. O código em HTML
define a estrutura: o que é um título, o que é um parágrafo, o que é uma
tabela, e o estilo em CSS define os detalhes: qual fonte o título usa,
qual a margem dos parágrafos, qual o tamanho das células nas tabelas.

Abordagens WYSIWYG distraem. Você está escrevendo e vê um texto poluído
cheio de imagens, e repara que uma não está corretamente alinhada. Você
interrompe a sua linha de raciocínio para arrumar a imagem. Algum tempo
depois, para de novo porque acha que a fonte não está boa. O autor é
praticamente instruído a escrever e formatar o conteúdo ao mesmo tempo,
o que é altamente improdutivo. É preciso ter muita força de vontade para
escrever sem se deixar distrair pelos detalhes.

Para piorar, as linguagens de marcação por trás de processadores
comerciais de texto não são nem um pouco robustas. Quantas vezes o
leitor já abriu um documento do Word para encontrar o trabalho da semana
toda desorganizado? Algum erro interno na hora de salvar e abrir de novo
o documento provocou um desastre.

Para produzir documentos sérios, em que se controla a aparência final
com precisão, é preciso usar uma linguagem de marcação que esteja
explícita, e não que esteja escondida.

E o LaTeX?

Esse texto começou pequeno na minha cabeça e já se tornou grande demais.
Num post futuro, vou falar especificamente do LaTeX e em como ele se
encaixa nesse cenário.

Categorias
Artigos

Uma regra básica de etiqueta em anexos de email

Um dia desses, o Vladimir Campos postou uma questão interessante
no App.net: por que algumas pessoas insistem em mandar arquivos .rar em
email, muitas vezes quando ele é desnecessário — e impede a visualização
em smartphones?

Esse problema leva a uma questão ainda maior. Poucas coisas me irritam
mais que receber um arquivo de um programa que eu não tenho, e que de
repente sou obrigado a ter porque ele se tornou supostamente “um
padrão”. Então deixem-me clarificar uma coisa.

Eu uso um Mac, por opção pessoal (sim, eu sou milionário sarcasm
detected
). No meu Mac, existem os programas que eu uso: as ferramentas
de programação para meu mestrado, um editor de texto geral, o Safari, o
YNAB, o Day One. Periodicamente, eu vou deletando tudo o que não
preciso. E tenho uma política de só instalar aquilo que acho realmente
que vou usar. E é por isso eu não tenho o Office instalado no meu
computador.

Como?

Sim, eu não tenho no meu computador pessoal nem o Word, nem o Excel, nem
o Powerpoint. Sim, eles existem para Mac. Mas, antes de ter um Mac,
eles não estavam instalados no meu computador Windows. E há um tempo eu
usei Linux por mais de um ano e, claro, não usava Office.

Eu odeio o Office com todo o ódio que meu coração é capaz de conter — é
lento, a interface é um lixo, é complicado de usar, não é confiável, é
um inferno para tratar arquivos antigos. Mas isso não importa. Eu não
uso o Office principalmente porque eu não preciso dele, e tenho certeza
que muita gente odeia-o mais ainda mas usa por necessidade.

Deixem-me então propor uma regra básica de etiqueta de anexos de email:
não mande arquivos por email se você não tem a absoluta certeza de que a
outra pessoa vai conseguir abri-lo.

Para os leigos, existem formatos de arquivos que são proprietários e que
são abertos. Por exemplo, arquivos de texto puro, geralmente com
extensão .txt (ou formatos de programação: .c, .cc, .m, .f, .html),
podem ser abertos por milhares de programa. Fotos em formatos JPG e PNG
e documentos PDF podem ser visualizados e editados em muitas opções. O
código por trás desses formatos, as instruções para seu computador
transformar 0s e 1s em fotos e documentos (por exemplo), está disponível
para todos, e assim os programadores podem criar programas que os
interpretem. Isso gera um corolário interessante: como os programas não
podem se diferenciar no formato final, eles competem pela qualidade das
ferramentas. Um arquivo .pdf é universal, mas determinado programa pode
ser mais rápido na hora de abri-lo, outro pode focar no reconhecimento
de caracteres, outro na edição. Mas repito: um arquivo editado por um
programa pode ser aberto e reeditado com muita facilidade por outro, já
que o tipo de arquivo é independente do aplicativo.

Formatos proprietários não têm a sua especificação aberta. Outros
programas até conseguem abrir, mas o resultado final é ruim porque
alguém teve de fazer uma espécie de “engenharia reversa” para descobrir
como os arquivos são codificados. Um arquivo DOCX foi feito
especialmente para ser aberto com o Word. A consequência é obvia: não
existe exatamente pressão para a Microsoft melhorar o programa; qual a
opção? Será que as pessoas estão dispostas a migrar todos os seus
documentos antigos?

Se algum dia eu for trabalhar num ambiente que exija usar o Office, eu o
farei sem problemas. Mas eu jamais enviarei um arquivo do Office para
alguém de fora da empresa a não ser que seja previamente combinado.

Ah, uma palavra sobre compactação: como o Vladimir falou, com as
velocidades de internet disponíveis, geralmente ela não é necessária.
Além de gerar suspeitas sobre o conteúdo, ainda exige um programa
adicional só para visualizar. Formatos mais “populares” como o .zip
ainda são extraídos automaticamente e tratados nativamente pela maioria
dos sistemas, então devem ser priorizados. Se você usa o Dropbox, ainda
é possível mandar um link para a pessoa baixar – o que não ocupa nem
espaço no email.

O tempo passa e as tecnologias avançam — vamos usar isso a nosso favor.