¿Cómo agregar 'marca de tiempo' y 'propietario' a 'bibtex-clean-entry'?

Pregunta:

Soy un usuario reciente y feliz del modo BibTeX ( bibtex.el ), pero hay una cosa que no puedo hacer para trabajar como deseo. Cuando creo una plantilla, puedo hacer cumplir la inserción de la marca de tiempo y el propietario con:

(defun current-date ()
    (format-time-string "%Y.%m.%d"))    
(setq
    bibtex-user-optional-fields '(
                                 ("timestamp" "Time the entry was created" current-date)
                                 ("owner" "Owner of the entry" user-login-name)
)

¿Es posible tener el mismo comportamiento con bibtex-clean-entry ( Cc Cc ), que agregaría automáticamente la marca de tiempo y el propietario si aún no están configurados?


La razón detrás de eso es que estoy usando biblio.el para la descarga automática de referencias (por ejemplo, a través de DOI), y lo configuré para que ejecute bibtex-clean-entry inmediato con:

(setq biblio-cleanup-bibtex-function #'bibtex-clean-entry)

Ser capaz de tener el comportamiento descrito anteriormente para esta función en realidad me ahorraría mucho tiempo … y me aseguraría de no olvidarme de agregar ambos campos.

Respuesta:

Esto es algo que yo también quería. Lo implementé para la marca de tiempo de la siguiente manera:

Primero, necesitamos una función para agregar la marca de tiempo si aún no existe. En mi sistema, llamo a la marca de tiempo date_added , simplemente date_added por la timestamp de timestamp de su sistema:

(defun bibty-add-date ()
  "Adds a date_added field to a bibtex entry.
Checks to make sure it doesn't exist first."
  (interactive)
  (save-excursion
    (bibtex-beginning-of-entry)
    (if (assoc "date_added" (bibtex-parse-entry))
        (message "date_added already exists!")
      (bibtex-end-of-entry) ;; if you want date_added always at the end
      (bibtex-make-field '("date_added" nil current-date) t nil))))
      ;; NB: current-date is @MathieuBasille's custom function from the question

Hice esta función interactiva, ya que a menudo quiero agregar manualmente date_added, por lo que es conveniente vincularlo a Cc d .

Para que esta función se ejecute siempre que ejecute bibtex-clean-entry , agréguela al gancho:

(add-hook 'bibtex-clean-entry-hook 'bibty-add-date)

Puede utilizar el mismo enfoque para su campo owner .

Mantengo el paquete bibtex-utils ; Debería, eventualmente, armar un enfoque más genérico para lograr esto para campos arbitrarios y agregarlo al paquete. Mientras tanto, es de esperar que esto funcione lo suficientemente bien.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım