🇮🇪 Read in English

Introdução ao Latex

LaTeX (sim, escrito exatamente assim) é um sistema que permite escrever documentos sem se preocupar com o estilo da apresentação. Você pode dizer que é como se estivesse codificando um texto em vez de usar o Microsoft Word ou Google Drive.

Como todas as definições de formatação são definidas em um único lugar (o documento principal), você só precisa escrever texto simples e o LaTeX se preocupará em como renderizá-lo da maneira correta. Isso é muito utilizado por revistas científicas, teses de universidades, editoras de livros, etc. Por exemplo, universidades e revistas científicas geralmente têm um modelo que você pode baixar e o documento estará imediatamente na formatação que deveria estar. Isso também inclui a formatação de bibliografia que pode ser bastante dolorosa.

Além disso, o LaTeX tem esse estilo meio linguagem de programação que permite que você use o git para controle de versão de documentos, o que torna sua vida muito mais fácil. E sério, é impressionante o quanto ele consegue fazer seus documentos muito mais bonitos do que qualquer outra ferramenta.

Eu usei LaTeX antes (láááááá atrás) e foi simplesmente horrível. Na época havia poucos materiais e tutoriais e não conseguia entender os erros. Anos depois, quando eu estava fazendo minha dissertação de mestrado, isso salvou minha vida porque ter a bibliografia e o estilo corretos poderia prejudicar minha nota final.

Já que eu decidi brincar com o LaTeX de novo por esses dias, eu decidi criar esse tutorial 🤓

Instalação

Você pode instalá-lo em qualquer sistema operacional baixando-o aqui: https://www.latex-project.org/get/

Alguns conceitos básicos

No LaTeX, você tem comandos que começam com o símbolo \. Esses comandos podem ser simples (digitados uma vez) como o comando de definir um texto em itálico:

\emph{Texto em itálico}

E você pode ter comandos que tem começo e fim, e tudo o que estiver entre os comandos vão ser influenciados por ele. Um exemplo é esse comando pra fazer um texto ser centralizado:

\begin{center}
Texto centralizado
\end{center}

Alguns comandos também permitem que você adicione uma configuração a ele. Isso geralmente é feito inserindo um [] entre o próprio comando e os detalhes dentro do {}. Por exemplo, o seguinte comando torna o documento do tipo memoir, mas configura o tamanho da fonte do documento para 12:

\documentclass[12pt]{memoir}

Você também pode evitar que linhas sejam processadas, comentando-as usando o símbolo % :

Essa linha vai ser processada
% Essa não vai

E se você precisar de um caractere que tenha um propósito no LaTeX, você pode escapar do símbolo usando o símbolo \ imediatamente antes do símbolo.

Essa linha vai ser processada
% Essa não vai
Toda essa \% linha vai!

Um mínimo programa funcional

Vamos criar um pequeno arquivo mydoc.tex. O arquivo começa com uma declaração do tipo de documento que estamos escolhendo renderizar. Nesse caso, escolhi um livro de memórias. Eu também adicionei algumas configurações extras de título e autora. O próprio documento (o documento que será realmente renderizado) só começa após a tag \begin{document}.

% mydoc.tex

% Essas são as configurações gerais
\documentclass[12pt,openany]{memoir}
\title{My LaTeX book}
\author{Leticia Portella}

% A partir daqui é o documento de fato (que vai ser renderizado)
\begin{document}
\maketitle

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

\end{document}

Se você executar o seguinte comando, vai ver que um PDF vai ser gerado que é o resultado da renderização:

pdflatex mydoc.tex

E você já tem algo que parece tão bonito…

Você verá que junto com o arquivo PDF, o LaTeX criou dois arquivos adicionais .aux e .log. Estes são arquivos auxiliares e podem ser excluídos depois que a renderização termina sem problemas.

Este é meu .gitignore básico para evitar o envio de arquivos auxiliares (e o pdf):

*.pdf
*.gz
*.log
*.aux
*.blg
*.bbl
*.swp
*-blx.bib

Organizando o documento

Normalmente é muito ruim jogar tudo em um único documento, então geralmente eu faço com que o .tex seja um documento base padrão enquanto crio outros arquivos .tex para o texto prorpiamentee dito.

Por exemplo, podemos criar o capitulo1.tex que vai ter apenas um texto:

% capitulo1.tex
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

E eu adiciono esse arquivo no meu documento base usando a função \include :

% mydoc.tex

% Essas são as configurações gerais
\documentclass[12pt,openany]{memoir}
\title{My LaTeX book}
\author{Leticia Portella}

% A partir daqui é o documento de fato (que vai ser renderizado)
\begin{document}
\maketitle

\include{capitulo1}

\end{document}

Usando isso, você pode se preocupar com cada capítulo individualmente ou organizá-lo como preferir! Chega de milhares de linhas em um único arquivo!

Divisões!

LaTeX permite 7 níveis de divisão (em ordem hierárquica):

\part{Parte} é a principal divisão. Normalmente ocupa uma página inteira.

\chapter{Capítulo} will start a new page and a chapter within the previous defined part (if any)

\section{Sessão} é uma divisão dentro do capítulo

\subsection{Uma subsessão}

\subsubsection{Ainda mais uma divisão}

\paragraph{Parágrafo}

\subparagraph{Divisão de parágrafo}

Você pode então adicionar um sumário dentro do seu documento adicionando o seguinte comando:

