You are on page 1of 41

.

Desenhando
Diego Oliveira |no Latex com Tikz
nibblediego@gmail.com

www.number.890m.com
Desenhando no Latex com Tikz

Introdu¸ c˜ao: Apesar de uma extensa documenta¸cão estar disponı́vel na


internet, sobre Latex e o pacote Tikz, a maior parte está em inglês ou se
trata apenas de c´opia de outras c´opias, o que dificulta a localiza¸cão de
material realmente relevante. Assim, carecemos de trabalhos ou artigos
técnicos sobre o uso da linguagem, e principalmente do pacote Tikz, em
lı́ngua portuguesa. Por isso esta apostila pretende trazer os principais
comandos do pacote Tikz para ser usado dento do latex.

nibblediego@gmail.com | 
c | www.number.890m.com
Sumário
1 O QU E
TO ´Z?
IK
E 5
1.1 O Qtikz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 O TikzEdt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 O Geogebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 U SANDO O TIKZ NO KILE OU NO TEXMAKER 7

LI3NHAS 7
3.1 Arestas: M iter Limit . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2 Atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.1 Atributos de Espessura . . . . . . . . . . . . . . . . . . . . 10
3.2.2 Atributo de Cor . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.3 Atributos de Estilo . . . . . . . . . . . . . . . . . . . . . . 11
3.2.4 Atributos em Grupo . . . . . . . . . . . . . . . . . . . . . . 11
ˆ NGULOS
4 RE T A 12

5 CIRCUNFER E ˆ NCIAS, ELIPSES E ARCOS 14


5.1 SETAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

6 COORDENADAPOLAR 17
7GRADE
(Grid) 17

CO R
8 18
8.1 Fill e Filldraw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
8.2 Shade : G radiente . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
8.3 Opacidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

9 LEGENDASN
: ODE 24

10 REPETIC
¸A˜ OF:OREACH 25

1 1 FU N C
¸O˜ ES 26

12CURVASNOTIKZ 28
12.1 Pa rábolas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
12.2 Ro unded Corners . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
12.3 Comando To . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
12.4 S mooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
12.5 Curvas de Bézier . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

13Co ordenadas(Co ordinate) 33

14 Transforma¸c˜ oesGeom´ etricas 34


14.1 O A mbiente Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 34
14.2 Rotação . . . . . . . . . . . . . . . . . . . ............. 37
14.3 Escalamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
SUMÁRIO www.number.890m.com

C1L5IP 39
15.1 REFER ÊNCIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4
www.number.890m.com

1 O QUE É O TIKZ?

O Tikz é um pacote para latex desenvolvido por Até Tantau para a produção
de imagens vetoriais a partir de descri¸cões analı́ticas. O Tikz pode ser usado em
qualquer ambiente latex como, por exemplo, Kile ou Texmaker embora seu uso
para estudo seja mais vi´ avel no software Qtikz ou TikzEdt, pois oferecem uma
prévia do que está sendo desenhado em tempo real sem a necessidade de ter de
compilar o documento a cada linha escrita para saber o que est´ a ocorrendo. O
Qtikz está presente na central de programas do Ubuntu mas antes deve se ter um
compilador de latex já instalado para poder utiliza-lo. Tanto o Qtikz como TikzEdt
estão disponı́veis para Windows. Recomendo a instalação do TikzEdt por ser mais
completo.
O download do Qtikz e TikzEdt podem ser feitos através do link abaixo.

http://www.hackenberger.at/blog/ktikz-editor-for-the-tikz-language/

1.1 O Qtikz

Este programa não é tão completo como seu “concorrente”, o TikzEdt, mas
ganha do mesmo em questão de estabilidade. Está disponı́vel tanto para Windows
como para Linux.

1.2 O TikzEdt

O TikzEdt é o programa mais completo que se pode achar atualmente. Mas, in-
felizmente só se encontra dispon´ıvel para Windows e não funciona bem emulado com
o Wine. Também não está em sua vers˜ ao final e como é um projeto desenvolvido
pela comunidade ainda está em sua versão beta e não sairá dela tão cedo. Além
disso, possui alguns problemas que podem acarretar em seu mau funcionamento.

5
1.3 O Geogebra www.number.890m.com

1.3 O Geogebra

Você pode usar o Geogebra para gerar algum código em latex embora isso
seja pouco recomendável. Por exemplo, abra o Geogebra e desenhe um cı́rculo de
raio igual a um. Em seguida vá no menu: Arquivo > Exportar > Janela de
ao como PGF/Tikz. Irá aparecer a seguinte janela.
Visualiza¸c˜

O campo xMin, yMin, xMáx e yMáx são as coordenadas da tela do Geogebra que
será capturada. Apenas os desenhos dentro desse retângulo é que ser˜
ao consideradas
para geração dos códigos. Experimente modifica-los enquanto olha para a tela do
Geogebra.

Clicando no botão Gerar c´odigo PGF/Tikz. No campo mais abaixo da janela


irá ser gerado todo o código latex responsável por gerar o desenho que você criou.

6
www.number.890m.com

O Geogebra seria perfeito para gerar nossos códigos em latex, entretanto quando
a figura é muito complexa o programa quase sempre erra na geração do código e
sempre escreve linhas desnecessárias que podem necessitar serem apagadas para
serem utilizadas em outros programas.

2 USANDO O TI KZ NO KILE OU NO T EX-


MAKER

Normalmente o pacote Tikz é instalado junto com o Miktex, ou qualquer outro


compilador de latex, assim basta chamar o pacote no pré-ambulo do documento
usando o

\usepackage{tikz}

E dentro do document usar o ambiente Tikzpicture.

\begin{tikzpicture}

% Toda instruç~
ao fica dentro do ambiente.

\end{tikzpicture}

Toda instrução que utiliza-se do pacote Tikz deve ser escrita dentro do ambiente
tikzpicture, caso contrário o documento nem será compilado.

