Você está na página 1de 63

INTRODUÇÃO AO LaTeX

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

3 Inserindo fórmulas matemáticas 16


3.1 Conhecimento básico para fórmulas matemáticas . . . . . . . . . . . . . . . . 19
3.1.1 Frações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.2 Índices, Expoente e raı́zes . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.3 Números Binomiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.4 Conjuntos Númericos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.5 Parênteses, Colchetes e Chaves . . . . . . . . . . . . . . . . . . . . . . . 20

1
SUMÁRIO

3.1.6 Outras operações matematicas Importantes . . . . . . . . . . . . . . . . 21


3.1.7 Limites,derivadas e integrais . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.8 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.9 Sistemas Lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2 Ambientes de enumeração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Teoremas, definições e Proposições . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.4 Tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.1 Ambiente table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4 Inserindo Imagens 28

5 Capı́tulos, Seções, Sumário 30


5.1 Capı́tulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.2 Seções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.3 Sumário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.4 Referências Bibliográficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

6 Criando Apresentação de slides com beamer 33


6.1 Introdução ao beammer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.2 Estrutura de uma apresentação Beamer . . . . . . . . . . . . . . . . . . . . . . 33
6.3 Definindo as primeiras lâminas da apresentação . . . . . . . . . . . . . . . . . 35
6.4 Definindo os slides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.5 Usando ambiente Verbatim em um slide . . . . . . . . . . . . . . . . . . . . . . 37
6.6 Organizando as informações no slide . . . . . . . . . . . . . . . . . . . . . . . . 37
6.7 Temas e Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

7 Manipulando Látex usando R 39


7.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.2 Algumas funções do R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.3 Criando o primeiro arquivo .tex . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.4 Imprimindo objetos do R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
7.5 Imprimindo informações em Tabelas . . . . . . . . . . . . . . . . . . . . . . . . 44
7.5.1 Imprimindo tabelas de frequências . . . . . . . . . . . . . . . . . . . . . 47
7.5.2 Criando tabelas de forma iterativa . . . . . . . . . . . . . . . . . . . . . 50
7.6 Executando e convertendo um arquivo .tex no R . . . . . . . . . . . . . . . . . 54
7.7 Salvando e Incluindo gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.7.1 Salvando gráficos no R . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.7.2 Incluindo gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

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:

• O que significa LATEX?

• 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 O que é LATEX?


LaTeX é uma implementação da linguagem TeX, criada em 1978. Diferentemente de
editores como Word, LaTeX não apresenta uma interface amigável. Por essa razão, muitas
pessoas se perguntam:
Por que eu deveria abandonar algo simples e adotar algo mais complexo?
Abaixo vão 12 razões — algumas retiradas e adaptadas deste site (em inglês).

1
1.2. MIKTEX E EDITORES DE TEXTOS LATEX

1. O padrão matemático em TeX gera equações e funções corretamente formatadas. Em


Word, o editor de equações está longe de ser ideal.
2. TeX não apresenta bugs — o Word, como sabemos, está recheado de bugs.
3. TeX é gratuito e livre.
4. Em TeX, você pode comentar o seu código/texto no mesmo espaço em que seu conteúdo
é gerado.
5. TeX oferece uma linguagem completa. Ou seja: você pode criar funções que efetuam
um procedimento para você (muitas dessas funções não podem ser criadas via macros em
Word).
6. Não há vı́rus de macros em TeX. Ou seja: maior segurança.
7. Não há incompatibilidade de versões: se você criou um arquivo TeX em 1995, conse-
guirá abri-lo perfeitamente hoje.
8. LaTeX oferece uma maneira independente de lidar com bibliografias. Nada de comprar
EndNote ou algo parecido: toda a sua biblioteca de referências é mantida em um simples
arquivo, ao qual você conecta citações.
9. Documentos em TeX são pequenos e rápidos.
10. LaTeX é o padrão cientı́fico/acadêmico em diversas áreas do conhecimento — e nos
maiores centros acadêmicos do mundo.
11. LaTeX gera documentos mais aprimorados esteticamente, com menos hifenizações e
menos espaçamentos exagerados entre palavras.
12. Seu pdf é gerado com uma estrutura interna, em que você acessa seções via links —
isso é feito automaticamente com um pacote.
Gosto da opinião de M. Becker (UMass) neste assunto. Segundo ele, um estudante de
pós-graduação tem duas opções para produzir seus documentos.
1. Tornar-se um usuário sofisticado de Word (ou similar). Minimamente, conheça bem
os estilos do Word, numeração automática de seções, referências entre figuras, exemplos e
seções. Além disso, você precisará saber utilizar muito bem softwares como EndNote, para
lidar com bibliografias.
2. Aprender a usar LaTeX, um sistema excelente de compilação de texto que cria docu-
mentos acadêmicos com um alto padrão estético. LaTeX foi criado com o mundo acadêmico
em mente, não tem bugs e é gratuito.

