Temas do Beamer

Agosto 14, 2011

Faz um bom tempo já que eu faço slides usando latex, mais especificamente o pacote Beamer. Há vários temas que se pode escolher, como por exemplo Boadilla, Copenhagen, Cambridge, Darmstadt, etc. Sim, os nomes dos temas em geral são nomes de cidades.

Eu sempre usava algum desses temas sem nenhuma customização. Entretanto, algumas vezes eu queria combinar características de temas diferentes, mas acabava me conformando em usar apenas a de um tema.

Em meados de 2010 o Peterson fez um tema customizado, que acabamos adotando informalmente como o do laboratório, tanto que eu o usei nas duas apresentações que fiz nos seminários do LOCo.

Componentes de um tema

Na verdade um tema é composto por diversas partes: cor, tema externo, tema interno e fonte. Há vários desses temas pré-definidos no sistema, com nomes não muito sugestivos.

color — albatross, beaver, beetle, crane, default, dolphin, dove, fly, lily, orchid, rose, seagull, seahorse, sidebartab, structure, whale, wolverine;

outer — default, infolines, iniframes, shadow, sidebar, smoothbars, smoothtree, split, tree;

inner — circles, default, inmargin, rectangles, rounded;

font — default, professionalfonts, serif, structurebold, structureitalicserif, structuresmallcapsserif.

Como primeiro exemplo, vamos usar a seguinte combinação:

\usecolortheme{wolverine}
\useinnertheme{circles}
\useoutertheme{infolines}
\usefonttheme{default}

Código 1: Temas

Usando esse código latex de exemplo, a saída será:


Figura 1: Capa usando temas do Código 1


Figura 2: Texto usando temas do Código 1

Agora, usando uma nova combinação

\usecolortheme{albatross}
\useinnertheme{rectangles}
\useoutertheme{sidebar}
\usefonttheme{structurebold}

Código 2: Temas


Figura 3: Capa usando temas do Código 2


Figura 4: Texto usando temas do Código 2

Criando seu próprio tema

Segundo o manual (pdf), esses componentes de tema são apenas para uma melhor modularização, de modo que você pode definir tudo no próprio .tex em que estiver trabalhando.

Porém, se quiser manter a organização, e quiser criar um tema com nome xyz para as componentes color, inner, outer e font, deve editar um arquivo com nome beamercolorthemexyz.sty, beamerinnerthemexyz.sty, beamerouterthemexyz.sty ou beamerfontthemexyz.sty, respectivamente.

Tema de cores

O tema de cores, como o nome diz, contém as definições de cores das estruturas usadas pelos temas. Se quisermos que o tema de cores possa ser combinado com qualquer um dos outros temas, a sugestão é pegar o código de algum outro tema e editar as cores da maneira desejada. Desta forma, estaremos cobrindo todas as possíveis estruturas.

Tema interno

O tema interno controla diversos elementos como: página de título, o ambiente itemize, o ambiente enumerate, os blocos, figuras e tabelas, etc. Para escolher cada o estilo de cada item, usamos o comando \setbeamertemplate{nome do item}[valor]

Alguns exemplos:

\setbeamertemplate{blocks}[rounded][shadow=true]
\setbeamertemplate{items}[circle]
\setbeamertemplate{enumerate item}[square]

O exemplo é auto-explicativo, e é basicamente o que usei na adaptação do tema do Peterson.

Tema externo

O tema externo define como será o topo e a base da página, ou seja, a estrutura externa da mesma. O melhor é criar seu tema a partir de um pré-existente que mais se assemelha à estrutura desejada.

No exemplo abaixo, o trecho do tema infolines que define a parte inferior da página (footline):

\defbeamertemplate*{footline}{infolines theme}
{
  \leavevmode%
  \hbox{%

  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,center]{author in head/foot}%
    \usebeamerfont{author in head/foot}\insertshortauthor~~(\insertshortinstitute)
  \end{beamercolorbox}%

  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,center]{title in head/foot}%
    \usebeamerfont{title in head/foot}\insertshorttitle
  \end{beamercolorbox}%

  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,right]{date in head/foot}%
    \usebeamerfont{date in head/foot}\insertshortdate{}\hspace*{2em}
    \insertframenumber{} / \inserttotalframenumber\hspace*{2ex} 
  \end{beamercolorbox}}%
  \vskip0pt%
}