Se por acaso o pacote tikz não estiver instalado em sua máquina você pode
baixa-lo. O arquivo baixado terá a extensão .sty, coloque-o no mesmo diret´orio do
seu arquivo .tex. Com isso ele já estará pronto para ser usado.

3 LINHAS

Para desenhar a maioria das figuras usamos o comando draw (desenho) ele é
o comando mais básico do Tikz.

\ begin {tikzpicture}
\draw(0,0)--(4,0);
\ en d {tikzpicture}

A instrução acima desenha uma linha reta com extremos em (0, 0) e (4, 0).
Você também pode fazer uma sequencia de segmentos que vai de p onto a ponto:

7
www.number.890m.com

\ begin {tikzpicture}
\dr aw( 0,0 ) -- (1, 2) -- (2, 3)
--(1,0);
\ en d {tikzpicture}

Por padrão essas coordenadas estão em cent´


ımetros.

Outra forma de desenhar linhas é indicando seu ponto inicial e depois o quanto
cada coordenada desse ponto deve ser incrementada para que seja formado o se-
gundo extremo da reta. Por exemplo, imagine um segmento com uma extremidade
em (1, 2) e outra em (2, 3). Escrevendo esse segundo ponto em fun¸ cão do primeiro
ficaria.

(2, 3) = (1, 2) + (1, 1)

Assim poderı́amos desenhar essa linha do seguinte modo:

\ begin
\dra {tikzpicture}
w(1, 2)--++ (1, 1);
\ en d {tikzpicture}

Que seria o equivalente a escrever:

\ begin {tikzpicture}
\dra w(1, 2)--( 2, 3);
\ en d {tikzpicture}

Esse recurso pode ser usado também com números negativos e racionais.

\ begin {tikzpicture}[line
width=5pt]
\draw[miter limi t=25](6,0)
--++(5,.5) --++(-5,.5);
\ en d {tikzpicture}

Esse ultimo exemp lo mostra um resultado muito importan te. O ++ realiza o


incremento do ponto menos a esquerda e não a partir do ponto inicial.

Se você é do tipo que não gosta muito de escrever existe uma maneira de
desenhar várias linha de um modo mais enxuto. Por exemplo, o código a seguir

8
3.1 Arestas: Miter Limit www.number.890m.com

\ begin {tikzpicture}
\draw[line width=1pt]
(0,0) --(1,0)(0,.5) --(1,.5)
(0,1)--(1,1);
\ en d {tikzpicture}

é equivalente a:

\ begin {tikzpicture}[line
width=1pt]
\draw(0,0)--(1,0);
\draw (0,.5) --(1,.5);
\draw(0,1)--(1,1);
\ en d {tikzpicture}

3.1 Arestas: Miter Limit

Um problema que pode surgir ao usar o line width ocorre na quest˜ ao das arestas
que tendem a se formar. Observe o desenho abaixo.

\ begin {tikzpicture}[line
width=5pt]
\draw(6,0) --(11,.5)--(6,1);
\ en d {tikzpicture}

Aqui temos dois segmentos um segmento definido pelas coordenadas (6, 0) e


(11, .5) e outro com as coordenadas (11, .5) e (6, 1). Note que no ponto onde os
dois segmentos se encontram formou-se duas arestas.

3.2 Atributos

As linhas possuem três tipos de atributos que são:

• Atributos de espessura;
• Atributo de cor;
• Atributos de estilo.

9
3.2 Atributos www.number.890m.com

Para modificar esses atributos você deve coloca-los entre chaves depois do co-
mando draw e separados por vı́rgula caso haja mais de um.

Por exemplo, a linha a seguir teve sua espessura alterada para 10 pontos através
do atributo line whidth e cor modicada para vermelho através do atributo color.

\ begin {tikzpicture}
\dra w [lin e wid th=10p t,
color = red](0,0) --(4,0 );
\ en d {tikzpicture}

A ordem com que os atributos são informados não faz a menor diferença.

3.2.1 Atributos de Espessura

Esse grupo de atributos são compostos pelos comandos: ultra thin , very thin ,
thin, semithick, thick e o mais importante o line whidth .

\ begin {tikzpicture}
\dra w [ult ra th in](0, 0)
--(4,0);
\dra w [ver y thi n](0,0 )
--(4,0);
\draw [thin](0,0) --(4,0 );
\draw [ semith ick](0,0)
--(4,0);
\draw [thick](0,0) --(4,0 );
\dra w [lin e wid th=10p t](0,0 )
--(4,0);
\ en d {tikzpicture}

O line whidth altera a espessura da linha de acordo com a sua necessidade. No


exemplo acima usamos 10pt (10 pontos) como parâmetro, mas esse valor pode ser
dado também em cent´ ımetros ou espaços.

\ begin {tikzpicture}
\dra w [lin e wid th=.5c m](0,1 )
--(4,1);
\dra w [lin e wid th=2e x](0,0 )
--(4,0);
\ en d {tikzpicture}

3.2.2 Atributo de Cor

Para alterar a cor de uma linha o processo é semelhante. Usamos o draw e entre
chaves colocamos o nome da cor.

10
3.2 Atributos www.number.890m.com

\ begin {tikzpicture}
\draw [red](0,0) --(4,0 );
\ en d {tikzpicture}

Outra possibilidade seria:

\ begin {tikzpicture}
\dra w [col or = re d](0,0 )
--(4,0);
\ en d {tikzpicture}

3.2.3 Atributos de Estilo

Os atributos de estilo são quatro dotted, dashed e o cap . O exemplo a seguir


deixa bem claro a fun¸cão de cada um dos três primeiros.

\ begin {tikzpicture}
%linha pontilh ada
\draw[dotted](0,0) --(4,0);
%linha tracej ada
\draw[dashed](0,-1)--(4,-1);
%lin ha com bor da
\ en d {tikzpicture}

Você pode ler sobre setas mais adiante.

3.2.4 Atributos em Grupo

Tanto o dashed como o dotted e o line width (e todos os outros atributos)


podem ser aplicados ao ambiente tikzpicture. S´o que nesse caso todas as linhas
sofrerão influencia do atributo.

% da sh ed ap li ca do ao
ambiente
\ begin {tikzpicture}[dashed]
\draw(0,0)--(4,0);
\ en d {tikzpicture}

% do tt ed ap li ca do ao
ambiente
\ begin {tikzpicture}[dotted]
\draw(0,0)--(4,0);
\ en d {tikzpicture}

11
www.number.890m.com

% li ne wi dt h ap li ca do ao
ambiente
\ begin {tikzpicture}[line
wi dt h = .4c m]
\draw(0,0)--(4,0);
\ en d {tikzpicture}

4 RET ÂNGULOS

Você pode usar o draw para desenhar retângulo informando a coordenada de


cada vértice

\ begin {tikzpicture}
% Qu ad rad o de fi ni do pe lo s 4
vertices
\dr aw (0, 0) -- (2,0 ) --
(2, 2) -- (0, 2) -- cy cl e;
\ en d {tikzpicture}

no entanto, isso pode ser trabalhoso.

O Tikz possui um comando próprio para desenhar retângulos no seu documento.


Para exemplificar vamos desenhar o mesmo retângulo acima.

\ begin {tikzpicture}
\draw(0,0)rectangle(2,2);
\ en d {tikzpicture}

No primeiro exemplo tivemos de informar as coordenadas dos quatro vértices e


depois fizemos a liga¸cão entre eles (isso é feito com o comando cycle).

Já no segundo exemplo informamos apenas a coordenada inferior esquerda e a

coordenada
para linha jásuperior
sabemosdireita
o que. ela
O que é bem mais
faz (desenha umpr´atico. Além
retângulo), disso
o que só de futura
facilita olhar
manutenção do seu código caso haja necessidade.

Outra forma de desenhar o mesmo retângulo seria:

\ begin {tikzpicture}
\draw(0,0)rectangle++(2,2);
\ en d {tikzpicture}

12
www.number.890m.com

Lembre se que o ++ incrementa a coordenada a esquerda.

Usando um pouco de criatividade, retângulos, e tendo uma boa base em latex


você pode criar imagens bem chamativas com facilidade.

Um homem.

Um gato.

Super Mario 8-bits.

Livro.

13
www.number.890m.com

5 CIRCUNFER ÊNCIAS, ELIPSES E ARCOS

Para desenhar uma circunferência basicamente devemos informa seu centro e


medida de seu raio:

\ begin {tikzpicture}
% Circ unfe renc ia de rai o 0. 5
cm e ce nt ro em (0,0 )
\draw(0,0)circle(0.5cm);
% Ce nt ro em (2,0 ) e ra io de
1 ra d.
\dra w (7,0 .5) cir cle [radi us
=1];
\ en d {tikzpicture}

já uma elipse

\ begin {tikzpicture}
% Eli pse:
\draw(1,1)ellips e(1.5cm and
0.5cm);
\ en d {tikzpicture}

No caso da elipse informamos o seu centro (1, 1) e depois a largura e altura


conforme indicado na imagem abaixo.

1.5cm 0.5cm

O comando para arcos depende de três parâmetros: angulo inicial, angulo final

e raio do arco.

\ begin {tikzpicture}
% Ar co
\dra w(6,0) ar c [radi us=3c m,
sta rt ang le=0, en d ang le=
75];
\ en d {tikzpicture}

O arco acima têm srcem em (3, 0) raio de 3cm e faz um angulo no sentido
horário que vai de 0 a 75 .
◦ ◦

14
www.number.890m.com

Para que você visualize melhor o que está sendo dito observe o mesmo arco
desenhado sob uma grade marcada e com srcem no ciclo trigonométrico.


90


60

45

30


0

(0,0) (3,0)

O comando arc pode ser escrito de uma forma mais sintetizada, veja:

\ begin {tikzpicture}
% Ao in ve s de [ra di us= 3c m,
sta rt ang le=0, en d ang le=
75 ]
\draw(6,0)arc(0:75:3cm);
\ en d {tikzpicture}

Veja mais alguns exemplos de arcos.

\ begin {tikzpicture}
% Arc o inv ert ido
\dra w [red] (3,0 ) arc

\ en d(0:-75:-3cm);
{tikzpicture}

\ begin {tikzpicture}
% Ar co no se nt id o an ti-
horario
\dra w[blu e] (3,0 ) ar c
(0:75:-3cm);
\ en d {tikzpicture}

15
5.1 SETAS www.number.890m.com

5.1 SETAS

Setas são inseridas também como atributo de estilo do draw. Veja:

% Se ta pa ra di re it a
\ begin {tikzpicture}
\draw[->](3,0)--(4,0);
\ en d {tikzpicture}

Nesse caso a seta fica voltada para o ponto mais a direita do comando draw.
No caso (4, 0).

% Set a par a esq uerd a


\ begin {tikzpicture}
\draw[<-](4,0)--(3,0);
\ en d {tikzpicture}

Agora a seta fica voltada para o ponto mais a esquerda do comando draw. Que
no caso ainda é o ponto (4, 0).

% Se ta du pl a
\ begin {tikzpicture}
\dra w [<->] (3,0 ) --( 4,0 );
\ en d {tikzpicture}

Nesse caso, cada extremidade do segmento recebe uma ponta de seta.

Qualquer linha reta ou curva pode ser setada colocando se [- >]. No exemplo
abaixo, por exemplo, temos um arco setado.

\ begin {tikzpicture}
% Ar co se ta do
\dra w [lin e wid th=3p t, ->
]( 3,0) ar c (0 :-75 :-3cm);
\ en d {tikzpicture}

Outros exemplos de setas são:

16
www.number.890m.com

