Browse Source

More options in use of headlines as substitute for title field

* lisp/org-bibtex.el (org-bibtex-treat-headline-as-title): New
  (org-bibtex-headline): Only use headline text (not TODO or other
  metadata) to generate title field and auto key.
  (org-bibtex-fleshout): Allow user to choose whether to treat
  headline as title.
Matt Lundin 10 years ago
1 changed files with 12 additions and 2 deletions
  1. 12 2

+ 12 - 2

@@ -223,6 +223,14 @@ For example setting to 'BIB_' would allow interoperability with fireforg."
   :group 'org-bibtex
   :type  'string)
+(defcustom org-bibtex-treat-headline-as-title t
+  "Treat headline text as title if title property is absent.
+If an entry is missing a title property, use the headline text as
+the property. If this value is t, `org-bibtex-check` will ignore
+a missing title field."
+  :group 'org-bibtex
+  :type 'boolean)
 (defcustom org-bibtex-export-arbitrary-fields nil
   "When converting to bibtex allow fields not defined in `org-bibtex-fields'.
 This only has effect if org-bibtex-prefix is defined, so as to
@@ -324,7 +332,7 @@ This variable is relevant only if `org-bibtex-export-tags-as-keywords` is t."
 			    (lambda (field)
 			      (let ((value (or (org-bibtex-get (from field))
 					       (and (equal :title field)
-						    (org-get-heading)))))
+						    (nth 4 (org-heading-components))))))
 				(when value (cons (from field) value))))
 			     (val :required (val (to type) org-bibtex-types))
@@ -379,7 +387,9 @@ With optional argument OPTIONAL, also prompt for optional fields."
 	 (keyword (name) (intern (concat ":" (downcase name))))
          (name (keyword) (upcase (substring (symbol-name keyword) 1))))
     (dolist (field (append
-		    (remove :title (val :required (val type org-bibtex-types)))
+		    (if org-bibtex-treat-headline-as-title
+			(remove :title (val :required (val type org-bibtex-types)))
+		      (val :required (val type org-bibtex-types)))
 		    (when optional (val :optional (val type org-bibtex-types)))))
       (when (consp field) ; or'd pair of fields e.g., (:editor :author)
         (let ((present (first (remove nil