O código acima está definindo três blocos de mesmo tamanho (controlado por wd – width), conforme pode ser conferido na Figura 2. Além disso, no primeiro bloco será inserido o nome encurtado do autor e do instituto, definidos pelas macros \insertshortauthor e \insertshortinstitute.

Dá para modificar essa parte do jeito que for mais conveniente. Por exemplo, se não quisermos que apareça o nome do autor/instituto pois é um seminário onde todos te conhecem, podemos usar apenas dois blocos e ajeitar a largura para wd=.5\paperwidth.

Como a contagem de páginas geralmente ocupa menos espaço e o nome do trabalho ocupa mais, eu modifiquei o tema acima para ficar com as proporções 3/6/1, sacrificando simetria por legibilidade.

Customizando as cores, as estruturas internas e externas, adaptei o tema do Peterson, que ficou com a seguinte cara:

Figura 5: Capa usando tema do LOCo modificado

Figura 6: Texto usando tema do LOCo modificado

Extra: Coloração das linhas de tabelas

Embora tabelas devam ser customizadas no tema interno, até onde eu sei essa em particular não pode ser inserida como parte do Beamer. Dado exemplo de tabela (código):

Queremos que as linhas alternem suas cores. Para fazer isso, podemos usar o comando \rowcolors{l}{cor1}{cor2}, onde l é deve conter o númnero da linha onde a coloração irá começar, cor1 e cor2 são as cores que serão alternadas.

Esse comando é bugado para tabelas com multi-colunas como no exemplo acima. Para isso é preciso acertar manualmente a cor da coluna com o comando \columncolor{cor}. O novo código pode ser conferido aqui.

O resultado fica então:

Referências

[1] Beamer User Guide (pdf)
[2] http://www.tug.org/pracjourn/2005-4/mertz/mertz.pdf

Anúncios

Escrevendo com o emacs

Abril 3, 2011

Desde 2005 uso emacs devido às aulas introdutórias de programação. Nunca estudei muito a fundo esse editor que é capaz de realizar incontáveis tipos de tarefas. Mas aprendi algumas funcionalidades interessantes.

Sátira do xkcd com diversos editores (clique para ampliar)

Editando LaTeX

O auctex é uma extensão que facilita a edição de documentos LaTeX. Para quem usa ubuntu, basta instalar o pacote auctex.

Depois de instalar essa extensão, ao abrir arquivos .tex uma nova interface aparecerá, parecida com a imagem abaixo:

O botão do leão é equivalente a executar o comando latex no arquivo atual. Ele gera um arquivo no formato .dvi. O botão do óculos abre o arquivo .dvi com o programa xdvi. O botão do livrinho executa o comando bibtex sobre o arquivo .aux gerado com o comando latex. O último botão é um preview dentro do próprio emacs, mas eu particularmente não gosto.

Nota: o padrão do auctex é usar o comando latex que gera arquivos dvi. É possível mudar esse padrão para sempre gerar pdf’s usando o comando pdflatex. Para isso, adicione a seguinte linha ao arquivo de configuração do emacs, em ~/.emacs:

(add-hook 'LaTeX-mode-hook 'TeX-PDF-mode)

Observe ainda que existem diferenças entre os comandos latex e pdflatex. Uma delas é que latex só trabalha com imagens no formato .eps enquanto pdflatex trabalha com vários tipos de formatos (pdf, jpg, png), mas não .eps.

Correções ortográficas

O emacs tem uma funcionalidade de indicar erros ortográficos, chamada flyspell. O dicionário padrão é o inglês, mas é possível alterar para português brasileiro. Antes de mais nada, é preciso instalar suporte do aspell a essa linguagem. No ubuntu, basta instalar o pacote aspell-pt-br.

Depois, para trocar o dicionário, abra a linha de comandos no emacs (Alt+X) e digite o seguinte comando:

ispell-change-dictionary

Ele vai pedir o argumento, o qual deve ser:

portugues

Agora, se o seu texto já está escrito e você quer fazer a revisão ortográfica, abra a linha de comandos e digite:

flyspell-buffer

Se você quer começar a fazer a revisão ortográfica conforme vai escrevendo, use

flyspell-mode

As palavras que não estiverem de acordo com o dicionário ficarão destacadas. Clicando com o botão do meio do mouse aparece um menu com sugestões de correção ou opções de ignorar ou adicionar ao dicionário. Para ir para o próximo erro, é possível usar o comando flyspell-goto-next-error ou o atalho

Ctrl+,