% Se ta du pl a
\ begin {tikzpicture}
\dra w [|-> ] (0,0 ) --( 1,0 );
\draw[dott ed , >->>](0, 1) --
(1,1);
\dra w[|<->|]( 0,2) -- (1,2 );
\d ra w[d ashed , o- )] (0, 3)
-- (1,3 );
\dra w[loos ely das hed] (0,4 )
-- (1,4 );
\dra w[dens ely dot ted] (0,5 )
-- (1,5 );
\ en d {tikzpicture}

6 COORDENADA POLAR

É possı́vel em alguns momentos usar coordenad as polares no Tikz. Veja um


exemplo.

\ begin {tikzpicture}
% Coo rden ada Pol ar
\draw (0,0) --++(45:2);
\ en d {tikzpicture}

O exemplo acima desenha um segmento com srcem em (0, 0) com comprimento


de 2 cm, 45 no sentido horário.

\ begin {tikzpicture}
\filldraw[fill=yel low , draw=
black](0 ,0) --++(45:1)arc
(45:360:1cm)--cycle;
\filldraw[fill=wh ite, draw=
black](-0.2,.5)circle(.1
cm);
\ en d {tikzpicture}

7 GRADE (Grid)

Algumas vezes é interessante que se utilize grades, para facilitar o desenho de


imagens. No TikzEdt uma grade já vêm desenhada e pode ser facilmente modificada
ou até desativada, se necessário. No Qtikz, caso se deseje usar a grade, deve se
informar ao programa por meio da forma que será descrita.

17
www.number.890m.com

\ begin {tikzpicture}
\draw[step=1cm](-1,-1)grid

\ en d(3,3);
{tikzpicture}

O step informa que cada quadro da grade terá um centı́metro de largura e altura.

\ begin {tikzpicture}
% gra de pont ilh ada
\dra w[das h pat ter n=on 3pt
of f 3p t, ste p=1cm
](-0.9,-0.9)grid(2.9,2.9)
;
\ en d {tikzpicture}

Uma opção ao atributo step são o xstep e o ystep. Com eles podemos ter
maior controle sobre o tamanho dos quadros na grade.

\ begin {tikzpicture}
\draw[xstep=1, ystep
=.5](-1,-1)grid(3,3);
\ en d {tikzpicture}

Nesse caso os quadros da grid terão um centı́metro de largura e meio de altura.

8 COR

Podemos fazer imagens coloridas com o Tikz. Para isso é necessário apenas que
o pacote xcolor esteja carregado no pré-ambulo. As cores que poderão ser usadas
são:

18
8.1 Fill e Filldraw www.number.890m.com

Cyan Lightgray
Pink Yellow
Orange Violet
Brown Purple
Blue Magenta
Black Green
Red Gray

Para usar qualquer uma destas cores basta escreve-la como atributo do draw.
Veja o exemplo.

\ begin {tikzpicture}
\draw[red](0,0)rectangle
++(2,2);
\ en d {tikzpicture}

É possı́vel também criar novas tonalidades de cores misturando as cores acima.

\ begin {tikzpicture}
\draw[red!50!gr een, line
wid th = 3pt]( 0,0)
rectangle++(2,2);
\ en d {tikzpicture}

No retângulo acima misturamos vermelho e verde na proporção de 50% criando


um tom de amarelo.

8.1 Fill e Filldraw

Ao invés do comando draw utilizado nos exemplos anteriores é poss´ıvel utilizar


o comando fill (preencher) ou mesmo o filldraw em seu lu gar. Vejamos a
diferença entre eles.

\ begin {tikzpicture}
% De se nh a o co nt orn o do
retangulo
\draw[cyan](0,0)rectangle
(2,2);
\ en d {tikzpicture}

19
8.2 Shade : Gradiente www.number.890m.com

\ begin {tikzpicture}
% Pi nt a o re ta ng ulo se m
contorno
\ fill [cyan](0,0)rectangle
(2,2);
\ en d {tikzpicture}

\ begin {tikzpicture}
% De se nh a o co nt orn o do
ret ang ulo e pin ta se u
interior
\filldraw[fill=cy an, draw=
black](0,0)rectangle(2,2)
;
\ en d {tikzpicture}

O draw desenha apenas linhas ou contornos das figuras. Já o fill é usado para
preencher o interior de figuras fechadas mas, não é capaz de desenhar seus con-
tornos. O filldraw além de preencher a forma com cor mantem uma borda de cor
especificada.

8.2 Shade : Gradiente

Se em vez de uma cor s´olida, queremos um gradiente de cor, podemos usar o


shade ao invés do fill.

\ begin {tikzpicture}
\shade[left color=blu e,
right color=re d](0,0)
rectangle(4,4);
\ en d {tikzpicture}

\ begin {tikzpicture}
\shade[top color=blu e,
botto m color=re d](0,0)
rectangle(4,4);
\ en d {tikzpicture}

20
8.2 Shade : Gradiente www.number.890m.com

\ begin {tikzpicture}
\shade[inner color=blue,
outer color=re d](0,0)
rectangle(4,4);
\ en d {tikzpicture}

\ begin {tikzpicture}
\shade[shading=ba ll, ball
col or=blu e] (0,0 ) cir cle
(2);
\ en d {tikzpicture}

O estranho é que podemos conseguir o mesmo efeito com o fill, veja.

\ begin {tikzpicture}
\ fill [lef t col or=bl ue, rig ht
color=red](0,0)rectangle
(4,4);
\ en d {tikzpicture}

\ begin {tikzpicture}
% Em ci ma e em ba ix o
\ fill [top col or=bl ue, bot tom
color=red](0,0)rectangle
(4,4);
\ en d {tikzpicture}

21
8.3 Opacidade www.number.890m.com

\ begin {tikzpicture}
% No ce nt ro
\ fill [inner color=blu e,

outer color=re d](0,0)


rectangle(4,4);
\ en d {tikzpicture}

