Tag Archives: linguagens de marcação

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.

Advertisements

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.