From: Frozenlock <frozenlock@gmail.com>
To: R.M.Krug@gmail.com
Cc: emacs-orgmode@gnu.org, Eric Schulte <eric.schulte@gmx.com>
Subject: Re: Including source when exporting in PDF
Date: Wed, 11 Jan 2012 21:06:41 -0500 [thread overview]
Message-ID: <CACjB3ds0M142_3PVs0p8Nu0nhO2wKQz11ZmAyMv9uvgATB7hHg@mail.gmail.com> (raw)
In-Reply-To: <4F0DAAAC.50607@gmail.com>
To include multiple files, I export all of the required files before
the PDF creation and zip them. This way, I only need to include a
single zip file.
#+BEGIN_SRC emacs-lisp :exports none
;; various exports
(save-window-excursion
(org-export-as-ascii org-export-headline-levels))
(save-window-excursion
(org-export-as-html org-export-headline-levels))
;;zip the required files
(let ((filename (file-name-sans-extension (file-name-nondirectory
(buffer-file-name)))))
(shell-command
(concat "zip " filename ".zip "
(mapconcat '(lambda (arg) arg)
(remove-if
'(lambda (filename)
(string-match "\\.$\\|\\.pdf$\\|\\.atfi$\\|#" filename))
(directory-files (file-name-directory (buffer-file-name))))
" "))))
#+END_SRC
(I've added this code in a babel block to evaluate just before the PDF export.)
As you can see, I make sure I don't include a previous PDF, or any
other useless file.
If you wish to add only a single type of file, simply replace
"remove-if" by "remove-if-not" and change the value in the
string-match function. For example, "\\.$\\|\\.pdf$\\|\\.atfi$\\|#"
would become "\\.lisp$" to include all your exported lisp files.
Hope this helps!
By the way, I can't get the code block to be evaluated automatically
when I export to PDF, any clue on how to do that?
On Wed, Jan 11, 2012 at 10:28 AM, Rainer M Krug <r.m.krug@gmail.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 06/01/12 08:45, Eric Schulte wrote:
>> Frozenlock <frozenlock@gmail.com> writes:
>>
>>> I am a strong advocate in keeping the source of everything.
>>>
>>> However, Â a source can easily be lost if it doesn't follow the
>>> document. In LaTeX, there's a package to attach a file to a PDF
>>> (like when you attach a file to an email). By doing so, the
>>> source will follow the PDF even if the common reader have no clue
>>> what it's for, or even how to use it.
>>>
>>
>> This sounds like a great Reproducible Research practice.
>>
>>>
>>> Here is how I attach my org source to every document I export to
>>> PDF:
>>>
>>> ;; Include the source file for every exported PDF (org-mode)
>>> (eval-after-load "org-exp" '(defadvice org-export-as-latex
>>> (around org-export-add-source-pdf activate) "Add the source (org
>>> file) to the resulting pdf file" (let ((filename (buffer-name)))
>>> ad-do-it ;do the function (let ((latex-buffer ad-return-value))
>>> (set-buffer latex-buffer) (while (re-search-forward
>>> "\\\\usepackage{.+}" nil t)); go to the end of packages (insert
>>> "\n\\usepackage{attachfile2}"); the package needed to attach
>>> files (when (re-search-forward "\\\\end{document}" nil t)
>>> (forward-line -1) (insert (concat "\\vfill\n" "\\footnotesize\n"
>>> "The source of this document is an Org-Mode file attached here:"
>>> "\n\\attachfile" "{" filename "}"))) (save-buffer)))))
>>>
>>>
>>> This is by no mean a patch, but rather a quick hack. Perhaps
>>> someone with a working knowledge of the org-export could find a
>>> way to add a source option?
>>>
>>
>> I think this practice may not actually require any changes to the
>> Org-mode core. Â The attached small Org-mode file will attach itself
>> to pdf exports using only features already present in Org-mode.
>
> Following this idea - how can I easily attach all files created by
> tangling? Is there a programmatic way, without having to specify them
> manually?
>
> Thanks,
>
> Rainer
>
>
>>
>>
>>
>>
>>
>> Thanks for sharing this idea!
>>
>>>
>>>
>>> Cheers!
>>>
>>
>
>
> - --
> Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation
> Biology, UCT), Dipl. Phys. (Germany)
>
> Centre of Excellence for Invasion Biology
> Stellenbosch University
> South Africa
>
> Tel : Â Â Â +33 - (0)9 53 10 27 44
> Cell: Â Â Â +33 - (0)6 85 62 59 98
> Fax : Â Â Â +33 - (0)9 58 10 27 44
>
> Fax (D): Â Â +49 - (0)3 21 21 25 22 44
>
> email: Â Â Â Rainer@krugs.de
>
> Skype: Â Â Â RMkrug
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.11 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iEYEARECAAYFAk8NqqwACgkQoYgNqgF2egro/wCfTlVxaVNR1/5395UC8wWrL9Ku
> jhIAn3f3Lud1aFrHz1uzo7SlFH+CsmFi
> =wU4r
> -----END PGP SIGNATURE-----
next prev parent reply other threads:[~2012-01-12 2:06 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-04 21:29 Including source when exporting in PDF Frozenlock
2012-01-06 7:45 ` Eric Schulte
2012-01-11 15:28 ` Rainer M Krug
2012-01-12 2:06 ` Frozenlock [this message]
2012-01-12 9:11 ` Rainer M Krug
2012-01-12 13:54 ` Frozenlock
2012-01-12 13:59 ` Rainer M Krug
2012-01-15 5:29 ` Frozenlock
2012-01-16 11:21 ` [BUG?][babel] " Rainer M Krug
2012-01-18 0:57 ` Frozenlock
2012-01-18 9:03 ` Rainer M Krug
2012-01-20 18:12 ` Eric Schulte
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CACjB3ds0M142_3PVs0p8Nu0nhO2wKQz11ZmAyMv9uvgATB7hHg@mail.gmail.com \
--to=frozenlock@gmail.com \
--cc=R.M.Krug@gmail.com \
--cc=emacs-orgmode@gnu.org \
--cc=eric.schulte@gmx.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.