\ begin {tikzpicture}
\ fill [shading=ba ll, ball
col or=blu e] (0,0 ) cir cle
(2);
\ en d {tikzpicture}

8.3 Opacidade

As vezes é necessário o preenchimento com uma cor opaca. Para isso tem-se o
atributo opacity.

\ begin {tikzpicture}[opacity
=0.5]
\filldraw[fill=red] (0:1cm)
circl e (12mm);
\filldraw[fill=gree n] (120: 1
cm) cir cle (1 2mm);
\filldraw[fill=blu e] (-120:1
cm) cir cle (1 2mm);
\ en d {tikzpicture}

22
8.3 Opacidade www.number.890m.com

\ begin {tikzpicture}[opacity
=0.5]
% Circ ulos co m bor das neg ras
\filldraw[fill=red,line
wid th=3p t] (0: 1cm) cir cle
(12mm);
\filldraw[fill=green,line
width=3pt] (120:1cm)
circl e (12mm);
\filldraw[fill=blue,line
width=3pt] ( -12 0:1cm)
circl e (12mm);
\ en d {tikzpicture}

No exemplo acima as bordas também se mantem opacas fazendo com que as


bordas negras fiquem acinze ntadas. Se quisermos retira r esta opacidade das bordas
acrescentamos o comando fill.

\ begin {tikzpicture}[fill
opacity=0.5]
\filldraw[fill=red,line
width=3pt](0:1cm)circle
(12mm);
\filldraw[fill=green,line
width=3pt](120:1cm)circle
(12mm);
\filldraw[fill=blue,line
width=3pt](-120:1cm)
circle(12mm);
\ en d {tikzpicture}

23
www.number.890m.com

9 LEGENDAS: NODE

Para escrever uma legenda no Tikz procedemos do seguinte modo.

\ begin {tikzpicture}
% Esc rit a nor mal
Legenda \draw(0,0)node{Legenda};
% Es cr it a em it al ic o
\draw(0,1)node{{\it Legen da
Legenda }} ;
% Le tr a de ma qu in a
\draw(0,2)node{{\tt Legen da
Legenda
}} ;
% Tam anh o gra nde
Legenda \draw(0,3)node{{\ Huge
Legenda}};
% Neg rit o
Legenda \draw(0,4)node{{\bf Legen da
}} ;
\ en d {tikzpicture}

Em cada caso o centro da palavra Legenda é colocado nas posições indicadas.

Quando usamos legendas em pontos pode ser ´util deslocar a legenda para cima
para baixo ou mesmo para os lados. Veja os exemplo:

\ begin {tikzpicture}
% Le ge nd a ab ai xo do po nt o
\ fill (0,3)circle(0.05cm)node
D [above]{D};
% Le ge nd a ac im a do po nt o
\ fill (0,2)circle(0.05cm)node
[below]{C};
C % Le ge nd a a di re it a do po nt o
\ fill (0,1)circle(0.05cm)node
B
% Le[right]{B};
ge nd a a es qu erd a do
A ponto
\ fill (0,0)circle(0.05cm)node
[left]{A};
\ en d {tikzpicture}

Também é possı́vel colorir texto ou mesmo colocar equa¸


cões.

24
www.number.890m.com

\ begin {tikzpicture}
% Te xt o
a2 \draw[red](0,0)node{Legenda
8 };
% Equ aca o
\draw(0,1)node{$\dfrac{a
Legenda ^2}{8}$};
\ en d {tikzpicture}

10 REPETIÇÃO: FOREACH

O foreach é usado como uma espécie de loop dentro do latex. Veja um exemplo.

\ begin {tikzpicture}
\fore ach \x in {0,1, 2,3,4 }
\dra w(\x cm,1 )--(\x cm,-1 );
\ en d {tikzpicture}

A primeira linha

\foreach \x in {0,1,2,3,4}

cria uma vari´avel “x” igual a zero e indica que todos os comandos escritos ap´ os
ele, e que possuem a variável “x”, serão repetidos 5 vezes. Na primeira vez o “x”
será igual a 0, depois 1 até chegar ao 4.

Finalmente escrevemos a linha que sofrerá a repetição.

\draw(\x cm,1)--(\x cm,-1);

Em teoria ela cria um segmento na vertical. Com o foreach o “x” varia de 0 até
4 desenhando não apenas um mas 5 segmentos.

Se não fosse o foreach terı́amos de fazer assim:

\ begin {tikzpicture}
\draw(0,1)--(0,-1);
\draw(1,1)--(1,-1);
\draw(2,1)--(2,-1);
\draw(3,1)--(3,-1);
\draw(4,1)--(4,-1);
\ en d {tikzpicture}

25
www.number.890m.com

Vejamos mais alguns exemplos.

\ begin {tikzpicture}

\fore ach cm,1


\dra w(\x \x in)--(\x
{0,1, 2,3,4
cm,-1 })
node[below]{\x};
\ en d {tikzpicture}
01234

\ begin {tikzpicture}
\dra w[->] (-5. 5,0) -- (0,0 )
nod e [rig ht] {$ \math bb{R
R }$};
-5 -4 -3 -2 -1 0 \fore ach \x in {-5,. ..,0 }
\dr aw (\ x, 0. 1) -- (\x,
-0 .1 ) nod e [bel ow] {\x} ;
\ en d {tikzpicture}

\ begin {tikzpicture}
\fore ach \x in {1, 2,3}
\sha de[bal l col or=re d!\x 0!
gre en] (\x, 0) cir cle (3m m
);
\ en d {tikzpicture}

Nesse próximo exemplo x varia de 1 em 1 come¸ cando d0 9 até ser igual 1 ou


até o valor mais próximo poss´ıvel de 1.

\ begin {tikzpicture}
\fore ach \x in {9,. ..,1 }
\draw[fill=blue!\x0] ( -0. 1*\
x - 1 , -0.1*\x )
re ct an gl e (0 .1 *\x + 1,
0.1 *\x );
\ en d {tikzpicture}

