Thanks, John.
org-ref looks quite handy, although I would like to try and get basic functionality working without adding another package. Does it implement cross-references independently of reftex? Perhaps I need to abandon reftex, but this seems like it should be a trivial problem.
Commenting out the org-ref block, this setup seems to work in that I am able to insert citations with "M-x reftex-citation" after exporting to LaTeX. This suggests that (reftex-parse-all) is somewhat to blame. However, attempting to insert an equation reference with "M-x reftex-reference" still fails after exporting and works before the first export. I suspect TeX-master is indeed involved, as the backtrace suggests.
Returning to my original setup and commenting out the (reftex-parse-all) gives a similar result to your block; working citations, but cross-references that break after LaTeX export. One of the most baffling aspects is that killing and re-opening the buffer and re-starting Reftex does not eliminate the problem; I have to actually quit and re-open emacs.
Regards,
Adam
If it is helpful, here is my setup in org-ref:
(require 'reftex)
(defun org-mode-reftex-setup ()
"Setup `org-mode' and reftex for org-ref."
(and (buffer-file-name)
(file-exists-p (buffer-file-name))
(global-auto-revert-mode t))
(make-local-variable 'reftex-cite-format)
(setq reftex-cite-format 'org))
;; define key for inserting citations
(define-key org-mode-map
(kbd org-ref-insert-cite-key)
org-ref-insert-cite-function)
(add-hook 'org-mode-hook 'org-mode-reftex-setup)
(eval-after-load 'reftex-vars
'(progn
(add-to-list 'reftex-cite-format-builtin
'(org "Org-mode citation"
((?\C-m . "cite:%l") ; default
(?d . ",%l") ; for appending
(?a . "autocite:%l")
(?t . "citet:%l")
(?T . "citet*:%l")
(?p . "citep:%l")
(?P . "citep*:%l")
(?h . "citeauthor:%l")
(?H . "citeauthor*:%l")
(?y . "citeyear:%l")
(?x . "citetext:%l")
(?n . "nocite:%l")
)))))
I think you might be seeing something like a TeX-master problem. Did you try
this without revtex-parse-all?
Adam Jackson writes:
Hi,
I've been struggling with Reftex in org-mode. Initially things are fine,
then after exporting the document to LaTeX and continuing to work with
org-mode, using most of the reftex features (e.g. reftex-toc or trying to
insert a reference) produces a "Wrong type argument: stringp, nil" error
message.
The code in my init file to set up reftex:
;; Reftex
(require 'reftex)
(defun org-mode-reftex-setup ()
(load-library "reftex")
(and (buffer-file-name) (file-exists-p (buffer-file-name))
;enable auto-revert-mode to update reftex when bibtex file changes on disk
(global-auto-revert-mode t)
(reftex-parse-all)
(define-key org-mode-map (kbd "C-c [") 'reftex-citation)
;add a custom reftex cite format to insert links
;; (reftex-set-cite-format "** [[papers:%l][%l]]: %t \n")
)
)
(add-hook 'org-mode-hook 'org-mode-reftex-setup)
At the moment I still enter reftex-mode on demand with "M-x reftex-mode".
Here is the backtrace for the error:
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
re-search-forward(nil 10001 t)
tex-main-file()
reftex-TeX-master-file()
reftex-insert-docstruct(#<buffer paper.org> t "e" nil nil t nil nil ("SEC:lagrange_gibbs_proof" "s" "We define the molar Gibbs free energy in a molecular gas mixture as \\begin{align} \\h" "/my/path/to/the/paper.org" nil) "" nil)
byte-code("\306 \307\216\310 \210 \311 \f\203
--
Professor John Kitchin
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803
@johnkitchin
http://kitchingroup.cheme.cmu.edu