1.2 MiKTeX e editores de textos LATEX


MiKTeX é uma distribuição TeX/LATEXpara Microsoft Windows desenvolvida por Chris-
tian Schenk.Consiste numa implementação do sistema TeX e um conjunto de programas
relacionados. MiKTeX provê as ferramentas necessárias para preparar documentos utili-
zando a linguagem TeX/LATEX.

Granzotto, D. C. T. 2
Leal. M. A. V.
1.3. INSTALANDO O MIKTEX E UM EDITOR DE TEXTO:TEXSTUDIO

Os Editores são um ambiente de desenvolvimento ao LATEX. Permite que sejam usadas


todas as funcionalidades do LATEXem modo gráfico, facilitando e costumizando o acesso
a todos os programas do LATEXcomo compiladores, postporessing, debbug, conversões e
ferramentas de visualização. Alguns editores usados são Texmaker, TeXstudio e outros.
Ainda há uma plataforma de edição LATEXonline chamada Overleaf, onde nela podemos
executar e compartilhar projetos a mais de uma pessoa.Abaixo segue o link da plataforma
Overleaf:

https://www.overleaf.com

1.3 Instalando o MiKTex e um editor de Texto:TeXstudio

Entre no site do MiKTeX, https://miktex.org e em seguida vá até a aba Downloads:

Granzotto, D. C. T. 3
Leal. M. A. V.
1.3. INSTALANDO O MIKTEX E UM EDITOR DE TEXTO:TEXSTUDIO

Na aba ”Downloads, selecione o Sistema Operacional e realize o download.

Abra o arquivo, selecione a caixa de seleção e clique em ”Avançar”:

Granzotto, D. C. T. 4
Leal. M. A. V.
1.3. INSTALANDO O MIKTEX E UM EDITOR DE TEXTO:TEXSTUDIO

Clique em ”Avançar”até chegar na tela abaixo, e clique em ”Start”, e aguarde o fim da


instalação.

Granzotto, D. C. T. 5
Leal. M. A. V.
1.4. ESTRUTURA DE UM DOCUMENTO LATEX

Entre no site do TeXstudio, faça o download e instale.

1.4 Estrutura de um documento LATEX


Um documento LATEXse divide basicamente em duas partes:

• Preâmbulo;s

• Texto.

No preâmbulo fazemos as definições do docmuento: margens, estilo, tipo de letra, tama-


nho de letra, numeração de páginas e etc. Isso tudo é feito através da inserção de pacotes
(packages). A segunda parte é o texto propriamente dito. Veja abaixo um exemplo:

%-----PREÂMBULO-------

\documentclass[a4paper,12pt]{report}
\usepackage[brazil]{babel}

%-----TEXTO-----------
\begin{document}

Aqui estará o texto sobre Estatı́stica.

\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 \\

Todo documento deve ter no seu inı́cio o comando:

\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:

• Tipo de Papel: a4paper, letterpaper, a5paper, b5paper, executivepaper e legalpaper.


Caso não seja informado, o formato usado será o letterpaper.Tamanho da letra: 10pt,
11pt ou 12pt. Caso não seja informado, o tamanho usado é 10pt.

• Layout da página: landscape (paisagem), twocolumn (duas colunas), oneside (imprime


em apenas um lado da página), twoside (impressão nos dois lados do papel)

• titlepage: para que seja gerada uma página exclusiva para o tı́tulo. Uma capa.

• leqno: numeração das páginas feita no lado esquerdo.

• openany: faz com que os capı́tulos se iniciem em qualquer página, ı́mpar ou par

Por exemplo:

\documentclass[a4paper, 12pt, twocolumn]{report}

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}

Para inserir um pacote, digitamos:

\usepackage[utf8]{inputenc}

Abaixo, os pacotes mais utilizados na produção de textos matemáticos:

• 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

• graphicx: pacote que permite a inserção de gráficos e figuras;

• makeidx: permite a criação do ı́ndice remissivo;

• amsfonts, amssymb: definem alguns estilos de letras e sı́mbolos para o ambiente


matemático. É um conjunto de fontes da American Mathematical Society;

• color: permite texto colorido;

• inputenc: permite o uso de caracteres com til e cedilha.

Granzotto, D. C. T. 8
Leal. M. A. V.
1.5. PACOTES

Para o propósito de produção de textos matemáticos (listas de exercı́cios, livros, artigos,


etc.) o pré-âmbulo abaixo é bastante satisfatório:

%-------------------------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

2.1 Tamanho da letras


