You first export your org-file to latex. the function I sent assumes the tex file has the same basename as the org-file, and ends in .tex. Then, with your org-file as the current buffer, call that function. It will modify the latex file by replacing your \includegraphics lines with the equivalent line minus the .png. then you need to manually build the latex file if you want the pdf. I am not sure what an ebb file is, or what the difference in latex vs xelatex is. https://github.com/jkitchin/jmax/blob/master/ox-manuscript.el John ----------------------------------- John Kitchin Associate Professor Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 http://kitchingroup.cheme.cmu.edu On Fri, Apr 25, 2014 at 11:23 AM, Leu Zhe wrote: > Dear John, > > Thanks very much for your help. > > I have tried your code but nothing happened. However, I think it is close > to my remand. > > I have some questions about your code: > > 1. When should this command be called? Don't I need to call it before the > org-latex-pdf-process? > > 2. I use xelatex to render my .tex files. Because xelatex can not > recognize the boundingbox of both .png and .pdf, > so I need to generate .ebb for them in seperate folders, which are PNG > and PDF folders respectively. so i think > you did not mention them? > > I am studying elisp now, but your code is really difficult for me, so can > you help me dig in? > > Best regard! > > > > > On Fri, Apr 25, 2014 at 10:54 PM, John Kitchin wrote: > >> This is how I do what I think you are describing. I just take off the >> extension, and let (pdf)latex pick the extension it wants. >> >> (defun ox-manuscript-remove-image-extensions () >> "Removes .png extensions from \includegraphics directives in an exported latex file. >> >> >> >> >> >> Run this from an org-buffer after you have exported it to a LaTeX file" >> (interactive) >> (let* ((org-file (file-name-nondirectory (buffer-file-name))) >> (tex-file (replace-regexp-in-string "org$" "tex" org-file)) >> (tex-contents (with-temp-buffer (insert-file-contents tex-file) (buffer-string)))) >> >> >> >> >> (message tex-file) >> (with-temp-file tex-file (insert (replace-regexp-in-string >> >> >> >> >> (concat "\\(\\includegraphics" >> "\\(\[?[^\].*\]?\\)?\\)" ;; match optional [stuff] >> >> >> >> >> "{\\([^}].*\\)\.\\(png\\)}") >> "\\1{\\3}" tex-contents))))) >> >> >> >> >> >> >> John >> >> ----------------------------------- >> John Kitchin >> Associate Professor >> Doherty Hall A207F >> Department of Chemical Engineering >> Carnegie Mellon University >> Pittsburgh, PA 15213 >> 412-268-7803 >> http://kitchingroup.cheme.cmu.edu >> >> >> >> On Thu, Apr 24, 2014 at 8:46 AM, Leu Zhe wrote: >> >>> I am using org-mode to write some article now. Org-mode is really a >>> great tool to outline a article with great table and image support. >>> >>> Org-mode can display inline .png image but not .pdf file. Because now >>> org-mode can not control the width or height of shown inline image, so i >>> use matplotlib to produce low dpi .png image in PNG folder for inline >>> display and higher dpi pdf image in PDF folder for finally article export. >>> >>> In .org file, the image link is like [[file:PNG\*.png]] and >>> \includegraphics{PNG\*.png}in the produced .tex file. Then emacs will >>> use org-latex-pdf-process to render it to pdf file. What I want is that >>> before or in org-latex-pdf-process, a regexp replace function is added >>> to replace the \includegraphics{PDF\*.pdf}, and then produce the final >>> pdf file. >>> >>> Can anyone give a hand? >>> >> >> >