11 FUNÇÕES

Algumas curvas podem ser representadas por equa¸ cões explicitas isto é, com
y em função de x. Com o pac ote Tikz equa¸cões explicitas podem ter sua curva
desenhada também através do draw.

26
www.number.890m.com

% gr af ic o de fu nc ao
\ begin {tikzpicture}
\draw[->](-3,0)--(3,0);
\draw[->](0,-1)--(0,4);
% Pl ot ag em de -2 a 0
\draw[blue,domain=-2:0]plot
(\x,{(\x)^2});
% Pl ot ag em de 0 a 2
\draw[blue,domain=0:2]plot(\
x,{\x^2});
\ en d {tikzpicture}

A s´ıntese geral para as funções é: draw[atributo, domı́nio]plot (\x, { função}).


As funções que podemos utilizar são:

sin(\x, r)
factorial(\x)
sqrt(\x)
pow(\x,y) que xy .

exp(\x)
ln(\x)
log10(\x)
log2(\x)
abs(\x) valor absoluto.
mod(\x,y) x modulo y.
round(\x)
floor(\x) inteiro mais pŕoximo.
ceil(\x) o menor numero maior que x.
sin(\x) seno expresso em graus.
sin(\x r) seno expresso em radiano.
cos(\x)
cos(\x r)
tan(\x)
tan(\x)
tan(\x r)
min(\x,y,)
max(\x,y)

Você pode até usar rnd (sem argumento) que produz um n´ umero aleatório
entre 0 e 1 ou pi.

Mais um exemplo.

27
www.number.890m.com

% gr af ic o de fu nc ao
\ begin {tikzpicture}[scale
=0.8]
\draw[->](-3.14,0) --(3.14,0)
;
\draw[->](0,-1.1) --(0,1.1);
\draw[ blue,smooth ,samples
=100,domain=-3.14:3.14]
plot(\x,{si n(\x r)});
\ en d {tikzpicture}

12 CURVAS NO TIKZ

12.1 Parábolas

Desenhar parábolas é muito simples.

\ begin {tikzpicture}
\draw(0,0)parabola(2,2);
\ en d {tikzpicture}

Acima vemos uma parábola com origem em (0, 0) e extremo em (2, 2). Poderı́amos
também ter usado o ++ para incremento.

\ begin {tikzpicture}
\draw(0,0)parabola++(2,2);
\ en d {tikzpicture}

12.2 Rounded Corners

O rounded corners é uma propriedade de fronteira que permite um desenho mais


arredondados de polı́gonos com arestas.

\ begin {tikzpicture}
\draw(0,0)rectangle++(2,2);
\draw[rounded corner s=0.5cm
](2.5,0)rectangle++(2,2);
\ en d {tikzpicture}

28
12.3 Comando To www.number.890m.com

Ao aumentar o valor de contorno os vértices do quadrilátero vão ficando cada


vez mais arredondados.

\ begin {tikzpicture}
\draw(0,0)rectangle++(1,1);
\draw[rounded corner s=0.1cm
](2,0)rectangle++(1,1);
\draw[rounded corner s=.5cm
](4,0)rectangle++(1,1);
\ en d {tikzpicture}

12.3 Comando To

O comando To é utilizado para unir com uma linha dois pontos sendo que, existe
um angulo inicial para saı́da da linha e um angulo final para o ponto de destino.

Por exemplo, a instru¸cão a seguir cria uma reta.

\ begin {tikzpicture}
% Re ta
\draw(0,0)to(2,3);
\ en d {tikzpicture}

Mas a instru¸cão a seguir desenha uma curva.

\ begin {tikzpicture}
\draw(3,0) to[out=9 0,in=180]
(5,3);
\ en d {tikzpicture}

Nesse caso a curva parte do ponto (3, 0) fazendo um angulo de 90 ◦


graus e
chega até o ponto (5, 3) fazendo um angulo de 180 .◦

29
12.4 Smooth www.number.890m.com

Veja outros exemplos.

\ begin {tikzpicture}
\draw[blue](0,0)to[out=90,in
=225](1,2)to[out=-45,in
=90](2,0);
\draw[brown](3,0)to[out=90,
in=-90](4,2)to[out=-90,in
=90](5,0);
\ en d {tikzpicture}

12.4 Smooth

A função smoth faz com que os p ontos de uma curva sejam conectados de
maneira suave. Um exemplo de sua estrutura é:

\ begin {tikzpicture}
\draw[smooth] plot
coordinates{(0,0)(1,1)
(2,0)(3,1)};
\draw[ dashed ,color= gray
](0,0) --(1,1)--(2,0)
--(3,1);
\ en d {tikzpicture}

Tem-se também o atributo tension, que permite um ajuste maior na curva.


Veja na próxima figura a mesma curva anterior usando o atributo.

\ begin {tikzpicture}
\draw[smoo th , tensio n=1]
plot coordin ates{(0,0)
(1,1)(2,0)(3,1)};
\draw[ dashed ,color= gray
](0,0) --(1,1)--(2,0)
--(3,1);
\ en d {tikzpicture}

30
12.5 Curvas de Bézier www.number.890m.com

O smoth é uma ferramenta muito poderosa. Com ela vários esboços podem
ser feitos. Inclusive a de fun¸cões matemáticas complexas.

Desenho vetorial feito apenas com Smooth.

12.5 Curvas de Bézier

É possı́vel desenhar qualquer coisa usando uma ou mais curvas de bézier, exceto

uma circunferência. Isso é o que torna essas cuvas tão especiais.

Sintaxe:

\draw(x0, y0)..controls(x1,y1)and(x2,y2)..(y3,x3);

O desenho de uma curva de bézier depende das coordenadas de quatro pontos


chamados de pontos de controle.

(8, −0.1)
(9, −0.5)
(6, −1)

