X-Git-Url: https://git.donarmstrong.com/?p=org-ref.git;a=blobdiff_plain;f=org-ref.el;h=6905efe9cad4855405032ff614f5ebd1553bafa8;hp=8be10ef67a1170df7fbfe103fef37857f24703a9;hb=035dfe3e9315b761322a38f9f7db243209c7c25c;hpb=98af8209494ff34ae87a4a529d621f1e86ada923 diff --git a/org-ref.el b/org-ref.el index 8be10ef..6905efe 100644 --- a/org-ref.el +++ b/org-ref.el @@ -89,6 +89,12 @@ You should use full-paths for each file." :type 'string :group 'org-ref) +(defcustom org-ref-note-title-format + "** TODO %y - %t" + "String to format the title of a note. See the `org-ref-reftex-format-citation' docstring for the escape codes." + :type 'string + :group 'org-ref) + (defcustom org-ref-open-notes-function (lambda () (org-show-entry) @@ -442,10 +448,14 @@ environment, only %l is available." (if reftex-comment-citations reftex-cite-comment-format ""))) - ((= l ?a) (reftex-format-names - (reftex-get-bib-names "author" entry) - (or n 2))) - ((= l ?A) (car (reftex-get-bib-names "author" entry))) + ((= l ?a) (replace-regexp-in-string + "\n\\|\t\\|\s+" " " + (reftex-format-names + (reftex-get-bib-names "author" entry) + (or n 2)))) + ((= l ?A) (replace-regexp-in-string + "\n\\|\t\\|\s+" " " + (car (reftex-get-bib-names "author" entry)))) ((= l ?b) (org-ref-reftex-get-bib-field "booktitle" entry "in: %s")) ((= l ?B) (reftex-abbreviate-title (org-ref-reftex-get-bib-field "booktitle" entry "in: %s"))) @@ -458,8 +468,11 @@ environment, only %l is available." ((= l ?E) (car (reftex-get-bib-names "editor" entry))) ((= l ?h) (org-ref-reftex-get-bib-field "howpublished" entry)) ((= l ?i) (org-ref-reftex-get-bib-field "institution" entry)) - ((= l ?j) (org-ref-reftex-get-bib-field "journal" entry)) - ((= l ?k) (org-ref-reftex-get-bib-field "key" entry)) + ((= l ?j) (let ((jt (reftex-get-bib-field "journal" entry))) + (if (string= "" jt) + (reftex-get-bib-field "journaltitle" entry) + jt))) + ((= l ?k) (org-ref-reftex-get-bib-field "=key=" entry)) ((= l ?m) (org-ref-reftex-get-bib-field "month" entry)) ((= l ?n) (org-ref-reftex-get-bib-field "number" entry)) ((= l ?o) (org-ref-reftex-get-bib-field "organization" entry)) @@ -473,9 +486,13 @@ environment, only %l is available." ((= l ?U) (org-ref-reftex-get-bib-field "url" entry)) ((= l ?r) (org-ref-reftex-get-bib-field "address" entry)) ;; strip enclosing brackets from title if they are there - ((= l ?t) (org-ref-reftex-get-bib-field "title" entry)) - ((= l ?T) (reftex-abbreviate-title + ((= l ?t) (replace-regexp-in-string + "\n\\|\t\\|\s+" " " (org-ref-reftex-get-bib-field "title" entry))) + ((= l ?T) (reftex-abbreviate-title + ((replace-regexp-in-string + "\n\\|\t\\|\s+" " " + (org-ref-reftex-get-bib-field "title" entry))))) ((= l ?v) (org-ref-reftex-get-bib-field "volume" entry)) ((= l ?y) (org-ref-reftex-get-bib-field "year" entry))))) @@ -487,8 +504,6 @@ environment, only %l is available." (setq format (replace-match "%" t t format))) (while (string-match "[ ,.;:]*%<" format) (setq format (replace-match "" t t format))) - ;; also replace carriage returns, tabs, and multiple whitespaces - (setq format (replace-regexp-in-string "\n\\|\t\\|\s+" " " format)) format) (defun org-ref-get-bibtex-entry-citation (key) @@ -974,7 +989,7 @@ ARG does nothing." (org-ref-count-labels label)))) (lambda (keyword desc format) (cond - ((eq format 'html) (format "()" keyword)) + ((eq format 'html) (format "
" keyword)) ((eq format 'latex) (format "\\label{%s}" keyword))))) @@ -2102,7 +2117,7 @@ arg (ALTERNATIVE-CITE) to get a menu of citation types." (defun org-ref-bib-citation () "From a bibtex entry, create and return a simple citation string. This assumes you are in an article." - + (bibtex-set-dialect nil t) (bibtex-beginning-of-entry) (let* ((cb (current-buffer)) (bibtex-expand-strings t) @@ -2112,7 +2127,10 @@ This assumes you are in an article." (year (reftex-get-bib-field "year" entry)) (author (replace-regexp-in-string "\n\\|\t\\|\s+" " " (reftex-get-bib-field "author" entry))) (key (reftex-get-bib-field "=key=" entry)) - (journal (reftex-get-bib-field "journal" entry)) + (journal (let ((jt (reftex-get-bib-field "journal" entry))) + (if (string= "" jt) + (reftex-get-bib-field "journaltitle" entry) + jt))) (volume (reftex-get-bib-field "volume" entry)) (pages (reftex-get-bib-field "pages" entry)) (doi (reftex-get-bib-field "doi" entry)) @@ -2180,16 +2198,7 @@ construct the heading by hand." (bibtex-expand-strings t) (entry (cl-loop for (key . value) in (bibtex-parse-entry t) collect (cons (downcase key) value))) - (title (replace-regexp-in-string "\n\\|\t\\|\s+" " " (reftex-get-bib-field "title" entry))) - (year (reftex-get-bib-field "year" entry)) - (author (replace-regexp-in-string "\n\\|\t\\|\s+" " " (reftex-get-bib-field "author" entry))) - (key (reftex-get-bib-field "=key=" entry)) - (journal (reftex-get-bib-field "journal" entry)) - (volume (reftex-get-bib-field "volume" entry)) - (pages (reftex-get-bib-field "pages" entry)) - (doi (reftex-get-bib-field "doi" entry)) - (url (reftex-get-bib-field "url" entry)) - ) + (key (reftex-get-bib-field "=key=" entry))) ;; save key to clipboard to make saving pdf later easier by pasting. (with-temp-buffer @@ -2206,38 +2215,41 @@ construct the heading by hand." (if (re-search-forward (format ":Custom_ID: %s$" key) nil 'end) (funcall org-ref-open-notes-function) ;; no entry found, so add one - (insert (format "\n** TODO %s - %s" year title)) - (insert (format" + (insert (org-ref-reftex-format-citation entry (concat "\n" org-ref-note-title-format))) + (insert (org-ref-reftex-format-citation + entry + (concat " :PROPERTIES: - :Custom_ID: %s - :AUTHOR: %s - :JOURNAL: %s - :YEAR: %s - :VOLUME: %s - :PAGES: %s - :DOI: %s - :URL: %s + :Custom_ID: %k + :AUTHOR: %9a + :JOURNAL: %j + :YEAR: %y + :VOLUME: %v + :PAGES: %p + :DOI: %D + :URL: %U :END: -[[cite:%s]] [[file:%s/%s.pdf][pdf]]\n\n" -key author journal year volume pages doi url key org-ref-pdf-directory key)) -(save-buffer)))) +" + (format "[[cite:%s]] [[file:%s/%s.pdf][pdf]]\n\n" + key org-ref-pdf-directory key)))) + (save-buffer)))) (defun org-ref-open-notes-from-reftex () "Call reftex, and open notes for selected entry." (interactive) (let ((bibtex-key ))) - ;; now look for entry in the notes file - (if org-ref-bibliography-notes - (find-file-other-window org-ref-bibliography-notes) - (error "Org-ref-bib-bibliography-notes is not set to anything")) + ;; now look for entry in the notes file + (if org-ref-bibliography-notes + (find-file-other-window org-ref-bibliography-notes) + (error "Org-ref-bib-bibliography-notes is not set to anything")) - (goto-char (point-min)) + (goto-char (point-min)) - (re-search-forward (format - ":Custom_ID: %s$" - (cl-first (reftex-citation t)) nil 'end)) - (funcall org-ref-open-notes-function)) + (re-search-forward (format + ":Custom_ID: %s$" + (cl-first (reftex-citation t)) nil 'end)) + (funcall org-ref-open-notes-function)) ;; ** Open bibtex entry in browser (defun org-ref-open-in-browser ()