terça-feira, 12 de fevereiro de 2013

Livreto, livro de brochura em A5 (booklet)

Também conhecido como booklet, veremos neste artigo como imprimir um livro tamanho A5 na forma de brochura.
A ideia é imprimir num papel A4 no formato paisagem (landscape) com a seguinte disposição das páginas:

desta forma teremos um livro no tamanho A5, que depois de grampeado se tornará num livro de bolso do tipo brochura.

A sequencia talvez não seja boa para leitura em tela, mas após impresso, e dobrado, torna-se um livro portátil, pequeno e leve, além de economizar papel, já que deste modo imprimos 4 páginas por folha.
A seguir veremos como utilizar os pacotes PDFPages, BookLet e PDFJam (PDFBook). A diferença é que o PDFPages gera o livreto a partir de páginas em PDF já existentes. O BookLet gera o livreto a partir do documento tex original. E o PDFJam é uma ferramenta externa (não é pacote do LaTeX) que gera o livreto (PDFBook) a partir de linhas de comando.

Gerando o livreto com pdfpages


Para criar o livreto primeiro digite e compile o documento em A4. Baixe pages12.zip onde se encontram algumas páginas numeradas. \documentclass[a4paper]{article}
\usepackage{fix-cm,pgffor}
 \begin{document}
  \foreach \n in {1,...,12}{
   {\fontsize{400}{120}\selectfont \n \par}
  \newpage
 }
 \end{document}

Agora vamos criar o nosso livreto em A5. \documentclass[a4paper,landscape]{article}
A opção landscape imprime a página no modo paisagem. Para inserir as páginas pdf usamos o pacote \usepackage{pdfpages}
Usaremos os pacotes a seguir para ajustar as páginas. \usepackage{ifpdf,ifxetex,everyshi}
Os comandos a seguir são necessários para rotacionar as páginas impares. % Rotaciona as paginas impares em 180º
\makeatletter
\ifpdf
 \EveryShipout{\ifodd\c@page\pdfpageattr{/Rotate 180}\fi}%
\fi
\ifxetex
 \EveryShipout{\ifodd\c@page\special{pdf: put @thispage < < /Rotate 180 > > }%
\fi
}
\fi
\makeatother

Início do documento \begin{document}
Para inserir duas páginas num A4 usamos a opção nup=1x2 e a opção booklet=true redistribui as páginas na sequência que deve ser impressa. A opção pages=- insere todas as páginas. \includepdf[pages=-,nup=1x2,booklet=true]{pages12.pdf}
\end{document}

Veja o código completo:
  % booklet A5
  \documentclass[a4paper,landscape]{article}
  \usepackage{pdfpages}
  \usepackage{ifpdf,ifxetex,everyshi}
  
  % Rotaciona as paginas impares em 180º
  \makeatletter
  \ifpdf
     \EveryShipout{\ifodd\c@page\pdfpageattr{/Rotate 180}\fi}%
  \fi
  \ifxetex
    \EveryShipout{\ifodd\c@page\special{pdf: put @thispage << /Rotate 180 >>}%
  \fi
  }
  \fi
  \makeatother
  
  \begin{document}
  
  \includepdf[pages=-,nup=1x2,booklet=true]{pages12.pdf}
  
  \end{document}

Baixe booklet01.zip

Gerando o livreto com capa e includepdfmerge (pdfpages)


Veja também um exemplo com capa de Curutari by Malaysian LaTeX User Group. Baixe booklet01comcapa.zip.
Para inserir várias páginas PDF no LaTeX e obter o mesmo efeito booklet use o comando \includepdfmerge.
  \documentclass[a4paper,landscape]{article}
  \usepackage[utf8]{inputenc}
  \usepackage{pdfpages}
  \usepackage{ifpdf,ifxetex,everyshi}
  
  % Rotaciona as paginas impares em 180º
  \makeatletter
  \ifpdf
     \EveryShipout{\ifodd\c@page\pdfpageattr{/Rotate 180}\fi}%
  \fi
  \ifxetex
    \EveryShipout{\ifodd\c@page\special{pdf: put @thispage << /Rotate 180 >>}%
  \fi
  }
  \fi
  \makeatother
  
  \begin{document}
  
  \includepdfmerge[nup=1x2,booklet=true]{
   capa-samplebookdesign.pdf, 1,
   2e3capas.pdf, 1,
   pages12.pdf, -,
   2e3capas.pdf, 2,
   capa-samplebookdesign.pdf, 2}
  
  \end{document}

Gerando o livreto em memoir com booklet


O pacote BookLet é um pacote específico para geração de livretos. Este pacote gera o livreto diretamente a partir do arquivo tex, dispensando o uso do pacote pdfpages. Baixe booklet02memoir.zip
Na classe memoir devemos fazer alguns ajustes de configuração da página como segue: \documentclass[a4paper]{memoir}
\usepackage[utf8]{inputenc}
\usepackage[brazil]{babel}
\usepackage{kantlipsum} % texto
% tamanho do bloco de texto
\settypeblocksize{5.5in}{4in}{*}
\addtolength{\textheight}{\onelineskip}
\setlrmargins{2in}{*}{*} % margem esquerda
\setulmargins{3in}{*}{*} % margem superior
\checkandfixthelayout