(5, −2)
Curva de Bézier (vermelho) e seus pontos de controle (azul).

\ begin {tikzpicture}
\draw[red](5,-2)..controls
(6,-1)and(8,-0.1)
..(9,-0.5);
\ en d {tikzpicture}

31
12.5 Curvas de Bézier www.number.890m.com

O próximo exemplo mostra v´arias curvas de controle emendadas para formar


uma única curva.

\ begin {tikzpicture}
% Gr ad e
\draw[opacity=0 .1, step
=.1](0,0)grid(2,8.4);
% Ei xo de si me tr ia
\draw[red](0,0) --++(0,8.4);
% Ta ca
\draw (0,0) --(1.4,0);
\draw[blue](1.4,0)..controls
(1.4,0)and(1.9,0)
..(1. 9,.2).. contro ls
(1.9,.3)and(1.6,.2)
..(1.5,.2)..controls
(1.3,.2)and(.2,.7)
..(.2,1.1) --(.2,3.5)..
controls(1,4)and(2.3,5.0)
.. (1. 5,8.3 );
\draw (1.5,8.3) --(0,8.3);
\ en d {tikzpicture}

Imagem gerad a com curva s de bézier.

32
www.number.890m.com

13 Coordenadas (Coordinate)

Quando tem de se lidar com uma quantidade muito grande pontos e pretende-se
fazer referência a eles uma quantidade muito grande de vezes é conveniente usar o
comando coordinate.

Sintase:

\coordinate[legenda](Nome do ponto)at(x,y);

Veja um exemplo.

\ begin {tikzpicture}
% Gr ad e
\draw[step=1cm,gray](-1,-1)
grid(3,3);
% Po nt o A
C
\coordinate(A)at(0,0);
% Po nt o B co m le ge nd a a
B esquerda
\coordinate[label=left:B](B)
at(1.5,1);
% Po nt o C co m le ge nd a a
direita
\coordinate[label=right:C](C
)at(2,2);
\ en d {tikzpicture}

Uma vez usado o coordenate é possı́vel utilizar os pontos (0,0), (1.5,1) e (2,2)
através das letras A, B e C.

\ begin {tikzpicture}
\draw[step=1c m, gray](-1,-1 )
grid(3,3);
C
\coordinate(A)at(0,0);
\coordinate[label=left:B](B)
B at(1.5,1);
\coordinate[label=right:C](C
)at(2,2);
% Re ta
\draw(A)--(B)--(C);
\ en d {tikzpicture}

33
www.number.890m.com

14 Transformações Geométricas

14.1 O Ambiente Scope

O ambiente scope pode ser capaz de realizar as transforma¸ cões geométricas de


reflexão e translação. Olhe por exemplo o desenho anterior.

\ begin {tikzpicture}
% Gr ad e
\draw[opacity=0.1,step
=.1](0,0)grid(2,8.4);
% Ei xo de si me tr ia
\draw[red](0,0) --++(0,8.4);
% ta ca
\draw (0,0) --(1.4,0);
\draw[blue](1.4,0)..controls
(1.4,0)and(1.9,0)
..(1. 9,.2).. contro ls
(1.9,.3)and(1.6,.2)
..(1.5,.2)..controls
(1.3,.2)and(.2,.7)
..(.2,1.1) --(.2,3.5)..
controls(1,4)and(2.3,5.0)
..(1.5,8.3);
\draw (1.5,8.3) --(0,8.3);
\ en d {tikzpicture}

Agora vamos usar o ambiente scope para produzir um espelhamento vertical.

34
14.1 O Ambiente Scope www.number.890m.com

\ begin {tikzpicture}
% Gr ad e
\draw[opacity=0.1,step
=.1](0,0)grid(2,8.4);
% Ei xo de si me tr ia
\draw[red](0,0) --++(0,8.4);
% ta ca
\draw (0,0) --(1.4,0);
\draw[blue](1.4,0)..controls
(1.4,0)and(1.9,0)
..(1. 9,.2).. contro ls
(1.9,.3)and(1.6,.2)
..(1.5,.2)..controls
(1.3,.2)and(.2,.7)
..(.2,1.1) --(.2,3.5)..
controls(1,4)and(2.3,5.0)
..(1.5,8.3);
\draw (1.5,8.3) --(0,8.3);
% Refl exao
\ begin {scope}[x=-1cm]
\draw (0,0) --(1.4,0);
\draw(1.4,0)..controls
(1.4,0)and(1.9,0)
..(1.9,.2)..controls
(1.9,.3)and(1.6,.2)
..(1.5,.2)..controls
(1.3,.2)and(.2,.7)
..(.2,1.1) --(.2,3.5)..
controls(1,4)and(2.3,5.0)
..(1.5,8.3);
\draw (1.5,8.3) --(0,8.3);
\ en d {scope}
\ en d {tikzpicture}

O ambiente scoope recebe como atributo um valor, no caso x = −1cm, esse


valor irá multiplicar todos os valores da abscisa de todos os pontos dentro do
ambiente scope por −1. Isso provoca um espelha mento em rela¸cão ao eixo de
simetria que neste caso é uma reta vertical que passa pela srcem.

Esse ambiente também pode ser usado para gerar translações, rotação e escala-
mento.

Vejamos um exemplo de transla¸cão.

35
14.1 O Ambiente Scope www.number.890m.com

\ begin {tikzpicture}
% ret ang ulo neg ro
\draw[step=. 5, lightg ray
](0,0)grid(3,2);
\dra w (0,0 ) rec tan gle
(1,0.5);
% sc op e
\ begin {scope}[xshift=1cm]
% re ta ng ul o de sl oc ad o 1c m a
direita
\draw [red](0,0)rectang le
(1,0.5);
% re ta ng ul o de sl oc ad o 1c m a
di re it a e 1c m ao no rt e
\draw[yshift=1c m, blue]( 0,0)
rectangle(1,0.5);
\ en d {scope}
\ en d {tikzpicture}

