Inserção simplificada de PNGs em LaTeX usando Bundles to TextMate

VN:RO [1.9.11_1134]
terça-feira, 2 d novembro d 2010
Por Eduardo Russo, Coop10. Siga no Twitter

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.

Novo Bundle do TextMate para inserção de imagem em Latex.

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

VN:F [1.9.11_1134]
Rating: 5.0/5 (2 votes cast)
Inserção simplificada de PNGs em LaTeX usando Bundles to TextMate, 5.0 out of 5 based on 2 ratings
Related Posts with Thumbnails

Eduardo Russo
Eduardo Russo

Formado em Engenharia de Computação pela Poli (2010) e em Design pela Belas Artes (2001), cofundador do Bit a Bit, fundador do Tubelivery e do Faviconit, cofundador da Fábrica de Aplicativos e coordenador de produto do Scup.

Tags: , , , , , , ,

3 Comentários para “Inserção simplificada de PNGs em LaTeX usando Bundles to TextMate”

  1. Valeu pela dica, Russo!

    Também estou usando o TextMate para editar os arquivos tex.

    VN:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #266
  2. Bruno Toshyaki Maeda

    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.

    VA:F [1.9.11_1134]
    Rating: +2 (from 2 votes)
    #314
    • Eduardo Russo

      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.

      VA:F [1.9.11_1134]
      Rating: 0 (from 0 votes)
      #315

Deixe um Comentário

Spam Protection by WP-SpamFree

Get Adobe Flash playerPlugin by wpburn.com wordpress themes