% adicione depois de \begin{document} no mydoc.tex
\tableofcontents

E você pode definir quais são as divisões que você quer mostrar no sumário. -1 pra mostrar as Partes, 0 mostra partes e capítulos, 1 mostra até sessões e assim por diante.

% adicione nas configurações antes de \begin{document}
\setcounter{tocdepth}{2}         % Nível apresentado no sumário

Também podemos usar um comando para nos referirmos a outros capítulos. Digamos que temos um capítulo chamado “My first chapter!”. Posso adicionar um comando \label com um valor que o identifica logo após:

% adicione depois de \begin{document} no mydoc.tex
\chapter{My first chapter!}
\label{chap:my-first-chapter}

Agora eu posso referenciar esse capítulo em qualquer outro lugar do texto:

% adicione depois de \begin{document} no mydoc.tex
Como podemos ver no capítulo \ref{chap:my-first-chapter}, ...

O comando \label pode ser usado para qualquer division e mais pra frente pode ser usado pra tabelas e imagens também!

Usando pacotes

Outra coisa sensacional sobre o LaTeX é que você pode adicionar pacotes para te ajudar a lidar com seu documento. Por exemplo, se você quiser imagens em seu documento, você só precisa adicionar o pacote gráfico:

% adicione nas configurações antes de \begin{document}
\usepackage{graphicx}                      % permite adicionar imagens

E aí podemos usar imagens nos documentos:

% adicione depois de \begin{document} no mydoc.tex
\begin{figure}
  \centering
  \includegraphics[width=\linewidth]{img/my-imagepng}
  \caption{Subtitles!}
  \label{fig:clients}
\end{figure}

Ah mas tem um problema… a bibliotca graphicx adiciona as imagens onde ela acha melhor e não aonde você as adicionou no texto! Então pra forçar as imagens a estarem no lugar que você definiu a gente precisa de um outro pacote:

% adicione nas configurações antes de \begin{document}
\usepackage{float}                         % adiciona localização de imagem ([H])

e aí a imagem fica dessa forma:

% adicione depois de \begin{document} no mydoc.tex
\begin{figure}[H] % Adicionando o [H] garante a posição
  \centering
  \includegraphics[width=\linewidth]{img/foto.png}
  \caption{Legenda!}
  \label{fig:clients}
\end{figure}

Outro pacote interessante é o pacote hyperref. Ele faz com que items da tabela de conteúdo e toda e qualquer referência (imagens, tabelas, bibliografia, urls) se transforem em hiperlinks! Isso permite que você navegue pelo documento de forma muito mais fácil.

% adicione nas configurações antes de \begin{document}
\usepackage{hyperref}                      % transforma referências em links

Agora as referências vão ser mostradas da seguinte forma:

Se você quer mostrar código no documento, veja esse texto sobre o pacote minted.

Bibliografia

Esta é, de longe, minha ferramenta favorita em LaTeX. Porque bibliografia pode ser muito chata (especialmente na academia/universidades).

Para adicionar bibliografia a um documento LaTeX, criaremos um arquivo chamado mydoc.bib. Podemos adicionar uma referência de livro a ele:

% mydoc.bib

@book{Armour,                                         % Armour é o ID dessa ref 
  author    = "P. G. Armour",
  title     = "The Laws of Software Process",
  publisher = "Auerbach",
  year      = "2003",
}

No final da seção de documento (antes do \end{document}), precisamos acrescentar que este é o arquivo que contêm nossas informações para bibliografia:

% adicione depois de \begin{document} no mydoc.tex
\bibliography{mydoc}       % name of the bibfile 
\bibliographystyle{plain}  % we will use the plain style

E agora podemos usar o ID da bibliografia para citá-la no texto:

% adicione depois de \begin{document} no mydoc.tex
As written by \cite{Armour}, ...

A única coisa chatinha é que o bibtex (a biblioteca que gera a bibliografia) exige 4 comandos (sim, 4!) pra compilar corretamente:

pdflatex mydox.tex
bibtex mydoc.bib
pdflatex mydox.tex
pdflatex mydox.tex

Sim, você tem que executar o pdflatex duas vezes depois de criar os arquivos auxiliares do bib (não tenho ideia do motivo, mas juro que está na documentação oficial).

Usando o VSCode

Teve uma hora que ficou meio chato escrever o documento em um lugar, executar os comandos no terminal e depois reabrir o pdf para ver se as coisas estavam funcionando. Especialmente quando descobri que os principais leitores de PDF que eu conhecia não atualizavam um arquivo PDF que já estava aberto quando ele mudou.

O VSCode resolveu todos os meus problemas! Você pode ver na figura abaixo que no lado esquerdo, eu tenho uma extensão LaTeX que tem um link rápido para qualquer divisão e rótulo que eu adicionar ao documento. Posso dividir a seção principal entre os arquivos tex e o pdf. O legal é que o VSCode já regenera tudo uma vez que você salva um arquivo .tex, mas você ainda tem a opção de executar o comando no terminal que fica na parte de baixo da tela:

E se você adicionar a extensão LaTeX, você também pode ter acesso a alguns comandos bastante úteis, como um comando automático para excluir arquivos auxiliares:

Não sou um super fã de IDEs muito grandes … mas, caramba, isso tornou minha vida 1000 vezes mais fácil!

Exemplo completo

Veja minha wiki pra ter um exemplo completo funcional! 🤩


Abraço!
Leticia

Comments