O xshift desloca para todos os desenhos dentro do ambiente scope 1cm para
direita. Já o yshift desloca as figuras 1cm ao norte . Mas, como ele est´a associ-
ado apenas ao ultimo retângulo (e não ao ambiente), então apenas ele sofre suas
consequências.

Também poder´ıamos fazer o seguinte

\ begin {tikzpicture}
% Gr ad e
\draw[step=1c m, color=
lightgray](-1,-1)grid
(3,3);
% Po nt o
\draw[xshift=1c m, yshif t=1cm
](1,1) --(2,1) --(1.5,2)--
cycle;
\ en d {tikzpicture}

Isso mostra que tanto o xshift como o yshift podem ser usados fora do ambiente
scope.

O próximo exemplo mostra um espelhamento em rela¸ cão a uma reta horizontal


que passa pela srcem.

36
14.2 Rotaç˜
ao www.number.890m.com

\ begin {tikzpicture}
% Gr ad e
\draw[step=1c m, color=
lightgray](-3,-3)grid
(3,3);
% Ei xo de si me tr ia
\draw[red](0,-3)--(0,3);
% Poli gono
\draw(2,2)--(3,2) --(2.5,3)--
cycle;
% Poli gono esp elh ado
\ begin {scope}[y=-1cm]
\draw(2,2)--(3,2) --(2.5,3)--
cycle;
\ en d {scope}
\ en d {tikzpicture}

A seguir temos uma reflexão feita em relação a uma reta horizontal e vertical
que passe pela srcem.

\
% begin
Gr ad e{tikzpicture}
\draw[step=1cm,color=
lig htg ray] (-3,- 3) gri d
(3,3);
% Ei xo s de si me tr ia
\draw[red](-3,0)--(3,0);
\draw[red](0,3)--(0,-3);
% Poli gono
\draw(2,2)--(3,2) --(2.5,3)--
cycle;
% Poli gono esp elh ado
\ begin {scope}[x=-1c m, y=-1cm
]
\draw(2,2)--(3,2) --(2.5,3)--
cycle;
\ en d {scope}
\ en d {tikzpicture}

14.2 Rotação

A rotação é outra transformação geométrica e pode ser feita através do atributo


rotate.

37
14.3 Escalamento www.number.890m.com

\ begin {tikzpicture}
% ro ta ca o de 30 gr au s
\draw[rotate=30](0,0)
rectangle(1,0.5);
% 90 grau s
\draw[rotate=90](0,0)
rectangle(1,0.5);
% 12 0 gr au s
\draw[rotate=120](0,0)
rectangle(1,0.5);
\ en d {tikzpicture}

14.3 Escalamento

A ampliação ou redução de um desenho podem ser feitas de duas maneiras:


Uma delas através do atributo scale.

\ begin {tikzpicture}
% Fig ura co m dime nso es
normais
\draw (0,0)--(1,0) --(0. 5,1)
--cycle;
\ en d {tikzpicture}

\ begin {tikzpicture}[scale=2]
% Fig ura amp lia da du as vez es
\draw(0,0)--(1,0) --(0.5,1)--
cycle;
\ en d {tikzpicture}

\ begin {tikzpicture}
% Fig ura red uzi da pe la
me ta de
\draw[scale=.5](0,0) --(1,0)

\ en d--(0.5,1)--cycle;
{tikzpicture}

Outra forma seria

\ begin {tikzpicture}
% Tri ang ulo
\draw(0,0)--(1,0) --(0.5,1)--
cycle;
% Tri ang ulo amp liad o 2 vez es
\draw[x=2c m, y=2cm](0,0)
--(1,0) --(0.5,1)--cycle ;
\ en d {tikzpicture}

38
www.number.890m.com

Ou poderı́amos até usar o ambiente scope para isso.

\ begin {tikzpicture}
% Tri ang ulo
\draw(0,0)--(1,0) --(0.5,1)--
cycle;
% Tri ang ulo amp liad o 2 vez es
\ begin {scope}[x=2c m, y=2cm]
\draw(0,0)--(1,0) --(0.5,1)--
cycle;
\ en d {scope}
\ en d {tikzpicture}

15 CLIP

A função clip seleciona um trecho de uma imagem. Por exemplo, considere a


imagem a seguir.

\ begin {tikzpicture}[scale=2]
\draw[step=.5c m, gray
](-1.4,-1.4)grid(1.4,1.4)
;
\draw (-1.5,0) --(1.5,0);
\draw (0, -1.5) --(0,1.5);
\draw(0,0)circle(1cm);
\shadedraw[left color=gra y,
rig ht col or=gr ee n , dra w=
green!50!black](0,0)--(3
mm ,0 mm ) ar c ( 0:3 0: 3 mm ) --
cycle;
\ en d {tikzpicture}

Usando o clip podemos criar um retˆangulo com vértice inferior esquerdo na


coordenada (-0.1, -0.2) e vértice superior direito em (1.1, 0.75). Com isso apenas
a imagem que ficaria dentro desse retˆangulo é exibida.

39
www.number.890m.com

\ begin {tikzpicture}[scale=2]
\clip(-.1,-.2)rectangle
(1.1,.75);
\draw[step=.5c m, gray](-1 .4,
-1. 4)grid(1. 4, 1.4);
\dra w(-1. 5, 0)--(1 .5, 0);
\dra w(0, -1 .5 )--(0, 1.5 );
\draw(0, 0)circle(1cm);
\shadedraw[left color=gra y,
rig ht col or=gr ee n , dra w=
green!50 !black](0, 0)--(3
mm , 0 mm ) ar c ( 0: 30: 3 mm ) --
cycle;
\ en d {tikzpicture}

40
15.1 REFER ÊNCIA www.number.890m.com

15.1 REFER ÊNCIA

TANTAU, Até Till. TIKZ and PGF: Manual for version 1.18 . 12 June
2007.

41

You might also like