Inserção simplificada de PNGs em LaTeX usando Bundles to TextMate
O TextMate (Mac only…) tem uns comandos (Bundles) bem úteis pra Latex. Hoje descobri que basta arrastar uma imagem para um texto “.tex” que o TM automaticamente insere o contexto da imagem, bastando alterar os textos e apertar TAB pra ir pro próximo campo.
Mas, o TCC do Anauê Costa, que usei como base, tinha um “\newcommand” que simplificava o processo de inserção de imagens (adicione isso nas definições do seu LaTeX):
1 2 3 4 5 6 7 8 | \newcommand{\inputpng}[4]{% \begin{figure}[!htb] \centering \includegraphics[width=#4\textwidth]{#1.png} \caption{\it #3.} \label{fig:#2} \end{figure} } |
então, em vez de:
1 2 3 4 | \includegraphics[width=1.0\textwidth]{figuras/p-30-1-multiplataforma-marketshare_gartner.png} \caption{caption} \label{fig:figuras_p-30-1-multiplataforma-marketshare_gartner} \end{figure} |
você fica com:
1 | \inputpng{figuras/p-30-1-multiplataforma-marketshare_gartner}{figuras_p-30-1-multiplataforma-marketshare_gartner}{caption}{1.0} |
Fiz então uma alteração no comando de inserção de imagem pra ele gerar o novo tipo quando arrastar uma imagem.
Para inseri-lo, no TM, aperte CMD+OPTION+CNTRL+B. Isso abrirá o editor de bundles.
Troque de “show all” para “drag commands“, vá até “LaTeX” e selecione o “Include Image“.
Tire a extensão “png” de lá, já que o comando novo só serve para PNG!
Agora clique no botão de + e adicione um “New Drag Command”
chame como quiser… adicione a extensão PNG e cole o código abaixo nele:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #!/usr/bin/env ruby require 'pathname' require "#{ENV['TM_BUNDLE_SUPPORT']}/lib/LaTeXUtils.rb" filename = ENV["TM_DROPPED_FILEPATH"] relative_to = ENV["TM_DIRECTORY"] startfile = ENV['TM_LATEX_MASTER'] || ENV['TM_FILEPATH'] master = Pathname.new(LaTeX.master(startfile)) unless master.absolute? master = master.expand_path(ENV['TM_PROJECT_DIRECTORY']) end path = Pathname.new(filename).relative_path_from(master.dirname) case ENV['TM_MODIFIER_FLAGS'] when /OPTION/ puts ["\\\\begin{center}", " \\\\includegraphics[height=\${1:3in}]{#{path}}", "\\\\end{center}"].join("\n") when /SHIFT/ puts ["\\\\begin{figure}[\${1:htbp}]", " \\\\centering", " \\\\includegraphics[height=\${2:3in}]{#{path}}", " \\\\caption{\${4:caption}}", " \\\\label{fig:\${5:#{path.to_s.gsub(/(\.[^.]*$)|(\.\.\/)/,"").gsub(/\//,"_")}}}", "\\\\end{figure}"].join("\n") else puts "\\\\inputpng{#{path.to_s.gsub(".png", "")}}{\${1:#{path.to_s.gsub(/(\.[^.]*$)|(\.\.\/)/,"").gsub(/\//,"_")}}}{\${2:caption}}{\${3:1.0}\}" end |
Adicione também no “Scope Selector” o seguinte:
1 | text.tex.latex |
Com isso, sempre que você arrastar um PNG pro .tex, ele já vai gerar o código automagicamente!
Segue a imagem de como ficou aqui.
Para inserir “PNGs” da forma “original”, basta pressionar SHIFT quando arrastar a imagem.
Observação: Esse é um post transcrito de um e-mail, na pressa, no meio da correria de escrever o TCC da Poli, então, não está bem formatado, cheio de imagens ilustrativas ou coisas do tipo… sorry




Valeu pela dica, Russo!
Também estou usando o TextMate para editar os arquivos tex.
Apenas destacando, já que algumas pessoas tiveram problemas com a inserção de imagens no formato png: isto só funciona se você estiver compilando diretamente de latex para pdf (LaTeX => PDF)… caso esteja gerando .dvi ou post-script(.ps), ou compilando (LaTeX => PS => PDF), você tem que usar imagens .eps.
Apanhei muito com isso no começo.
Uma das vantagens de gerar direto PDFTex é a qualidade das imagens, além do tempo de compilação pra PDF mais rápido.