Já vimos que no preâmbulo podemos escolher o tamanho da letra entre 10pt, 11pt, 12pt.
Alguns comandos podem ser usados para alterar o tamanho das letras em uma determinada
parte do texto:
• {\tiny texto};
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} ;

A alteração (local) no tamanho do texto depende do tamanho de letra fixado no preâmbulo.


Abaixo os tamanhos de acordo com o que é definido no preâmbulo:

10
2.2. ESTILO DO TEXTO

Tabela 2.1: Comandos e Tamanhos das Fontes


Tamanho (preâmbulo) 10pt 11pt 12pt
/tiny 5pt 6pt 6pt
/scriptsize 7pt 8pt 8pt
/footnotesize 8pt 9pt 10pt
/small 9pt 10pt 11pt
/normalsize 10pt 11pt 12pt
/large 12pt 12pt 14pt
/Large 14pt 14pt 17pt
/LARGE 17pt 17p t 20pt
/huge 20pt 20pt 25pt
/Huge 25pt 25pt 25pt

2.2 Estilo do texto

Podemos formatar o texto para que ele fique:

• itálico: {\it texto} ou textit{texto}

• negrito: {\bf texto} ou textbf{texto}

• subscrito: \underline{texto}

Para os comandos textit{texto}, textbf{texto} e \underline{texto} existem botões na ba

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

2.4 Parágrafo, Espaço e Espaçamento


2.4.1 Paragráfo
O parágrafo é feito simplesmente deixando uma linha em branco entre dois parágrafos.
Também pode ser feito utilizando o comando \quad ou \qquad para um espaçamento um
pouco maior.

2.4.2 Quebra de Linha


A mudança de linha pode ser feita de várias formas:

• Linha em branco entre duas linhas de texto;


• Duas barras no final da linha: ;
Nesse comando ainda podemos colocar o parâmetro de tamanho \\[tamanho].
Aı́ colocamos, por exemplo, em centı́metros o espaçamento que queremos. Se quisermos
um espaçamento menor que uma linha, basta colocar o parâmetro com sinal negativo. Por
exemplo:

\\[-0.2cm].

• Usando o comando \newline ao final da linha;


• Usando o comando \linebreak ao final da linha. A diferença para o comando ”ne-
wline”é que aqui o parágrafo fica justificado.

2.4.3 Espaço horizontal


Para pequenos espaços na horizontal podemos usar uma barra \.Isso dá um espaço de
um caractere.Para espaços um pouco maiores podemos usar \quad ou \qquad.Se quisermos
definir nossos próprios espaços, usamos o comando \hspace{XXcm} onde XX é o valor do
espaço (em centı́metros).

2.4.4 Espaço vertical


Para espaços maiores que um parágrafo podemos usar um comando semelhante ao usado
para espaçamento livre horizontal \vspace{XXcm}.

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

Lembrando que o nome das cores deve estar em inglês. Exemplos:

• \textcolor{blue}{Texto}

• \textcolor{red}{Texto}

• \textcolor{green}{\LaTeX}

• {\color{magenta}Text}

• {\color{cyan}Texto}

Produz o seguinte resultado:


• Texto
• Texto
• LATEX
• Texto
• 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

2.7 Numeração de páginas


O comando \pagestyle{opção} permite definir como será a numeração das páginas.
• \pagestyle{plain}:imprime o número da página no centro do rodapé.
• \pagestyle{headings}:imprime o nome do capı́tulo atual juntamente com o número
da página no cabeçalho.
• \pagestyle{empty}: não imprime o número das páginas.Caso queira não exibir o
número de uma página em especial, usa-se \thispagestyle{opção}.
Ainda há outra opções para a numeração na página, através da inclusão de outros pacotes,
mas essa tarefa ficará a cargo do leitor.

2.8 Ambiente verbatim


Na produção deste texto, por várias vezes se faz necessário ver o que se está escrevendo
no arquivo fonte. Por exemplo, foi dito acima que para mudar a cor de uma palavra para
verde, devemos digitar o seguinte comando:

\textcolor{green}{Palavra verde}

No arquivo fonte, se digitarmos o comando acima e compilarmos, veremos apenas Pala-


vra verde.
Aqui aparece o ambiente verbatim, isto é, quando desejamos ler no arquivo de saida o
que digitamos,de fato, no arquivo fonte. Existem dois comandos:
\verb +T E X T O +
ou
\begin{verbatim}
TEXTO
\end{verbatim}

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

A partir do comando twocolumn[tı́tulo] ocorre uma mudança de página e partir daı́ o


texto estará em duas colunas, sendo que o tı́tulo aparece em uma coluna apenas, no topo da
página. O parâmetro tı́tulo é opicional. O comando onecolumn determina o fim das colunas
e a partir desse o ponto o texto volta a formatação normal.

Granzotto, D. C. T. 15
Leal. M. A. V.
Capı́tulo 3

Inserindo fórmulas matemáticas

As fórmulas matemáticas são digitadas de uma maneira especial. Temos as seguintes


opções:

1. Fórmula junto ao texto, na mesma linha:


Uma equação do primeiro grau é uma expressão da forma ax + b = 0.
No arquivo fonte, digitamos: Uma equação do segundo grau é uma expressão da forma
$ax+b=0$.

2. Fórmula centralizada, em uma nova linha no arquivo fonte digitamos:


Uma equação do segundo grau é uma expressão da forma $$ax+b=0$$.

3. Fórmulas Numeradas:

\begin{equation}
ax+b=0
\end{equation}

Se quisermos escrever uma seqüência de equações, podemos usar o ambiente eqnarray


Se na equação 3x + y = 2 fizermos x = 1, teremos:

\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:

Se na equação $3x+y=2$ fizermos $x=1$, teremos:


\begin{eqnarray}
3x+y=2 \nonumber \\
y=2-3x\\
y=2-3.(1)\\
y=2-3 \nonumber \\
y=-1
\end{eqnarray}

Veja que tiramos a numeração de duas linhas. Teremos:


Se na equação 3x + y = 2 fizermos x = 1, teremos:

3x + y = 2
y = 2 − 3x (3.6)
y = 2 − 3.(1) (3.7)
y=2−3
y = −1 (3.8)

Se quisermos tirar a numeração de todas as linhas da expressão, usamos um asterisco


logo após a palavra eqnarray (tanto em begin como em end):
Se na equação 3x + y = 2 fizermos x = 1, teremos:

\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 &:

Se na equação $3x+y=2$ fizermos $x=1$, teremos:


\begin{eqnarray*}
3x+y & = & 2\\
y & = & 2-3x\\
y & = & 2-3.(1)\\
y & = & 2-3\\
y & = & -1
\end{eqnarray*}

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

3.1 Conhecimento básico para fórmulas matemáticas


3.1.1 Frações
Há dois comandos para inserir uma fração no texto em LATEX:
a
•$\frac{a}{b}$: b
a
• $\dfrac{a}{b}$:
b
3.1.2 Índices, Expoente e raı́zes
Os ı́ndices são definidos usando o caractere (underline).
x j : $x_j$

Caso o ı́ndice tenha mais que um dı́gito, usamos chaves:


x15 : $x_{15}$

Os expoentes são definidos usando o caractere ˆ(acento circunflexo).


xn : $xˆn$

Caso se deseje imprimir uma potência com mais de dois dı́gitos, usamos chaves:
x20 : xˆ{20}

Eventualmente, precisaremos escrever ı́ndices e potências ao mesmo tempo, como por


exemplo a20
2
. No documento fonte, escrevemos:

$a_2ˆ{20}$

Já a raiz n-ésima de um número, utiliza o comando \sqrt[ı́ndice]{valor}. Por exem-



plo, para imprimir 5 x escrevemos:

$\sqrt[5]{x}$

3.1.3 Números Binomiais


a
Para imprimir o número binomial b
digitamos no arquivo fonte
$\binom{a}{b}$

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

3.1.4 Conjuntos Númericos


O LATEX tem um tipo de fonte que pode ser usada localmente no texto para este fim. É
necessário o uso dos pacotes amsfonts, amssymb, mathrsfs.
• N :$\mathbb{N}$

• Z :$\mathbb{Z}$

• Q :$\mathbb{Q}$

• R : $\mathbb{R}$

• C : $\mathbb{C}$

Outros tipos de fontes ainda podem ser usadas, por exemplo:

• ABCDEF : $\mathcal{ABCDEF}:apenas letras maiúsculas;

• ABC1abc : $\mathfrak{ABC123abc};

3.1.5 Parênteses, Colchetes e Chaves


O uso de parênteses e colchetes é feito de maneira simples, basta usar o teclado do com-
putador:

$(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

Para corrigir isso, usamos os comandos:


 2
1 1
= : $\left(\dfrac{1}{2}\right)ˆ2=\dfrac{1}{4}$
2 4

3.1.6 Outras operações matematicas Importantes


• Módulo:

$|x|$ : |x|

• Maior,menor, igual, diferente

$\leq$ : ≤

$\geq$ : ≥

$\neq$ : ,

• Logaritmo e Exponencial

$eˆx$: ex

$exp(x)$: exp(x)

$\ln y$: ln y

$log_a b$: loga b

• 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

• Produto interno, produto vetorial

\langle \overrightarrow{u},\overrightarrow{v} \rangle : h→


−u , →
−v i

\overrightarrow{u} \bullet \overrightarrow{v} : →


−u • →
−v

\overrightarrow{u} \times \overrightarrow{v} : →


−u × →
−v

3.1.7 Limites,derivadas e integrais


$\lim_{h to 0}$: limh→0

$f’(x)$: f 0 (x)

$f’’(x)$: f 00 (x)

$f’’’(x)$: f 000 (x)

$fˆ{(n)}(x)$ : f (n) (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

Matriz no caso geral:

$$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

3.1.9 Sistemas Lineares


Comando:

$$\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:

a11 x1 + a12 x2 + . . . + a1n xn = b1






 a21 x1 + a22 x2 + . . . + a2n xn = b2




..
.






 a x + a x + ... + a x = b

n1 1 n2 2 nn n n

3.2 Ambientes de enumeração


Ambiente itemize:

\\item Primeira opção;


begin{itemize}
\item Segunda opção;
\item Terceira opção.
\end{itemize}

Como resultado, temos:

• 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

Como resultado, temos:

Primeira opção;

Segunda opção;

Terceira opção.

3.3 Teoremas, definições e Proposições


Primeiramente, vamos criar o ambiente TEOREMA, que deve ser incluı́do no PREAM-
BULO do arquivo:
\newtheorem{teo}{Teorema}[section]

Em adicionamos o ambiente ”teo”:

\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:

Teorema 1 Sejam a, b catetos de um triângulo retângulo e c sua hipotenusa. Então,

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}

Estes comandos produzem:


x y z
1 2 3
-1 4 0
Se quisermos fechar a tabela por completo, colocamos as linhas que ainda faltam (hori-
zontais usando o comando \hlinee as verticais através de barras verticais nos parâmetros
de alinhamento):

\begin{tabular}{|l|l|l|}
\hline
x & y & z\\
\hline
1 & 2 & 3\\
\hline
-1 & 4 & 0\\
\hline
\end{tabular}

O que resulta em:


x y z
1 2 3
-1 4 0

Granzotto, D. C. T. 26
Leal. M. A. V.
3.4. TABELAS

3.4.1 Ambiente table


Vejamos o exemplo abaixo

\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}

Também podemos criar listas de tabelas através do comandov\listoftablesque comu-


mente vem após o sumário, caso se esteja produzindo uma monografia, por exemplo.

Granzotto, D. C. T. 27
Leal. M. A. V.
Capı́tulo 4

Inserindo Imagens

É necessário incluir o pacote ”graphicx”para inclusao de figuras:

userpackage{graphicx}

Há um ambiente próprio para inclusão de figuras:

\begin{figure}
\includegraphics[opções]{nome_do_arquivo}
\end{figure}

Em opções, podemos definir altura, largura, proporção e ângulo de rotação da figura:

• Altura: height=20pt ou height=5cm, por exemplo;


• Largura: width=22pt ou width=7.5cm, por exemplo;
• Proporção: Percentual do tamanho da figura. Por exemplo: scale=0.5 siginifica que a
figura aparecerá num tamanho igual a 50
• Ângulo de rotação: Rotação em graus da figura com relação a horizontal, sentido
antihorário. Por exemplo: angle=120.
O nome do arquivo deve ser digitado com o caminho completo. Por exemplo, suponha
que o arquivo tenha nome figura1.eps e esteja no diretório aluno. Então, o caminho completo
é:
/home/aluno/figura1.jpg
No ambiente figure podemos definir ainda outros parâmetros:
• Legenda: através do comando \caption{textodalegenda}.As legendas são numera-
das automaticamente.

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}

Figura 4.1: Histograma

Podemos ainda incluir uma lista de figuras através do comando \listoffigures , a


figura que tiver legenda aparecerá nessa lista.

Granzotto, D. C. T. 29
Leal. M. A. V.
Capı́tulo 5

Capı́tulos, Seções, Sumário

5.1 Capı́tulos
Para criarmos um novo capitulo em nosso arquivo basta adicionarmos o comando abaixo:

\chapter { Nome }

Automaticamente é gerado o número do capı́tulo e a formatação do tı́tulo. Se por algum


motivo você não quiser que apareça o número do capı́tulo, basta digitar um asterisco, logo
após a palavra chapter.

5.2 Seções
Basicamente funciona como o capı́tulo, sendo que o seu comando é

\section{NomedaSeção}

Automaticamente são gerados os números das seções com numeração acompanhando


as do capı́tulo e a formatação do tı́tulo. Para que não apareça o número da seção, também
basta digitar um asterisco, logo após a palavra section.
Para adicionarmos subseções:

\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

5.4 Referências Bibliográficas


Na produção de monografias ou livros, obviamente existe a pesquisa a outros autores
e a ética e o bom senso mandam que se coloque em alguma parte de seu trabalho, os
tı́tulos e autores das obras utilizadas. É o que chamamos de Referências Bibliográficas.
Seguindo o princı́pio da organização, deve-se criar um arquivo exclusivo para as Referências
Bibliográficas. Além disso, isso deve ser feito de maneira a facilitar a citação durante toda
monografia ou livro que se está produzindo. Chamemos esse arquivo de bib.tex
Nele teremos:

\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}

O parâmetro n junto ao \begin{thebibliography} define a quantidade de citações que


se irá fazer no trabalho. Em cada item ( \bibitem) há dois campos:

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

Criando Apresentação de slides com


beamer

6.1 Introdução ao beammer


Beamer é uma classe LATEXpara criar apresentações de slides. Com ele podemos desen-
volver apresentações dinâmicas com sobreposições (overlays) e transições animadas entre
lâminas. O arquivo obtido é no formato PDF, o que torna as apresentações altamente
portáveis. Para usar a classe declara-se documentclass{beamer} no inı́cio do arquivo TEX.
Beamer aceita a estruturação do texto usando \section e \subsection. Slides individuais
s˜ão definidos dentro de \frame{ ... } ou \begin{frame} ... \end{frame}.
Beamer apresenta algumas vantagens para usuários LATEXem relação ao Powerpoint e
outras alternativas:

• Suporte do LATEXpara construções matemáticas é superior ao encontrado na plataforma


Word/Powerpoint;

• Facilidades para a estruturação das laminas decorrentes de LATEX(seção, subseção, etc.)


e facilidades para produzir a bibliografia (BiBTEX);

• Pode-se extrair as laminas da apresentação a partir do texto LATEXde um documento


qualquer (por exemplo, o artigo a ser apresentado em um evento);

• Melhores recursos que as classes Seminar e Prosper, particularmente o recurso \uncover;

• Multiplataforma, pois tanto TEX pode ser usado em diversos sistemas operacionais.

6.2 Estrutura de uma apresentação Beamer


Uma apresentação Beamer é formada por um conjunto de frames, que são as lâminas da
apresentação (slides). Pode ser estrutura em seções e subseções, e cada frame pode possuir

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}

Cada frame pode ser definido por:

\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}

Um exemplo de apresentação Beamer é:

\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}

6.3 Definindo as primeiras lâminas da apresentação


Podemos definir algumas informações prévias para serem usadas no primeiro slide,
como nome do autor, titulo da apresentação, data. Podemos incluir as informações abaixo
no preâmbulo do documento:

\title[tı́tulo curto]{tı́tulo longo}


\subtitle[subtı́tulo curto]{subtı́tulo longo}
\author[nome curto]{nome longo}
\date[data curta]{data longa}
\institution[nome curto]{nome longo}

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}

Será criado um frame(slide) contendo as informações definidas no preâmbulo com o


nome do autor, titulo, data, nome da instituição.Podemos ainda criar outro frame contendo
o Sumário da apresentação como segue abaixo:

\frame{
\frametitle{Sum¶ario}
\tableofcontents
}

Alguns temas pré-definidos do Beamer permitem que se coloque um logotipo nas


lâminas. Para definir o logotipo usa-se:

Granzotto, D. C. T. 35
Leal. M. A. V.
6.4. DEFININDO OS SLIDES

\pgfdeclareimage[height=1.4cm]{logo}{DESlogo}
\logo{\pgfuseimage{logo}}

O comando \pgfdeclareimage[height=1.4cm]{logo}{DESlogo} associa um arquivo de


imagem (DESlogo), a um identificador (logo). O comando \logo define o logotipo que será
repetido em todos os slides da apresentação.

6.4 Definindo os slides


No arquivo .tex os slides são limitados pelos comandos:

\begin{frame}{tı́tulo do slide}

conteudo...

\end{frame}

E no conteúdo podemos:

• Moddificar a fonte com negrito, itálico, sublinhado, cor, tamanho, . . .

• Criar listas, numeradas ou não.

• Moddificar o alinhamento do texto.

• Fazer espaçamentos verticais ou horizontais.

• Incluir equações matemáticas.

• Incluir tabelas e figuras.

• Criar mais de uma coluna para o texto.

• Blocos e caixas.

Como o exemplo a seguir:

\begin{frame}{Exemplo de um Slide}
Dentro de um slide podemos colocar equações:
$$\bar{X} = \frac{\sum_{i=1}ˆn X_i}{n}.$$

Podemos colocar listas, e qualquer formatação que fazı́amos nos


artigos e relatórios.

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}

Podemos criar espaçamentos verticais e horizontais com os comandos


que já usávamos pra isso.

\end{frame}

6.5 Usando ambiente Verbatim em um slide


Para conseguirmos usar o ambiente verbatim ou o comando \verb dentro de um slide
precisamos definir o frame da seguinte forma:

\begim{frame}
...
\end{frame}