O pacote booklet é utilizado junto com as opções print,1to1 para ser ajustado no papel A4. \usepackage[print,1to1]{booklet} \nofiles
\pagespersignature{16} % coloque multiplos de 4

O comando \setpdftargetpages é indispensável para ajuste das margens, sem ele o texto fica fora da página. \setpdftargetpages % para impressao de pdf
A seguir os comandos necessários para girar as páginas na posição correta de leitura. % reposiciona as paginas para impressao
\ifprintoption
 \special{!TeXDict begin /landplus90{true}store end}
 \special{!TeXDict begin < < /Tumble true > > setpagedevice end}
\fi

E por fim, o corpo de texto. \begin{document}
\pagenumbering{arabic}
\pagestyle{headings}
\chapter{Primeiro}
\kant[1-20]
\chapter{Segundo}
\kant[1-20]
\end{document}

Veja o código completo.
  \documentclass[a4paper]{memoir}
  \usepackage[utf8]{inputenc}
  \usepackage[brazil]{babel}
  \usepackage{kantlipsum}
  
  % tamanho do bloco de texto
   \settypeblocksize{5.5in}{4in}{*}
   \addtolength{\textheight}{\onelineskip}
   \setlrmargins{2in}{*}{*} % margem esquerda
   \setulmargins{3in}{*}{*} % margem superior
   \checkandfixthelayout
  
  % booklet
  \usepackage[print,1to1]{booklet} \nofiles 
  \pagespersignature{16} % coloque multiplos de 4
  \setpdftargetpages % para impressao de pdf
  
  % reposiciona as paginas para impressao
   \ifprintoption
     \special{!TeXDict begin /landplus90{true}store end}
     \special{!TeXDict begin < < /Tumble true > > setpagedevice end}
   \fi
  
  \begin{document}
  \pagenumbering{arabic}
  \pagestyle{headings}
   
  \chapter{Primeiro}
   
  \kant[1-20]
  
  \chapter{Segundo}
   
  \kant[1-20]
  
  \end{document}

Baixe booklet02memoir.zip

Gerando o livreto em book com booklet


Os ajustes para a classe book são semelhantes. Baixe booklet03book.zip
Veja o comando \setlength{\pagesepwidth}{1pt} que gera uma linha de separação (opcional).
  \documentclass[a4paper]{book}
  \usepackage[utf8]{inputenc}
  \usepackage[brazil]{babel}
  \usepackage{kantlipsum}
  
  % tamanho do bloco de texto
  \setlength{\textheight}{0.55\paperheight} \setlength{\textwidth}{0.55\paperwidth}
  \setlength{\oddsidemargin}{70pt} \setlength{\evensidemargin}{70pt}
  \setlength{\topmargin}{80pt} \setlength{\footskip}{27.5pt}
  \setlength{\headheight}{14.6pt} \setlength{\headsep}{19.9pt}
  
  % booklet
  \usepackage[print,1to1]{booklet} \nofiles 
  \pagespersignature{12} % coloque multiplos de 4
  \setlength{\pagesepwidth}{1pt} % linha de separacao da pagina
  \setpdftargetpages % para impressao de pdf
  
  % reposiciona as paginas para impressao
   \ifprintoption
     \special{!TeXDict begin /landplus90{true}store end}
     \special{!TeXDict begin < < /Tumble true > > setpagedevice end}
   \fi
  
  \begin{document}
  
  \chapter{Primeiro}
   
  \kant[1-20]
  
  \chapter{Segundo}
   
  \kant[1-20]
  
  \end{document}

Baixe booklet03book.zip

Gerando o livreto com pdfjam


O pdfjam não gera um livreto, mas com ele podemos colocar duas ou mais páginas num A4 apenas para economizar papel ou para ter um handout (notas de slides, por exemplo). A leitura das páginas é sequencial.
Abra o terminal e digite os comandos a seguir:
pdfjam --nup 2x1 --landscape pages12.pdf -o saidaA5.pdf
pdfjam --nup 2x3 --frame true pages12.pdf -o handout.pdf

Experimente sem a opção --frame true.
Obs: Este programa só funciona no linux.

Baixe handout.pdf

Gerando o livreto com pdfbook


O pdfbook é um subprogramas do pdfjam. É o programa ideal para geração de livretos via terminal.
pdfbook --short-edge pages12.pdf -o pdfbooklet.pdf
O resultado tem o mesmo efeito que o primeiro visto no início deste post.

Obtenha o mesmo efeito do livreto com capa digitando
pdfbook --short-edge capa-samplebookdesign.pdf '1' 2e3capas.pdf '1' pages12.pdf '-' 2e3capas.pdf '2' capa-samplebookdesign.pdf '2' -o pdfbooklet01comcapa.pdf

Mais informações:
Inserindo páginas PDF em documento LaTeX
Booklet texdoc booklet
PDFPages texdoc pdfpages
PDFJam README
David Firth, software: PDFjam
Manipulating pdfs with pdfjam