ApostilaLatex PDF
ApostilaLatex PDF
Material de Apoio
Departamento de Estatı́stica - UEM
Aprender é a única coisa de que a mente nunca se cansa,
nunca tem medo e nunca se arrepende.
Leonardo da Vinci
Sumário
1 Introdução 1
1.1 O que é LATEX? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 MiKTeX e editores de textos LATEX . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Instalando o MiKTex e um editor de Texto:TeXstudio . . . . . . . . . . . . . . 3
1.4 Estrutura de um documento LAT
EX . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2 Formatação do texto 10
2.1 Tamanho da letras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Estilo do texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Fontes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4 Parágrafo, Espaço e Espaçamento . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.1 Paragráfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.2 Quebra de Linha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.3 Espaço horizontal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.4 Espaço vertical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.5 Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.6 Alinhamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.7 Numeração de páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.8 Ambiente verbatim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.9 Colunas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1
SUMÁRIO
4 Inserindo Imagens 28
Granzotto, D. C. T. 2
Leal. M. A. V.
Capı́tulo 1
Introdução
LATEXé uma linguagem que permite criar documentos em diferentes formatos: relatórios,
resumos, livros, apresentações, painéis e cartas, de ótima qualidade. Na verdade, apesar
desta linguagem parecer difı́cil à primeira vista, po resultado e a qualidade alcançados
compensa o tempo despendido para a aprendizagem da linguagem.
Mas afinal:
• Por que devo investir meu tempo nisso se já sei usar o Word/Power Point?
• Como aprender?
Vamos antecipar algumas das respostas. A ideia central do LATEXé distanciar o autor
o máximo possı́vel da apresentação visual da informação, pois a constante preocupação
com a formatação desvia o pensamento do conteúdo escrito. Vamos focar no que interessa,
conteúdo!
Ao invés de trabalhar com ideias visuais, o usuário é encorajado a trabalhar com conceitos
mais lógicos — e, consequentemente, mais independentes da apresentação — como capı́tulos,
seções, ênfase e tabelas, sem contudo impedir o usuário da liberdade de formatar seus
documentos.
1
1.2. MIKTEX E EDITORES DE TEXTOS LATEX
Granzotto, D. C. T. 2
Leal. M. A. V.
1.3. INSTALANDO O MIKTEX E UM EDITOR DE TEXTO:TEXSTUDIO
https://www.overleaf.com
Granzotto, D. C. T. 3
Leal. M. A. V.
1.3. INSTALANDO O MIKTEX E UM EDITOR DE TEXTO:TEXSTUDIO
Granzotto, D. C. T. 4
Leal. M. A. V.
1.3. INSTALANDO O MIKTEX E UM EDITOR DE TEXTO:TEXSTUDIO
Granzotto, D. C. T. 5
Leal. M. A. V.
1.4. ESTRUTURA DE UM DOCUMENTO LATEX
• Preâmbulo;s
• Texto.
%-----PREÂMBULO-------
\documentclass[a4paper,12pt]{report}
\usepackage[brazil]{babel}
%-----TEXTO-----------
\begin{document}
\end{document}
Granzotto, D. C. T. 6
Leal. M. A. V.
1.4. ESTRUTURA DE UM DOCUMENTO LATEX
Na escrita do texto de seu documento não é preciso se preocupar com mudanças de linhas
nem acentos. O alinhamento padrão é justificado, caso queria mudar de linha pode-se usar
um dos comando abaixo:
\newline ou \\
\documentclass[opções]{estilo}
No campo opções, podemos definir tipo de papel e tamanho de letra, por exemplo. No
campo estilo definimos o tipo de documento que queremos: livro, artigo, carta, etc. Abaixo
algumas alternativas para o campo opções:
• titlepage: para que seja gerada uma página exclusiva para o tı́tulo. Uma capa.
• openany: faz com que os capı́tulos se iniciem em qualquer página, ı́mpar ou par
Por exemplo:
O texto terá duas colunas em papel a4 e letra de tamanho 12pt. Abaixo algumas opções
de estilo:
• article: artigos em jornais cientı́ficos, pequenos relatórios;
• report: relatórios mais longos, teses;
• book: livros;
• proc: Para atas baseadas na classe artigo.
• minimal: é a menor classe. Usa apenas um tamanho de letra e de papel. Usada
geralmente quando se quer detectar problemas no documento LATEX;
• letter: cartas.
Granzotto, D. C. T. 7
Leal. M. A. V.
1.5. PACOTES
1.5 Pacotes
Os pacotes ou packages são arquivos que implementam caracterı́sticas adicionais para
os documentos escritos em LATEX. Se usarmos a estrutura básica
\documentclass{report}
\begin{document}
\end{document}
não podemos, por exemplo, escrever palavras com acentos. Para que isso seja possı́vel,
inserimos (no preâmbulo) o pacote que reconhece a acentuação, o pacote:
\usepackage[utf8]{inputenc}
\usepackage[utf8]{inputenc}
• babel: A linguagem empregada nos tı́tulos. Por exemplo: Capı́tulo, Sumário, Índice
Remissivo.Preenchendo o campo das opções com [brazil], todos os tı́tulos são escritos
em português. Se nada for feito, a linguagem usada é o inglês;
• geometry: pacote usado para definir as margens. No campo das opções definimos as
margens superior, esquerda, direita e inferior usando os comandos ; [top=3cm,left=3cm,right=2cm
Granzotto, D. C. T. 8
Leal. M. A. V.
1.5. PACOTES
%-------------------------PRÉ_ÂMBULO-------------------------------------------
\documentclass[dvipdfm, a4paper, 12pt]{book} %book, article ou report
\usepackage[brazil]{babel} %linguagem do documento
\usepackage[utf8]{inputenc} %reconhece acento e cedilha
\usepackage{amssymb, amsmath, pxfonts} %permite simbolos matemáticos
\usepackage{mathrsfs} %permite uso de fontes para conjuntos
\usepackage[normalem]{ulem} %permite sublinhar palavras
\usepackage{mathrsfs} %permite o uso de letras trabalhadas
\usepackage[top=3cm,left=3cm,right=2cm,bottom=3cm]{geometry} %margens
\usepackage{graphicx} %permite inserir figuras
\usepackage[usenames]{color} %permite letras coloridas
\usepackage{makeidx} %pra criar ı́ndice remissivo
\makeindex %construção do ı́ndice
%----------------------------------------------------
\begin{document}
\pagestyle{headings} %estilo de numeração
\end{document}
Granzotto, D. C. T. 9
Leal. M. A. V.
Capı́tulo 2
Formatação do texto
• {\scriptsize texto} ;
texto
• {\footnotesize texto} ;
texto
• {\small texto} ;
texto
• {\normalsize texto};
texto
• {\large texto} ;
texto
• {\Large texto} ;
texto
• {\LARGE texto} ;
texto
• {\huge texto};
texto
• {\Huge texto} ;
10
2.2. ESTILO DO TEXTO
• subscrito: \underline{texto}
2.3 Fontes
O primeiro tipo não necessita de comandos. Basta digitar o texto. A segunda é tipo
máquina de escrever e a terceira é a fonte Sans Serif ou serifada. O LATEX permite o uso de
outras fontes mediante adição de pacotes adequados. Por exemplo, se anexamos os pacotes
txfonts ou pxfonts, a fonte é alterada em todo o documento1.
Granzotto, D. C. T. 11
Leal. M. A. V.
2.4. PARÁGRAFO, ESPAÇO E ESPAÇAMENTO
\\[-0.2cm].
2.5 Cores
É necessário o uso do pacote color no preâmbulo da seguinte forma: \usepackage[usenames]{color}
desta forma podemos escolher as cores pelos seus nomes. Dois comandos nos permitem
mudar a cor de uma determinada parte do texto:
• \textcolor{cor}{texto}
• \color{cor}{texto}
Granzotto, D. C. T. 12
Leal. M. A. V.
2.6. ALINHAMENTO
• \textcolor{blue}{Texto}
• \textcolor{red}{Texto}
• \textcolor{green}{\LaTeX}
• {\color{magenta}Text}
• {\color{cyan}Texto}
2.6 Alinhamento
Assim como na maioria dos editores de texto, podemos alinhar o texto a esquerda, a
direita, justificado ou centralizado. O padrão do LATEX é o justificado. Os comandos
encontram-se a seguir:
Centralizar :
\begin{center}
TEXTO AQUI
\end{center}
Esquerda :
\begin{flushleft}
TEXTO AQUI
\end{flushleft}
Direita:
\begin{flushright}
TEXTO AQUI
\end{flushright}
Granzotto, D. C. T. 13
Leal. M. A. V.
2.7. NUMERAÇÃO DE PÁGINAS
\textcolor{green}{Palavra verde}
2.9 Colunas
O texto pode ser divido inteiramente em duas colunas ou apenas localmente. Se quiser-
mos que todo o texto tenha duas colunas, usamos como parâmetro do \documentclass o
comando twocolumn:
\documentclass[a4,twocolumn,12pt]{book}
Se quisermos usar localmente, basta fazer o que se segue:
\twocolumn[tı́tulo]
...
TEXTO
...
\onecolumn
Granzotto, D. C. T. 14
Leal. M. A. V.
2.9. COLUNAS
Granzotto, D. C. T. 15
Leal. M. A. V.
Capı́tulo 3
3. Fórmulas Numeradas:
\begin{equation}
ax+b=0
\end{equation}
\begin{eqnarray}
3x+y=2\\
y=2-3x\\
y=2-3.(1)\\
y=2-3\\
y=-1
\end{eqnarray}
16
Que resulta em:
3x + y = 2 (3.1)
y = 2 − 3x (3.2)
y = 2 − 3.(1) (3.3)
y=2−3 (3.4)
y = −1 (3.5)
Observe que cada linha ficou numerada. Se não quisermos números em determinadas
linhas, usamos o comando nonumber ao final da linha:
3x + y = 2
y = 2 − 3x (3.6)
y = 2 − 3.(1) (3.7)
y=2−3
y = −1 (3.8)
\begin{eqnarray*}
3x+y=2\\
y=2-3x\\
y=2-3.(1)\\
Granzotto, D. C. T. 17
Leal. M. A. V.
y=2-3\\
y=-1
\end{eqnarray*}
O resultado é:
Se na equação 3x + y = 2 fizermos x = 1, teremos:
3x + y = 2
y = 2 − 3x
y = 2 − 3.(1)
y=2−3
y = −1
Podemos ainda melhorar a disposição das equações dentro do ambiente eqnarray utili-
zando o sı́mbolo &:
Obteremos:
Se na equação 3x + y = 2 fizermos x = 1, teremos:
3x + y = 2
y = 2 − 3x
y = 2 − 3.(1)
y = 2−3
y = −1
Granzotto, D. C. T. 18
Leal. M. A. V.
3.1. CONHECIMENTO BÁSICO PARA FÓRMULAS MATEMÁTICAS
Caso se deseje imprimir uma potência com mais de dois dı́gitos, usamos chaves:
x20 : xˆ{20}
$a_2ˆ{20}$
$\sqrt[5]{x}$
Repare que assim como com frações, o número binomial se adequou ao espaçamento da
linha. Se desejarmos escrevê-lo em “tamanho natural”, digitamos \dbinom{a}{b}.
Granzotto, D. C. T. 19
Leal. M. A. V.
3.1. CONHECIMENTO BÁSICO PARA FÓRMULAS MATEMÁTICAS
• Z :$\mathbb{Z}$
• Q :$\mathbb{Q}$
• R : $\mathbb{R}$
• C : $\mathbb{C}$
• ABC1abc : $\mathfrak{ABC123abc};
$(2xˆ2-3x-1)ˆ2=1$
[2xˆ2-x-7)ˆ5=2x
Já as chaves necessitam de um cuidado a mais, pelo fato de serem usadas para agrupar
sı́mbolos, como no caso do expoente e do ı́ndice. Para escrever chaves, usamos { e }.
$\{2xˆ2-3x-1\}ˆ2=1$
Granzotto, D. C. T. 20
Leal. M. A. V.
3.1. CONHECIMENTO BÁSICO PARA FÓRMULAS MATEMÁTICAS
Um outro problema é que parênteses, colchetes e chaves usados dessa forma têm tama-
nho fixo.
1 1
( )2 = : $(\dfrac{1}{2})ˆ2=\dfrac{1}{4}$
2 4
$|x|$ : |x|
$\leq$ : ≤
$\geq$ : ≥
$\neq$ : ,
• Logaritmo e Exponencial
$eˆx$: ex
$exp(x)$: exp(x)
$\ln y$: ln y
• Somatórios, produtórios
P20
$\sum_{n=1}ˆ{20} nˆ2$ : n=1 n2
P∞
$\sum_{n=1}ˆ{\infty} nˆ2$ : n=1 n2
∞
Y
$\displaystyle \prod_{n=1}ˆ{\infty} 2ˆn$ : 2n
n=1
• União, interseção
A \cup B : A ∪ B
A \cap B : A ∩ B
S∞
$\bigcup_{i=1}ˆ{\infty} A_i$ : i=1 Ai
Granzotto, D. C. T. 21
Leal. M. A. V.
3.1. CONHECIMENTO BÁSICO PARA FÓRMULAS MATEMÁTICAS
• Vetores e Conjugados
$X=(x_1,x_2,\ldots,x_n)$: X = (x1 , x2 , . . . , xn )
−v = x→
\overrightarrow{v}=x\overrightarrow{i} + y\overrightarrow{j} : →
− → −
i +y j
$f’(x)$: f 0 (x)
$f’’(x)$: f 00 (x)
∂f
$\dfrac{\partial f}{\partial x}$ :
∂x
∂2 f
$\dfrac{\partialˆ2 f}{\partial x \partial y}$ :
∂x∂y
$\nabla f$ : ∇ f
R
$\int f(x) dx$ : f (x)dx
!
$\iint f(x) dx$ : f (x)dx
#
\iiint f(x) dx : f (x)dx
R 15
$\int_1ˆ{15} f(x) dx$ : 1
f (x)dx
!
$\iint_{A} f(x) dx$ : A
f (x)dx
Granzotto, D. C. T. 22
Leal. M. A. V.
3.1. CONHECIMENTO BÁSICO PARA FÓRMULAS MATEMÁTICAS
R bR d
$\int_aˆb \int_cˆd f(x) dx$ : a c
f (x)dx
Z
$\displaystyle \int$ :
H
$\oint <F(\alpha(t)),\alpha’(t)>dt $ : < F(α(t)), α0 (t) > dt
3.1.8 Matrizes
$A=[a_{ij}]_{n \times m}$ : A = [ai j ]n×m
$$A=\left[
\begin{array}{lll}
a_{11} & a_{12} & a_{13}\\
a_{21} & a_{22} & a_{23}\\
a_{31} & a_{32} & a_{33}\\
\end{array}
\right]_{3 \times 3}$$
O que produz:
a11 a12 a13
A = a21 a22 a23
a31 a32 a33 3×3
$$A=\left[
\begin{array}{cccc}
a_{11} & a_{12} & \ldots & a_{1n}\\
a_{21} & a_{22} & \ldots & a_{2n}\\
\vdots & \vdots & \ddots & \vdots\\
a_{m1} & a_{m2} & \ldots & a_{mn}\\
\end{array}
\right]_{m \times n}$$
O que produz:
a12 . . . a1n
a11
a21 a22 . . . a2n
A =
.. .. . . .
. . . ..
am2 . . . amn m×n
am1
Granzotto, D. C. T. 23
Leal. M. A. V.
3.2. AMBIENTES DE ENUMERAÇÃO
$$\left\{ \begin{array}{c}
a_{11}x_1 + a_{12}x_2 + \ldots + a_{1n}x_n=b_1\\
a_{21}x_1 + a_{22}x_2 + \ldots + a_{2n}x_n=b_2\\
\vdots \\
a_{n1}x_1 + a_{n2}x_2 + \ldots + a_{nn}x_n=b_n\\
\end{array}
\right.$$
Saida:
• Primeira opção;
• Segunda opção;
• Terceira opção.
Ambiente description
\begin{description}
\item Primeira opção;
\item Segunda opção;
\item Terceira opção.
\end{description}
Granzotto, D. C. T. 24
Leal. M. A. V.
3.3. TEOREMAS, DEFINIÇÕES E PROPOSIÇÕES
Primeira opção;
Segunda opção;
Terceira opção.
\begin{teo}
Sejam $a$, $b$ catetos de um triângulo retângulo e $c$ sua hipotenusa. Então
$$cˆ2=aˆ2+bˆ2$$
\end{teo}
Produzindo:
c2 = a2 + b2
Granzotto, D. C. T. 25
Leal. M. A. V.
3.4. TABELAS
3.4 Tabelas
Para inserir uma tabela no documento LATEX precisamos do ambiente tabular:
\begin{tabular}{lll}
x & y & z\\
1 & 2 & 3\\
-1 & 4 & 0
\end{tabular}
\begin{tabular}{|l|l|l|}
\hline
x & y & z\\
\hline
1 & 2 & 3\\
\hline
-1 & 4 & 0\\
\hline
\end{tabular}
Granzotto, D. C. T. 26
Leal. M. A. V.
3.4. TABELAS
\begin{table}[h]
\begin{center} %aqui centralizamos a tabela
\begin{tabular}{|l|l|} %-----dividir em duas colunas
\hline
Número & Nome\\
\hline %----- linha horizontal
01 & Francisco\\
02 & José\\
03 & Maria\\
\hline %----- linha horizontal
\end{tabular}%--- fechamento do ambiente tabular
\end{center} %fim da centralização da tabela
\caption{Exemplo de tabela com legenda.} %legenda da tabela
\end{table}
Granzotto, D. C. T. 27
Leal. M. A. V.
Capı́tulo 4
Inserindo Imagens
userpackage{graphicx}
\begin{figure}
\includegraphics[opções]{nome_do_arquivo}
\end{figure}
28
• Marca: através do comando\label{marca}.Fora do ambiente figura, se for necessário
citar tal figura, usamos o comando \ref{marca}.A referência é feita automaticamente.
• Posicionamento: através do parâmetro h, t ou b logo em seguida ao \begin{figure}
podemos indicar que a figura deva ser colocada exatamente nesse trecho do texto (h =
“here”), ou no topo da página em que ela aparecer(t=“top”) ou ainda na parte de baixo da
página (b=“bottom). Por exemplo:
\begin{figure}[h]
\includegraphics[scale=0.3]{deteheight.png}
\caption{Histograma}
\label{grafico1}
\end{figure}
Granzotto, D. C. T. 29
Leal. M. A. V.
Capı́tulo 5
5.1 Capı́tulos
Para criarmos um novo capitulo em nosso arquivo basta adicionarmos o comando abaixo:
\chapter { Nome }
5.2 Seções
Basicamente funciona como o capı́tulo, sendo que o seu comando é
\section{NomedaSeção}
\subsection{Nome}
\subsubsection{Nome}
5.3 Sumário
Quando estamos na digitação de uma monografia ou livro, talvez a maior “dor de cabeça”
seja a construção do ı́ndice. Alguns editores de texto (visuais) já trazem opções para cons-
truir ı́ndices e também atualizações rápidas. A questão é que deve-se ir ao texto e “ajeitar
30
5.4. REFERÊNCIAS BIBLIOGRÁFICAS
no braço” o formato das frases que vão aparecer no texto. No texto em LÁTEX já vimos que
um comando resolve o problema de se determinar os itens que aparecerão no ı́ndice:
\chapter
\section
\subsection
\subsubsection
Para que apareça o ı́ndice, faz-se necessário digitar no ambiente document o comando:
\tableofcontents
\addcontentsline{toc}{chapter}{Referências Bibliográficas}
\begin{thebibliography}{n}
\bibitem[1]{autor_1} citação_1.
\bibitem[2]{autor_2} citação_2.
\bibitem[3]{autor_3} citação_3.
...
\bibitem[n]{autor_n} citação_n
\end{thebibliography}
Granzotto, D. C. T. 31
Leal. M. A. V.
5.4. REFERÊNCIAS BIBLIOGRÁFICAS
\bibitem[marca]{autor_x}
o campo marca indica o que será impresso no texto a cada vez que for feita referência ao
autor autorx .
Granzotto, D. C. T. 32
Leal. M. A. V.
Capı́tulo 6
• Multiplataforma, pois tanto TEX pode ser usado em diversos sistemas operacionais.
33
6.2. ESTRUTURA DE UMA APRESENTAÇÃO BEAMER
um titulo:
\documentclass{beamer}
declarac˜oes
\begin{document}
\section{ ... }
\frame{ ... }
\frame{ ... }
\section{ ... }
\frame{ ... }
\frame{ ... }
...
\end{document}
\frame{
\frametitle{Tı́tulo da lâmina}
Conteúdo da lâmina
}
ou
\begin{frame}{Tı́tulo da lâmina}
Conteúdo da lâmina
\end{frame}
\documentclass{beamer}
\usepackage[brazil]{babel}
\usepackage[latin1]{inputenc}
\title{Exemplo de Uso do Beamer}
\author{Nome do Autor}
\begin{document}
\frame{\titlepage}
\section{Sumário}
\frame{\tableofcontents}
\section{Usando Beamer}
\frame
Granzotto, D. C. T. 34
Leal. M. A. V.
6.3. DEFININDO AS PRIMEIRAS LÂMINAS DA APRESENTAÇÃO
{
\frametitle{Caracterı́sticas}
\begin{itemize}
\item<1-> Classe \LaTeX;
\item<2-> Sobreposição (overlays);
\item<3-> Transições animadas.
\end{itemize}
}
\end{document}
Em seguida, logo depois do \begin{document}, digite o código ao lado que será criado
um slide para o tı́tulo.
\begin{frame}[plain]
\titlepage
\end{frame}
\frame{
\frametitle{Sum¶ario}
\tableofcontents
}
Granzotto, D. C. T. 35
Leal. M. A. V.
6.4. DEFININDO OS SLIDES
\pgfdeclareimage[height=1.4cm]{logo}{DESlogo}
\logo{\pgfuseimage{logo}}
\begin{frame}{tı́tulo do slide}
conteudo...
\end{frame}
E no conteúdo podemos:
• Blocos e caixas.
\begin{frame}{Exemplo de um Slide}
Dentro de um slide podemos colocar equações:
$$\bar{X} = \frac{\sum_{i=1}ˆn X_i}{n}.$$
Granzotto, D. C. T. 36
Leal. M. A. V.
6.5. USANDO AMBIENTE VERBATIM EM UM SLIDE
\begin{enumerate}
\item \textbf{Texto em negrito}
\item \textit{Texto em itálico}
\item {\color{blue} Texto em azul}
\end{enumerate}
\end{frame}
\begim{frame}
...
\end{frame}
\begin{multicols}{2}
...
\end{multicols}.
Mas esse comando tem uma limitação: todas as colunas tem mesma largura. Em
apresentações muitas vezes é interessante dividir a largura da página em colunas de ta-
manhos diferentes. Para isso podemos usar o comando:
\begin{columns}
...
\end{columns}.
Dentro, cada nova coluna será iniciada por \column{p\textwidth}, onde p indica a porcen-
tagem da largura do texto ocupada pela coluna. Veja um exemplo:
Granzotto, D. C. T. 37
Leal. M. A. V.
6.7. TEMAS E CORES
\begin{columns}
\column{0.7\textwidth}
Coluna 1
\column{0.3\textwidth}
Coluna 2
\end{columns}
Outro recurso para organizar informações é com uso de blocos.O uso de blocos permite
agrupar um conjunto de informações de uma lâmina em uma unidade (o bloco) com um
tı́tulo.Blocos são definidos usando-se o ambiente “block”:
\begin{block}{Tı́tulo do bloco}
...
\end{block}
\usetheme{Nome do Tema}
\usecolortheme{Nome do padrão de cor}
Granzotto, D. C. T. 38
Leal. M. A. V.
Capı́tulo 7
7.1 Introdução
O processo se baseia na premissa de utilizar o ambiente do R para criar e manipular
arquivos no intuito de criar um arquivo do tipo .tex (padrão do arquivo utilizado pelo LATEX),
tendo assim todo o ferramental de programação do R combinado com os comandos do LATEX.
Algumas das vantagens de se utilizar este método são:
Exemplo:
39
7.3. CRIANDO O PRIMEIRO ARQUIVO .TEX
ou seja, ele criou uma string única concatenando a string ”O valor de x é:”com o valor
que estava contido dentro do objeto x, no caso o valor númerico 50. Ainda podemos
concatenar mais de dois objetos e/ou strings.
Exemplo:
a=5;b=6;
cat("O Valor de a é:",a,"e o valor de b é: ",b)
data(iris)
sink(file="output.txt")
print(summary(iris))
sink() # termina o envio para o ficheiro
Perceba que o comando acima ira criar um arquivo do tipo .txt no diretório que esta
definido dentro do R, contendo as informações retornadas da função ”summary”do
banco de dados ”iris”.
Definimos as principais funções necessárias para a criação do arquivo .tex para gerarmos
o codigo LATEXde dentro do R. Outras funções serão apresentadas no decorrer dos exemplos.
setwd("C://Users//mleal//Desktop//exemplolatex//")
file="corpo.tex"
sink(file, append=F)
cat("
Granzotto, D. C. T. 40
Leal. M. A. V.
7.4. IMPRIMINDO OBJETOS DO R
\\documentclass[12pt,a4paper]{article}
\\usepackage[utf8]{inputenc}
\\usepackage[portuguese]{babel}
\\usepackage[T1]{fontenc}
\\usepackage{amsmath}
\\usepackage{amsfonts}
\\usepackage{amssymb}
\\usepackage{graphicx}
\\usepackage[left=0.5cm,right=0.5cm,top=0.5cm,bottom=0.5cm]{geometry}
\\usepackage{multicol}
\\usepackage{venndiagram}
\\usepackage{float}
\\usepackage{slashbox}
\\usepackage{ragged2e}\n"
)
cat("\\begin{document}\n")
cat("\\end{document}")
data(iris)
resumo=summary(iris$Sepal.Length)
setwd("C://Users//mleal//Desktop//sinklatex//")
file="corpo.tex"
Granzotto, D. C. T. 41
Leal. M. A. V.
7.4. IMPRIMINDO OBJETOS DO R
sink(file, append=F)
cat("
\\documentclass[12pt,a4paper]{article}
\\usepackage[utf8]{inputenc}
\\usepackage[portuguese]{babel}
\\usepackage[T1]{fontenc}
\\usepackage{amsmath}
\\usepackage{amsfonts}
\\usepackage{amssymb}
\\usepackage{graphicx}
\\usepackage[left=0.5cm,right=0.5cm,top=0.5cm,bottom=0.5cm]{geometry}
\\usepackage{multicol}
\\usepackage{venndiagram}
\\usepackage{float}
\\usepackage{slashbox}
\\usepackage{ragged2e}\n"
)
cat("\\begin{document}\n")
Perceba que o arquivo foi criado com as informações referentes ao resumo da variável
”Sepal.Length”do banco de dados ”iris”, mas que as informações não ficaram formatadas
corretamente, pois a impressão dos dados no arquivo não entende que os nomes de cada
valor deve ficar alinhado com o seu valor, ou seja, as impressões devem ser manipuladas
de modo que cada valor e nome fiquem espaçados de forma correta para que o valor fique
exatamente em baixo do nome.
Vamor formatar manualmente esses valores no próximo exemplo para vermos com fun-
ciona.
Granzotto, D. C. T. 42
Leal. M. A. V.
7.4. IMPRIMINDO OBJETOS DO R
data(iris)
resumo=round(summary(iris$Sepal.Length),2)
nomes=names(resumo)
setwd("C://Users//mleal//Desktop//sinklatex//")
file="corpo.tex"
sink(file, append=F)
cat("
\\documentclass[12pt,a4paper]{article}
\\usepackage[utf8]{inputenc}
\\usepackage[portuguese]{babel}
\\usepackage[T1]{fontenc}
\\usepackage{amsmath}
\\usepackage{amsfonts}
\\usepackage{amssymb}
\\usepackage{graphicx}
\\usepackage[left=0.5cm,right=0.5cm,top=0.5cm,bottom=0.5cm]{geometry}
\\usepackage{multicol}
\\usepackage{venndiagram}
\\usepackage{float}
\\usepackage{slashbox}
\\usepackage{ragged2e}\n"
)
cat("\\begin{document}\n")
Vemos que agora as informações estão alinhadas, ou seja, cada valor está abaixo de cada
nome. Os comandos \nrealiza a quebra de linha no arquivo .tex, e consequentemente o
Granzotto, D. C. T. 43
Leal. M. A. V.
7.5. IMPRIMINDO INFORMAÇÕES EM TABELAS
Łátex interpreta a quebra linha colocando todo o texto que vem a seguir para uma linha
abaixo. Os comando \hspace realiza um espaçamento horizontal entre as observações para
que fiquem alinhadas com os seus respectivos nomes. Para entendermos melhor, realize a
seguinte modificação no código executado anteriormente, nesta parte:
...
cat("Abaixo temos o resumo da variavel Sepal.Length.\n\n")
cat(nomes[1],nomes[2],nomes[3],nomes[4],nomes[5],nomes[6])
...
data(iris)
resumo=round(summary(iris$Sepal.Length),2)
nomes=names(resumo)
setwd("C://Users//mleal//Desktop//sinklatex//")
file="corpo.tex"
sink(file, append=F)
cat("
\\documentclass[12pt,a4paper]{article}
\\usepackage[utf8]{inputenc}
\\usepackage[portuguese]{babel}
\\usepackage[T1]{fontenc}
Granzotto, D. C. T. 44
Leal. M. A. V.
7.5. IMPRIMINDO INFORMAÇÕES EM TABELAS
\\usepackage{amsmath}
\\usepackage{amsfonts}
\\usepackage{amssymb}
\\usepackage{graphicx}
\\usepackage[left=0.5cm,right=0.5cm,top=0.5cm,bottom=0.5cm]{geometry}
\\usepackage{multicol}
\\usepackage{venndiagram}
\\usepackage{float}
\\usepackage{slashbox}
\\usepackage{ragged2e}\n"
)
cat("\\begin{document}\n")
data(iris)
resumo=round(summary(iris$Sepal.Length),2)
nomes=names(resumo)
setwd("C://Users//mleal//Desktop//sinklatex//")
file="corpo.tex"
sink(file, append=F)
Granzotto, D. C. T. 45
Leal. M. A. V.
7.5. IMPRIMINDO INFORMAÇÕES EM TABELAS
cat("
\\documentclass[12pt,a4paper]{article}
\\usepackage[utf8]{inputenc}
\\usepackage[portuguese]{babel}
\\usepackage[T1]{fontenc}
\\usepackage{amsmath}
\\usepackage{amsfonts}
\\usepackage{amssymb}
\\usepackage{graphicx}
\\usepackage[left=0.5cm,right=0.5cm,top=0.5cm,bottom=0.5cm]{geometry}
\\usepackage{multicol}
\\usepackage{venndiagram}
\\usepackage{float}
\\usepackage{slashbox}
\\usepackage{ragged2e}\n"
)
cat("\\begin{document}\n")
cat("\n\n \\end{document}")
Veja que com o comando \hline acrescentamos linhas horizontais dividindo as linhas
da tabela.
Granzotto, D. C. T. 46
Leal. M. A. V.
7.5. IMPRIMINDO INFORMAÇÕES EM TABELAS
rm(list=ls())
setwd("C://Users//mleal//Desktop//sinklatex//")
data(iris);
data<-iris
head(data)
nomes=tolower(sapply(1:4,function(i) paste0("det",names(data)[i]) ));nomes
detalhes<-sapply(1:4,function(i) assign(nomes[i],hist(data[,i])))
sapply(1:4,function(i) detalhes[,i]$xname<<-nomes[i])
dev.off()
file="corpo.tex"
sink(file,append = T)
##entrada de pacotes
cat("
\\documentclass[20pt,a4paper]{article}
\\usepackage[utf8]{inputenc}
\\usepackage[portuguese]{babel}
\\usepackage[T1]{fontenc}
\\usepackage{amsmath}
\\usepackage{amsfonts}
\\usepackage{amssymb}
\\usepackage{graphicx}
\\usepackage[left=0.5cm,right=0.5cm,top=0.5cm,bottom=0.5cm]{geometry}
\\usepackage{multicol}
\\usepackage{venndiagram}
\\usepackage{float}
\\usepackage{slashbox}
\\usepackage{ragged2e}\n\n"
)
##
cat("\\begin{document}")
###Tabela 1 #######
cat("
\\begin{table}[h]
Granzotto, D. C. T. 47
Leal. M. A. V.
7.5. IMPRIMINDO INFORMAÇÕES EM TABELAS
\\begin{center}
\\caption{\\LARGE Tabela ",nomes[1],"}
\\Large
\\begin{tabular}{lccc}
\\hline \n
")
cat("
\\bf Classes & \\bf Frequencia Absoluta & \\bf Densidade & \\bf Ponto Medio \\\\ \n \
detalhes[,1]$breaks[1], "|----", detalhes[,1]$breaks[2] ,"&",detalhes[,1]$counts[1],
"&",detalhes[,1]$density[1],"&",detalhes[,1]$mids[1],"\\\\\\\\ \n",
detalhes[,1]$breaks[2], "|----", detalhes[,1]$breaks[3] ,"&",detalhes[,1]$counts[2],
"&",detalhes[,1]$density[2],"&",detalhes[,1]$mids[2],"\\\\\\\\ \n",
detalhes[,1]$breaks[3], "|----", detalhes[,1]$breaks[4] ,"&",detalhes[,1]$counts[3],
"&",detalhes[,1]$density[3],"&",detalhes[,1]$mids[3],"\\\\\\\\ \n",
detalhes[,1]$breaks[4], "|----", detalhes[,1]$breaks[5] ,"&",detalhes[,1]$counts[4],
"&",detalhes[,1]$density[4],"&",detalhes[,1]$mids[4],"\\\\\\\\ \n",
detalhes[,1]$breaks[5], "|----", detalhes[,1]$breaks[6] ,"&",detalhes[,1]$counts[5],
"&",detalhes[,1]$density[5],"&",detalhes[,1]$mids[5],"\\\\\\\\ \n",
detalhes[,1]$breaks[6], "|----", detalhes[,1]$breaks[7] ,"&",detalhes[,1]$counts[6],
"&",detalhes[,1]$density[6],"&",detalhes[,1]$mids[6],"\\\\\\\\ \n",
detalhes[,1]$breaks[7], "|----", detalhes[,1]$breaks[8] ,"&",detalhes[,1]$counts[7],
"&",detalhes[,1]$density[7],"&",detalhes[,1]$mids[7],"\\\\\\\\ \n",
detalhes[,1]$breaks[8], "|----", detalhes[,1]$breaks[9] ,"&",detalhes[,1]$counts[8],
"&",detalhes[,1]$density[8],"&",detalhes[,1]$mids[8],"\\\\\\\\ \n
")
cat("
\\hline
\\end{tabular}
\\end{center}
\\end{table}\n
")
##########################
cat("\\end{document}")
sink()
Granzotto, D. C. T. 48
Leal. M. A. V.
7.5. IMPRIMINDO INFORMAÇÕES EM TABELAS
...
cat("
\\bf Classes & \\bf Frequencia Absoluta & \\bf Densidade & \\bf Ponto Medio
\\\\ \n \\hline \\\\ \n",
detalhes[,1]$breaks[1], "|----", detalhes[,1]$breaks[2] ,"&",detalhes[,1]$counts[1],
"&",detalhes[,1]$density[1],"&",detalhes[,1]$mids[1],"\\\\\\\\ \n",
detalhes[,1]$breaks[2], "|----", detalhes[,1]$breaks[3] ,"&",detalhes[,1]$counts[2],
"&",detalhes[,1]$density[2],"&",detalhes[,1]$mids[2],"\\\\\\\\ \n",
detalhes[,1]$breaks[3], "|----", detalhes[,1]$breaks[4] ,"&",detalhes[,1]$counts[3],
"&",detalhes[,1]$density[3],"&",detalhes[,1]$mids[3],"\\\\\\\\ \n",
detalhes[,1]$breaks[4], "|----", detalhes[,1]$breaks[5] ,"&",detalhes[,1]$counts[4],
"&",detalhes[,1]$density[4],"&",detalhes[,1]$mids[4],"\\\\\\\\ \n",
detalhes[,1]$breaks[5], "|----", detalhes[,1]$breaks[6] ,"&",detalhes[,1]$counts[5],
"&",detalhes[,1]$density[5],"&",detalhes[,1]$mids[5],"\\\\\\\\ \n",
detalhes[,1]$breaks[6], "|----", detalhes[,1]$breaks[7] ,"&",detalhes[,1]$counts[6],
"&",detalhes[,1]$density[6],"&",detalhes[,1]$mids[6],"\\\\\\\\ \n",
detalhes[,1]$breaks[7], "|----", detalhes[,1]$breaks[8] ,"&",detalhes[,1]$counts[7],
"&",detalhes[,1]$density[7],"&",detalhes[,1]$mids[7],"\\\\\\\\ \n",
detalhes[,1]$breaks[8], "|----", detalhes[,1]$breaks[9] ,"&",detalhes[,1]$counts[8],
"&",detalhes[,1]$density[8],"&",detalhes[,1]$mids[8],"\\\\\\\\ \n
")
...
Perceba que neste caso, criamos uma tabela referente as primeira variável do data frame
”data”e adicionamos manualmente item por item dos elementos que compõem a tabela.
Para criarmos as outras 3 tabelas referente as outras 3 varáveis, no método usual, ou seja,
se não estivéssemos manipulando o Látex no R, terı́amos que pegar todas as informações
da tabela de cada variável e criarmos tabela por tabela, digitando todas as informações.
Veremos nas seções seguintes que com o auxilio do R podemos criar estas tabela de forma
dinâmica sem precismos ficar digitando e criando todas as tabelas manualmente.
Granzotto, D. C. T. 49
Leal. M. A. V.
7.5. IMPRIMINDO INFORMAÇÕES EM TABELAS
rm(list=ls())
setwd("C://Users//mleal//Desktop//sinklatex//")
data(iris);
data<-iris
head(data)
nomes=tolower(sapply(1:4,function(i) paste0("det",names(data)[i]) ));nomes
detalhes<-sapply(1:4,function(i) assign(nomes[i],hist(data[,i])))
sapply(1:4,function(i) detalhes[,i]$xname<<-nomes[i])
dev.off()
file="corpo.tex"
sink(file,append = T)
##entrada de pacotes
cat("
\\documentclass[20pt,a4paper]{article}
\\usepackage[utf8]{inputenc}
\\usepackage[portuguese]{babel}
\\usepackage[T1]{fontenc}
\\usepackage{amsmath}
\\usepackage{amsfonts}
\\usepackage{amssymb}
\\usepackage{graphicx}
\\usepackage[left=0.5cm,right=0.5cm,top=0.5cm,bottom=0.5cm]{geometry}
\\usepackage{multicol}
\\usepackage{venndiagram}
\\usepackage{float}
\\usepackage{slashbox}
\\usepackage{ragged2e}\n\n"
)
##
Granzotto, D. C. T. 50
Leal. M. A. V.
7.5. IMPRIMINDO INFORMAÇÕES EM TABELAS
cat("\\begin{document}")
##########################
###Tabela 2 #######
cat("
\\begin{table}[h]
\\begin{center}
\\caption{\\LARGE Tabela ",nomes[1],"}
\\Large
\\begin{tabular}{lccc}
\\hline \n
")
cat("
\\bf Classes & \\bf Frequencia Absoluta & \\bf Densidade & \\bf Ponto Medio \\\\ \n \
")
for(i in 1:length(detalhes[,1]$counts)){
}
cat("
\\hline
\\end{tabular}
\\end{center}
\\end{table}\n
")
##########################
cat("\\end{document}")
sink()
...
for(i in 1:length(detalhes[,1]$counts)){
Granzotto, D. C. T. 51
Leal. M. A. V.
7.5. IMPRIMINDO INFORMAÇÕES EM TABELAS
}
...
rm(list=ls())
setwd("C://Users//mleal//Desktop//sinklatex//")
data(iris)
data<-iris
head(data)
nomes=tolower(sapply(1:4,function(i) paste0("det",names(data)[i]) ))
nomes
detalhes<-sapply(1:4,function(i) hist(data[,i]))
sapply(1:4,function(i) detalhes[,i]$xname<<-nomes[i])
lj<-dim(detalhes)[2];lj
file="corpo1.tex"
sink(file,append = F)
##entrada de pacotes
cat("
\\documentclass[12pt,a4paper]{article}
\\usepackage[utf8]{inputenc}
\\usepackage[portuguese]{babel}
\\usepackage[T1]{fontenc}
\\usepackage{amsmath}
\\usepackage{amsfonts}
\\usepackage{amssymb}
\\usepackage{graphicx}
Granzotto, D. C. T. 52
Leal. M. A. V.
7.5. IMPRIMINDO INFORMAÇÕES EM TABELAS
\\usepackage[left=0.5cm,right=0.5cm,top=0.5cm,bottom=0.5cm]{geometry}
\\usepackage{multicol}
\\usepackage{venndiagram}
\\usepackage{float}
\\usepackage{slashbox}
\\usepackage{ragged2e}\n"
)
cat("\\begin{document}")
for(j in 1:lj){
##########################
###Tabela 2 #######
cat("
\\begin{table}[h]
\\begin{center}
\\caption{\\LARGE Tabela ",nomes[j],"}
\\Large
\\begin{tabular}{lccc}
\\hline \n
")
cat("
\\bf Peso em Classes & \\bf Frequencia Absoluta & \\bf Densidade & \\bf Ponto Medio \\
")
for(i in 1:length(detalhes[,j]$counts)){
cat(detalhes[,j]$breaks[i], "|----", detalhes[,j]$breaks[i+1] ,"&",detalhes[,j]$counts
}
cat("
\\hline
\\end{tabular}
\\end{center}
\\end{table}\n\n\n\n
%----------------------------------------------------------------
")
}
cat("\\end{document}")
Granzotto, D. C. T. 53
Leal. M. A. V.
7.6. EXECUTANDO E CONVERTENDO UM ARQUIVO .TEX NO R
Pronto o exemplo acima irá criar 4 tabelas referente as 4 variáeis contidas no data frame.
Utlizamos dois laços de repetição onde o primeiro referenciado pelo indice ”j”que ira variar
de 1 até a quantidade de variáveis contidas no data frame e segundo laço referenciado pelo
indice ”i”ira variar de 1 atá a quantidade de linhas que cada tabela devera conter.
• Função latexmk() : Função responsável por executar um arquivo .tex e gerar o arquivo
.pdf. Esta função necessita da instalação do pacote ”tinytex”no R.
setwd("C://Users//mleal//Desktop//exemplolatex//")
file="corpo.tex"
sink(file, append=F)
cat("
\\documentclass[12pt,a4paper]{article}
\\usepackage[utf8]{inputenc}
\\usepackage[portuguese]{babel}
\\usepackage[T1]{fontenc}
\\usepackage{amsmath}
\\usepackage{amsfonts}
\\usepackage{amssymb}
\\usepackage{graphicx}
\\usepackage[left=0.5cm,right=0.5cm,top=0.5cm,bottom=0.5cm]{geometry}
\\usepackage{multicol}
\\usepackage{venndiagram}
\\usepackage{float}
Granzotto, D. C. T. 54
Leal. M. A. V.
7.7. SALVANDO E INCLUINDO GRÁFICOS
\\usepackage{slashbox}
\\usepackage{ragged2e}\n"
)
cat("\\begin{document}\n")
cat("\\end{document}")
Veja que, utilizamos a função ”latexmk”e passamos o nome do arquivo .tex como
argumento, ou seja, a função irá executar e processar o arquivo .tex gerando o ar-
quivo corpo.pdf. A função ”shell.exec”está recebendo o nome ”corpo.pdf”, ou seja,
ele irá abrir o arquivo .pdf que foi gerado através da função ”latexmk”. Com estas
duas funções a abertura de uma IDE de Latex para processar arquivos .tex se torna
dispensável, podemos executar e gerar arquivos .tex dentro do próprio R.
rm(list=ls())
library(tinytex)
library(knitr)
setwd("C://Users//MLeal//Desktop//sinklatex//")
data<-read.table(file="ex1.csv",header = T,sep=";",
stringsAsFactors = F,dec=",")
Granzotto, D. C. T. 55
Leal. M. A. V.
7.7. SALVANDO E INCLUINDO GRÁFICOS
nomes=tolower(sapply(2:7,function(i)
paste0("det",names(data)[i]) ))
detalhes<-sapply(2:7,function(i) hist(data[,i]))
sapply(1:6,function(i) detalhes[,i]$xname<<-nomes[i])
l<-length(data);l
paste0(nomes[2:7],".png")
if(any(list.files() == "graficos")){
cat("Pasta ja Existe!")
}else{dir.create("graficos")}
for(i in 2:l){
png(file = paste0("graficos//",nomes[i-1],".png"),
bg = "white",width = 1368, height = 768)
hist(
data[,i],cex.axis=2,cex.lab=2,cex.main=2,probability=T,
adj=0.5,bty="l",family="serif",
ylab="Densidade do Comprimento dos Peixes",
xlab="Comprimento dos Peixes",
main="Histograma do Comprimento dos Peixes"
)
dev.off()
dev.flush()
#shell.exec("myplot.png")
}
Granzotto, D. C. T. 56
Leal. M. A. V.
7.7. SALVANDO E INCLUINDO GRÁFICOS
rm(list=ls())
library(tinytex)
library(knitr)
setwd("C://Users//MLeal//Desktop//sinklatex//")
data<-read.table(file="ex1.csv",header = T,sep=";",
stringsAsFactors = F,dec=",")
nomes=tolower(sapply(2:7,function(i) paste0("det",names(data)[i]) ))
detalhes<-sapply(2:7,function(i) hist(data[,i]))
sapply(1:6,function(i) detalhes[,i]$xname<<-nomes[i])
lj<-dim(detalhes)[2];lj
gnomes<-sapply(1:6,function(i) paste0("{graficos/",nomes[i],".png}"))
file="corpo1.tex"
if(file.exists(file)){
unlink(file)
}
sink(file,append = F)
cat("
\\documentclass[12pt,a4paper]{article}
\\usepackage[utf8]{inputenc}
\\usepackage[portuguese]{babel}
\\usepackage[T1]{fontenc}
\\usepackage{graphicx}
\\usepackage[left=0.5cm,right=0.5cm,top=0.5cm,bottom=0.5cm]{geometry}
\\usepackage{multicol}
\\usepackage{venndiagram}
\\usepackage{float}
\\usepackage{slashbox}
\\usepackage{ragged2e}\n"
)
Granzotto, D. C. T. 57
Leal. M. A. V.
7.7. SALVANDO E INCLUINDO GRÁFICOS
cat("\\begin{document}")
for(j in 1:lj){
###Tabela 2 #######
cat("
\\begin{table}[h]
\\begin{center}
\\caption{\\LARGE Tabela ",nomes[j],"}
\\Large
\\begin{tabular}{lccc}
\\hline \n
")
cat("
\\bf Peso em Classes & \\bf Frequencia Absoluta & \\bf Densidade & \\bf Ponto Medio \\
")
for(i in 1:length(detalhes[,j]$counts)){
}
cat("
\\hline
\\end{tabular}
\\end{center}
\\end{table}\n\n\n\n
%----------------------------------------------------------------
")
cat(
"
\\includegraphics[width=20cm]",gnomes[j],"\\",
"\\newpage")
Granzotto, D. C. T. 58
Leal. M. A. V.
7.7. SALVANDO E INCLUINDO GRÁFICOS
cat("\\end{document}")
sink()
latexmk("corpo1.tex" )
shell.exec("corpo1.pdf")
Granzotto, D. C. T. 59
Leal. M. A. V.