6.6 Organizando as informações no slide


Para separar o frame em duas ou mais colunas podemos usar o comand:

\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}

6.7 Temas e Cores


Podemos mudar o tema dos slide e o padrão de cores que serão empregada nos slides,
para isso acrescentamos no preâmbulo os comandos:

\usetheme{Nome do Tema}
\usecolortheme{Nome do padrão de cor}

Encontre outros temas padrões de cores no link:


http://deic.uab.es/˜iblanes/beamer_gallery/index_by_theme_and_color.html.

Granzotto, D. C. T. 38
Leal. M. A. V.
Capı́tulo 7

Manipulando Látex usando R

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:

• Podemos imprimir as informações dos objetos do R diretamente para um arquivo, e


caso as informações da análise mude, não há necessidade de se digitar as informações
manualmente.

• Podemos gerar varias paginas de conteúdo, tabelas, gráficos contendo informações


distintas.

7.2 Algumas funções do R


Vamos definir o uso de algumas funções que serão utilizadas no processo.

• Função print() : Função genérica que imprime o argumento da função.

• Função cat() : Concatena e imprime os objetos.

Exemplo:

x<-50;cat("O valor de x é:",x)

Se rodarmos o comando acima no R, percebemos que a saı́da obtida é:

”O valor de x é: 50”

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)

Produzindo uma string única:


”O Valor de a é: 5 e o valor de é: 6”

• Função sink() : Envia o output bruto do console para um ficheiro/ligação.


Exemplo:

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.

7.3 Criando o primeiro arquivo .tex


Vamos criar um arquivo do tipo article no LATEX, contendo somente as definições iniciais(
tipo do documento e uso dos pacotes) e o inicio e o fim do documento. Como vimos
anteriormente a função sink() do R, cria um arquivo em um diretório definido pelo usuário
e as funções cat() e print() são responsáveis por imprimir o que quisermos neste arquivo.
Exemplo:

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("Meu primeiro documento Latex criado a partir do R.\n")

cat("\\end{document}")

sink() #Finaliza a impressao no arquivo

Criamos um arquivo ”corpo.tex”no diretório definido pelo comando setwd(...), contendo


as informações impressas pela função cat(), perceba que precisamos adicionar o comando \n
para indicar uma quebra de linha no arquivo.

7.4 Imprimindo objetos do R


Vamos agora imprimir o conteúdo de um objeto criado no R para o arquivo .

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")

cat("Abaixo temos o resumo da variavel Sepal.Length.\n\n")


cat(names(resumo),"\n",resumo)
cat("\n\n \\end{document}")

sink() #Finaliza a impressao no arquivo

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")

cat("Abaixo temos o resumo da variavel Sepal.Length.\n\n")


cat(nomes[1],nomes[2],nomes[3],nomes[4],nomes[5],nomes[6],"\n\n")
cat("",resumo[1],"\\hspace{0.5cm}",resumo[2],"\\hspace{0.8cm}",resumo[3],
"\\hspace{0.4cm}",resumo[4],"\\hspace{0.5cm}",resumo[5],"\\hspace{0.5cm}",
resumo[6],"\n")
cat("\n\n \\end{document}")

sink() #Finaliza a impressao no arquivo

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])
...

Retire os comandos \n e \space do código para eu fique igual a passagem do acima e


verifique o resultado. Veja que agora os nomes e os valores das informações estão todas na
mesma linha, ou seja, o \n, é responsável por imprimir todas informações seguintes a ele,
uma linha para baixo. É bom entendermos que o comando \n, não é um comando LATEX, e
sim um comando que é interpretado pela função ”cat”do R que indica para a função que no
ponto a onde esta inserida deve ser interpretada como um ”alimentador de linha”, o mesmo
acontece quando estamos digitando um texto e precisamos ir para linha seguinte, apertamos
a tecla ”ENTER”para que possamos escrever na linha de baixo. Faça o mesmo no código
retirando código \hspace, e verifique que este e responsável por realizar os espaçamentos
entre as observações.

7.5 Imprimindo informações em Tabelas


Vamos agora usar o mesmo exemplo da seção anterior para gerar uma tabela contendo
as informações do objeto ”resumo”que contém as informações da função ”summary”. Veja
o exemplo abaixo:

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")

cat("Abaixo temos o resumo da variavel Sepal.Length.\n\n")


cat("\\begin{tabular}{cccccc}\n")
cat(nomes[1],"&",nomes[2],"&",nomes[3],"&",
nomes[4],"&",nomes[5],"&",nomes[6],"\\\\ \n")
cat(resumo[1],"&",resumo[2],"&",resumo[3],"&",
resumo[4],"&",resumo[5],"&",resumo[6],"\n")
cat("\\end{tabular}")
cat("\n\n \\end{document}")

sink() #Finaliza a impressao no arquivo

Veja que utilizamos o ambiente ”tabular”do Łátex , para imprimir os objetos do R em


formato de tabela, ou seja, não precisamos ficar formatando a saı́da como fizemos na seção
anterior, basta criarmos tabelas contendo as informações desejadas. Perceba que se qui-
sermos adicionar linhas horizontais e verticais na tabela, basta manipularmos o ambiente
tabular como manipulamos no Látex , veja a seguir:

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("Abaixo temos o resumo da variavel Sepal.Length.\n\n")


cat("\\begin{tabular}{cccccc}\n")
cat("\\hline \n")
cat(nomes[1],"&",nomes[2],"&",nomes[3],"&",nomes[4],"&",nomes[5],"&",nomes[6],
"\\\\ \n")
cat("\\hline \n")
cat(resumo[1],"&",resumo[2],"&",resumo[3],"&",resumo[4],"&",resumo[5],"&",
resumo[6],"\\\\ \n")
cat("\\hline \n")
cat("\\end{tabular}")

cat("\n\n \\end{document}")

sink() #Finaliza a impressao no arquivo

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

7.5.1 Imprimindo tabelas de frequências


Vejamos o seguinte exemplo:

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

Veja que primeiramente criamos um objeto chamado ”data”contendo os dados do banco


”iris”. Em seguida criamos um objeto ”nomes”contendo a concatenação do sufixo ”det”com
os nomes das variáveis do data frame ”data”e ainda criamos um objeto chamado ”deta-
lhes”contendo as informações dos histogramas de cada variável do data frame ”data”. A
passagem abaixo do código é onde as informações dos objetos contendo as informações dos
histogramas são concatenadas de forma a criar a tabela de frequências.

...
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

7.5.2 Criando tabelas de forma iterativa


Vamos criar a mesma tabela da seção anterior utilizando recursos iterativos que um
linguagem de programação nos proporciona. Iremos criar um laço de repetição afim de que
a cada iteração seja criada uma linha distinta que compõe a tabela de frequências. Veja o
exemplo a seguir:
Exemplo 1:

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(detalhes[,1]$breaks[i], "|----", detalhes[,1]$breaks[i+1] ,"&",detalhes[,1]$counts


detalhes[,1]$density[i],"&",detalhes[,1]$mids[i],"\\\\\\\\ \n")

}
cat("
\\hline
\\end{tabular}
\\end{center}
\\end{table}\n
")
##########################
cat("\\end{document}")
sink()

Perceba nesta passagem:

...
for(i in 1:length(detalhes[,1]$counts)){

Granzotto, D. C. T. 51
Leal. M. A. V.
7.5. IMPRIMINDO INFORMAÇÕES EM TABELAS

cat(detalhes[,1]$breaks[i], "|----", detalhes[,1]$breaks[i+1] ,"&",detalhes[,1]$counts


detalhes[,1]$density[i],"&",detalhes[,1]$mids[i],"\\\\\\\\ \n")

}
...

Como o objeto ”detalhes”é um objeto do tipo ”lista”que contem todas as informações do


histograma, utilizamos um laço de reptição e utilizamos o indice ”i”para que a cada iteração
do laço seja impresso cada linha da tabela. Neste caso será criada apenas uma tabela, pois
deixamos o indice que referencia cada variável fixa, veja a seguir o exemplo:
Exemplo 2:

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.

7.6 Executando e convertendo um arquivo .tex no R


Vamos agora apresentar mais duas funções do R.

• 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.

latexmk(file, engine = c("pdflatex", "xelatex", "lualatex","latex"),


bib_engine = c("bibtex", "biber"), engine_args = NULL, emulation = TRUE,
max_times = 10, install_packages = emulation && tlmgr_available(),
pdf_file = gsub("tex$", "pdf", file), clean = TRUE)

• Função shell.exec() : Função responsável por executar, abrir um arquivo em disco.


Vamos pegar o exemplo do começo do capitulo, veja abaixo:

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("Meu primeiro documento Latex criado a partir do R.\n")

cat("\\end{document}")

sink() #Finaliza a impressao no arquivo


latexmk("corpo.tex" )
shell.exec("corpo.pdf")

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.

7.7 Salvando e Incluindo gráficos


Primeiro precisamos criar os gráficos a ser utilizado para assim ser incluido no arquivo
.tex. Vamos imaginar um contexto que temos que gerar vários gráficos, utilizaremos o R
para salvar gráficos de forma dinâmica.

7.7.1 Salvando gráficos no R


Veja o exemplo abaixo:

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

7.7.2 Incluindo gráficos


Vamos utilizar o Exemplo 2 da seção 7.5.2 e adicionar os gráficos gerados anteriormente:

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(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(
"
\\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.