From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Dye Subject: Re: Making an index in latex export --- surprisingly difficult Date: Sun, 8 May 2011 20:08:26 -1000 Message-ID: References: <4DB73482.5010608@sift.info> <6174.1303854727@alphaville.americas.hpqcorp.net> <4DB74011.2020600@sift.info> <12644.1303886106@alphaville.dokosmarshall.org> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([140.186.70.92]:38524) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QJJu4-0005bR-CH for emacs-orgmode@gnu.org; Mon, 09 May 2011 02:25:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QJJtz-0006Sa-D1 for emacs-orgmode@gnu.org; Mon, 09 May 2011 02:25:12 -0400 Received: from lo.gmane.org ([80.91.229.12]:38643) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QJJtz-0006Pv-2m for emacs-orgmode@gnu.org; Mon, 09 May 2011 02:25:07 -0400 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1QJJtx-000216-4t for emacs-orgmode@gnu.org; Mon, 09 May 2011 08:25:05 +0200 Received: from cpe-24-94-66-191.hawaii.res.rr.com ([24.94.66.191]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 09 May 2011 08:25:05 +0200 Received: from tsd by cpe-24-94-66-191.hawaii.res.rr.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 09 May 2011 08:25:05 +0200 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org On 2011-04-26 20:35:06 -1000, Nick Dokos said: > Robert Goldman wrote: > >>>> 4. Modify the org-latex-to-pdf-process to >>>> >>>> ("pdflatex -interaction nonstopmode -output-directory %o %f" "makeindex >>>> -o %b.ind %b.idx" "pdflatex -interaction nonstopmode -output-directory >>>> %o %f" "pdflatex -interaction nonstopmode -output-directory %o %f") >>>> >>>> [This was /somewhat/ of a big deal. Suggest we add support for indexing >>>> as a built-in option, like bibtex...] >>>> >>> >>> Maybe you can try the texi2dvi option (I think it runs makeindex), but >>> texi2dvi did have a bug that has caused problems here in the past: >>> that's the reason it's not the default setting for >>> org-latex-to-pdf-process. If you run into the bug but still want to try >>> texi2dvi anyway, see >>> >>> http://lists.gnu.org/archive/html/bug-texinfo/2010-03/msg00032.html >>> >>> for the fix Karl Berry applied to the development sources. >> >> Once one has makeindex hacked in there (oh, and you've broken the >> security!), it works fine, thanks. >>> >>>> an absolute pathname. But org-mode will only pass absolute pathnames to >>>> makeindex (AFAICT). Question: it seems like bibtex should suffer from >>>> this same restriction. Has anyone had that problem with it? >>>> >>> >>> I haven't had the problem, primarily because I haven't used bibtex >>> through org yet :-) But bibtex should exhibit the same problem: the >>> bibtex change predated the makeindex one. Maybe bibtex is only called >>> with a relative path (if that's the case, then the same method should >>> cure makeindex as well). BTW, ".." is not allowed in the relative path: >>> you can only use subdirectories of the current directory. >>> > > Here's a step-by-step that uses texi2dvi[fn:1]: > > o Download a bibliography file: > > cd /home/nick/lib/bibtex > wget -nd http://ftp.math.utah.edu/pub//tex/bib/linux.html > mv linux.html linux.bib > > o Set the BIBINPUTS environment variable in .profile (or similar): > > BIBINPUTS=/home/nick/lib/bibtex:$BIBINPUTS > export BIBINPUTS > > o Set org-latex-to-pdf-process in .emacs (or similar): > > (setq org-latex-to-pdf-process '("texi2dvi --pdf --tidy --batch %f")) > > The --tidy keeps all the intermediate files tucked away in a subdirectory. > You can use --clean instead if you want automatic cleanup of intermediate > files. > > That's all for one-time setup. There is no problem with bibtex/makeindex > security because all the output files end up in a subdirectory and (I guess) > texi2dvi uses relative pathnames. > > Here's an org file with an index and a bibliography that is properly exported > to PDF with the above setup: > > --8<---------------cut here---------------start------------->8--- > #+LATEX_HEADER: \usepackage{makeidx} > #+LATEX_HEADER: \makeindex > > #+LaTeX: \bibliographystyle{plain} > > * this > > #+LaTeX: \index{foo} > is a test of foo \cite{Torvalds:1999:LE} > > #+LaTeX: \bibliography{linux} > #+LaTeX: \printindex > --8<---------------cut here---------------end--------------->8--- > > Nick > > Footnotes: > > [fn:1] My egrep does not choke on the suspect [A-z] pattern that > texi2dvi uses, so I don't need Karl Berry's patch - if your egrep does > choke, the patch just changes the pattern to [A-Za-z] which although not > exactly the same, since it omits a few punctuation chars that come > between Z and a in ASCII[fn:2], is good enough. > > [fn:2] The pattern tries to recognize legal drive names on DOS/Windoze, > and these characters are *legal drive names*!! We have Novell to thank > for that though, not M$. OTOH, if you are on Windoze and have a drive > named `[', watch out ;-) Aloha all, I've found it convenient to add paths to system-wide bibliographic databases to BIBINPUTS in .profile, as Nick suggests, and then use a sh source code block for project-specific databases, like this for a project in /org/tsdye/: #+source: bibinputs #+begin_src sh BIBINPUTS=/org/tsdye/:$BIBINPUTS export BIBINPUTS #+end_src If I remember to execute this before I start editing, then I can add references to my work from either the system-wide or project-specific databases and LaTeX export produces an error-free pdf file full of references. Tom -- Tom Dye T. S. Dye & Colleagues, Archaeologists, Inc. Honolulu, Hawai`i