unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#56475: 28.1.50; bibtex-parse-entry disregards @string substitutions
@ 2022-07-10  7:14 Ihor Radchenko
  2022-07-11 10:16 ` Lars Ingebrigtsen
  0 siblings, 1 reply; 12+ messages in thread
From: Ihor Radchenko @ 2022-07-10  7:14 UTC (permalink / raw)
  To: 56475

Consider the following bibliography:

@string{jgr="J. Geophys. Res."}
@article{chouet88,
journal=jgr,
author={Chouet, B.},
title={Resonance of a fluid-driven crack: [...]},
year={1988},
volume={93},
number={B5},
pages={4375-4400}}

With point at bol in "@article", running M-: (bibtex-parse-entry)
yields:

(("=type=" . "article") ("=key=" . "chouet88") ("journal" . "jgr")
("author" . "{Chouet, B.}") ("title" . "{Resonance of a fluid-driven
crack: [...]}") ("year" . "{1988}") ("volume" . "{93}") ("number" .
"{B5}") ("pages" . "{4375-4400}"))

Note the journal field value: ("journal" . "jgr")

Expected: ("journal" . "J. Geophys. Res.")

This bug report is originated from Org ML:
https://list.orgmode.org/orgmode/25288.4658.491916.790389@gargle.gargle.HOWL/

Org currently relies on built-in bibtex.el to parse bibliography files.
However, the built-in parser does not appear to be complete.

Best,
Ihor

In GNU Emacs 28.1.50 (build 1, x86_64-pc-linux-gnu, cairo version 1.16.0)
 of 2022-05-26 built on localhost
Repository revision: a9f17ccce336ad5d384a6271f205a84141980019
Repository branch: emacs-28
Windowing system distributor 'The X.Org Foundation', version 11.0.12101003
System Description: Gentoo Linux

Configured using:
 'configure --prefix=/usr --build=x86_64-pc-linux-gnu
 --host=x86_64-pc-linux-gnu --mandir=/usr/share/man
 --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc
 --localstatedir=/var/lib --datarootdir=/usr/share
 --disable-silent-rules --docdir=/usr/share/doc/emacs-28.1.9999
 --htmldir=/usr/share/doc/emacs-28.1.9999/html --libdir=/usr/lib64
 --program-suffix=-emacs-28-vcs --includedir=/usr/include/emacs-28-vcs
 --infodir=/usr/share/info/emacs-28-vcs --localstatedir=/var
 --enable-locallisppath=/etc/emacs:/usr/share/emacs/site-lisp
 --without-compress-install --without-hesiod --without-pop
 --with-file-notification=inotify --with-pdumper --enable-acl
 --with-dbus --with-modules --without-gameuser --with-libgmp
 --without-gpm --with-native-compilation --with-json --without-kerberos
 --without-kerberos5 --without-lcms2 --with-xml2 --without-mailutils
 --with-selinux --with-gnutls --without-libsystemd --with-threads
 --with-wide-int --with-zlib --with-sound=oss --with-x --without-ns
 --without-gconf --without-gsettings --without-toolkit-scroll-bars
 --with-gif --with-jpeg --with-png --with-rsvg --with-tiff --with-xpm
 --with-imagemagick --with-xft --with-cairo --with-harfbuzz
 --without-libotf --without-m17n-flt --with-x-toolkit=no
 --with-dumping=pdumper 'CFLAGS=-march=native -O3 -pipe'
 'LDFLAGS=-Wl,-O1 -Wl,--as-needed''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS HARFBUZZ IMAGEMAGICK JPEG
JSON LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY OLDXMENU
PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF X11 XDBE XIM XPM ZLIB

Important settings:
  value of $LC_COLLATE: C
  value of $LANG: en_US.utf8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  TeX-PDF-mode: t
  pyvenv-mode: t
  git-email-notmuch-mode: t
  git-email-piem-mode: t
  piem-notmuch-mode: t
  org-edna-mode: t
  eros-mode: t
  pdf-occur-global-minor-mode: t
  which-key-mode: t
  diredfl-global-mode: t
  dired-async-mode: t
  winner-mode: t
  eval-sexp-fu-flash-mode: t
  global-flycheck-mode: t
  flycheck-mode: t
  el-patch-use-package-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  recentf-mode: t
  hl-todo-mode: t
  pretty-symbols-mode: t
  company-mode: t
  persistent-scratch-autosave-mode: t
  savehist-mode: t
  helm-adaptive-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  helm-ff-icon-mode: t
  shell-dirtrack-mode: t
  async-bytecomp-package-mode: t
  boon-mode: t
  boon-local-mode: t
  global-hl-line-mode: t
  global-page-break-lines-mode: t
  page-break-lines-mode: t
  shackle-mode: t
  override-global-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  global-prettify-symbols-mode: t
  prettify-symbols-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  window-divider-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  abbrev-mode: t

Load-path shadows:
/usr/share/emacs/site-lisp/cmake-mode hides /usr/share/emacs/site-lisp/cmake/cmake-mode
/home/yantar92/.emacs.d/straight/build/dash/dash hides /usr/share/emacs/site-lisp/dash/dash
/usr/share/emacs/site-lisp/desktop-entry-mode hides /usr/share/emacs/site-lisp/desktop-file-utils/desktop-entry-mode
/home/yantar92/.emacs.d/straight/build/f/f hides /usr/share/emacs/site-lisp/f/f
/home/yantar92/.emacs.d/straight/build/s/s hides /usr/share/emacs/site-lisp/s/s
/home/yantar92/.emacs.d/straight/build/with-editor/with-editor hides /usr/share/emacs/site-lisp/with-editor/with-editor
/home/yantar92/.emacs.d/straight/build/transient/transient hides /usr/share/emacs/28.1.50/lisp/transient
/home/yantar92/.emacs.d/straight/build/project/project hides /usr/share/emacs/28.1.50/lisp/progmodes/project
/home/yantar92/.emacs.d/straight/build/xref/xref hides /usr/share/emacs/28.1.50/lisp/progmodes/xref
/home/yantar92/.emacs.d/straight/build/org/ob-C hides /usr/share/emacs/28.1.50/lisp/org/ob-C
/home/yantar92/.emacs.d/straight/build/org/ob-R hides /usr/share/emacs/28.1.50/lisp/org/ob-R
/home/yantar92/.emacs.d/straight/build/org/ob-awk hides /usr/share/emacs/28.1.50/lisp/org/ob-awk
/home/yantar92/.emacs.d/straight/build/org/ob-calc hides /usr/share/emacs/28.1.50/lisp/org/ob-calc
/home/yantar92/.emacs.d/straight/build/org/ob-clojure hides /usr/share/emacs/28.1.50/lisp/org/ob-clojure
/home/yantar92/.emacs.d/straight/build/org/ob-comint hides /usr/share/emacs/28.1.50/lisp/org/ob-comint
/home/yantar92/.emacs.d/straight/build/org/ob-core hides /usr/share/emacs/28.1.50/lisp/org/ob-core
/home/yantar92/.emacs.d/straight/build/org/ob-css hides /usr/share/emacs/28.1.50/lisp/org/ob-css
/home/yantar92/.emacs.d/straight/build/org/ob-ditaa hides /usr/share/emacs/28.1.50/lisp/org/ob-ditaa
/home/yantar92/.emacs.d/straight/build/org/ob-dot hides /usr/share/emacs/28.1.50/lisp/org/ob-dot
/home/yantar92/.emacs.d/straight/build/org/ob-emacs-lisp hides /usr/share/emacs/28.1.50/lisp/org/ob-emacs-lisp
/home/yantar92/.emacs.d/straight/build/org/ob-eshell hides /usr/share/emacs/28.1.50/lisp/org/ob-eshell
/home/yantar92/.emacs.d/straight/build/org/ob-eval hides /usr/share/emacs/28.1.50/lisp/org/ob-eval
/home/yantar92/.emacs.d/straight/build/org/ob-exp hides /usr/share/emacs/28.1.50/lisp/org/ob-exp
/home/yantar92/.emacs.d/straight/build/org/ob-forth hides /usr/share/emacs/28.1.50/lisp/org/ob-forth
/home/yantar92/.emacs.d/straight/build/org/ob-fortran hides /usr/share/emacs/28.1.50/lisp/org/ob-fortran
/home/yantar92/.emacs.d/straight/build/org/ob-gnuplot hides /usr/share/emacs/28.1.50/lisp/org/ob-gnuplot
/home/yantar92/.emacs.d/straight/build/org/ob-groovy hides /usr/share/emacs/28.1.50/lisp/org/ob-groovy
/home/yantar92/.emacs.d/straight/build/org/ob-haskell hides /usr/share/emacs/28.1.50/lisp/org/ob-haskell
/home/yantar92/.emacs.d/straight/build/org/ob-java hides /usr/share/emacs/28.1.50/lisp/org/ob-java
/home/yantar92/.emacs.d/straight/build/org/ob-js hides /usr/share/emacs/28.1.50/lisp/org/ob-js
/home/yantar92/.emacs.d/straight/build/org/ob-julia hides /usr/share/emacs/28.1.50/lisp/org/ob-julia
/home/yantar92/.emacs.d/straight/build/org/ob-latex hides /usr/share/emacs/28.1.50/lisp/org/ob-latex
/home/yantar92/.emacs.d/straight/build/org/ob-lilypond hides /usr/share/emacs/28.1.50/lisp/org/ob-lilypond
/home/yantar92/.emacs.d/straight/build/org/ob-lisp hides /usr/share/emacs/28.1.50/lisp/org/ob-lisp
/home/yantar92/.emacs.d/straight/build/org/ob-lob hides /usr/share/emacs/28.1.50/lisp/org/ob-lob
/home/yantar92/.emacs.d/straight/build/org/ob-lua hides /usr/share/emacs/28.1.50/lisp/org/ob-lua
/home/yantar92/.emacs.d/straight/build/org/ob-makefile hides /usr/share/emacs/28.1.50/lisp/org/ob-makefile
/home/yantar92/.emacs.d/straight/build/org/ob-matlab hides /usr/share/emacs/28.1.50/lisp/org/ob-matlab
/home/yantar92/.emacs.d/straight/build/org/ob-maxima hides /usr/share/emacs/28.1.50/lisp/org/ob-maxima
/home/yantar92/.emacs.d/straight/build/org/ob-ocaml hides /usr/share/emacs/28.1.50/lisp/org/ob-ocaml
/home/yantar92/.emacs.d/straight/build/org/ob-octave hides /usr/share/emacs/28.1.50/lisp/org/ob-octave
/home/yantar92/.emacs.d/straight/build/org/ob-org hides /usr/share/emacs/28.1.50/lisp/org/ob-org
/home/yantar92/.emacs.d/straight/build/org/ob-perl hides /usr/share/emacs/28.1.50/lisp/org/ob-perl
/home/yantar92/.emacs.d/straight/build/org/ob-plantuml hides /usr/share/emacs/28.1.50/lisp/org/ob-plantuml
/home/yantar92/.emacs.d/straight/build/org/ob-processing hides /usr/share/emacs/28.1.50/lisp/org/ob-processing
/home/yantar92/.emacs.d/straight/build/org/ob-python hides /usr/share/emacs/28.1.50/lisp/org/ob-python
/home/yantar92/.emacs.d/straight/build/org/ob-ref hides /usr/share/emacs/28.1.50/lisp/org/ob-ref
/home/yantar92/.emacs.d/straight/build/org/ob-ruby hides /usr/share/emacs/28.1.50/lisp/org/ob-ruby
/home/yantar92/.emacs.d/straight/build/org/ob-sass hides /usr/share/emacs/28.1.50/lisp/org/ob-sass
/home/yantar92/.emacs.d/straight/build/org/ob-scheme hides /usr/share/emacs/28.1.50/lisp/org/ob-scheme
/home/yantar92/.emacs.d/straight/build/org/ob-screen hides /usr/share/emacs/28.1.50/lisp/org/ob-screen
/home/yantar92/.emacs.d/straight/build/org/ob-sed hides /usr/share/emacs/28.1.50/lisp/org/ob-sed
/home/yantar92/.emacs.d/straight/build/org/ob-shell hides /usr/share/emacs/28.1.50/lisp/org/ob-shell
/home/yantar92/.emacs.d/straight/build/org/ob-sql hides /usr/share/emacs/28.1.50/lisp/org/ob-sql
/home/yantar92/.emacs.d/straight/build/org/ob-sqlite hides /usr/share/emacs/28.1.50/lisp/org/ob-sqlite
/home/yantar92/.emacs.d/straight/build/org/ob-table hides /usr/share/emacs/28.1.50/lisp/org/ob-table
/home/yantar92/.emacs.d/straight/build/org/ob-tangle hides /usr/share/emacs/28.1.50/lisp/org/ob-tangle
/home/yantar92/.emacs.d/straight/build/org/ob hides /usr/share/emacs/28.1.50/lisp/org/ob
/home/yantar92/.emacs.d/straight/build/org/oc-basic hides /usr/share/emacs/28.1.50/lisp/org/oc-basic
/home/yantar92/.emacs.d/straight/build/org/oc-biblatex hides /usr/share/emacs/28.1.50/lisp/org/oc-biblatex
/home/yantar92/.emacs.d/straight/build/org/oc-csl hides /usr/share/emacs/28.1.50/lisp/org/oc-csl
/home/yantar92/.emacs.d/straight/build/org/oc-natbib hides /usr/share/emacs/28.1.50/lisp/org/oc-natbib
/home/yantar92/.emacs.d/straight/build/org/oc hides /usr/share/emacs/28.1.50/lisp/org/oc
/home/yantar92/.emacs.d/straight/build/org/ol-bbdb hides /usr/share/emacs/28.1.50/lisp/org/ol-bbdb
/home/yantar92/.emacs.d/straight/build/org/ol-bibtex hides /usr/share/emacs/28.1.50/lisp/org/ol-bibtex
/home/yantar92/.emacs.d/straight/build/org/ol-docview hides /usr/share/emacs/28.1.50/lisp/org/ol-docview
/home/yantar92/.emacs.d/straight/build/org/ol-doi hides /usr/share/emacs/28.1.50/lisp/org/ol-doi
/home/yantar92/.emacs.d/straight/build/org/ol-eshell hides /usr/share/emacs/28.1.50/lisp/org/ol-eshell
/home/yantar92/.emacs.d/straight/build/org/ol-eww hides /usr/share/emacs/28.1.50/lisp/org/ol-eww
/home/yantar92/.emacs.d/straight/build/org/ol-gnus hides /usr/share/emacs/28.1.50/lisp/org/ol-gnus
/home/yantar92/.emacs.d/straight/build/org/ol-info hides /usr/share/emacs/28.1.50/lisp/org/ol-info
/home/yantar92/.emacs.d/straight/build/org/ol-irc hides /usr/share/emacs/28.1.50/lisp/org/ol-irc
/home/yantar92/.emacs.d/straight/build/org/ol-man hides /usr/share/emacs/28.1.50/lisp/org/ol-man
/home/yantar92/.emacs.d/straight/build/org/ol-mhe hides /usr/share/emacs/28.1.50/lisp/org/ol-mhe
/home/yantar92/.emacs.d/straight/build/org/ol-rmail hides /usr/share/emacs/28.1.50/lisp/org/ol-rmail
/home/yantar92/.emacs.d/straight/build/org/ol-w3m hides /usr/share/emacs/28.1.50/lisp/org/ol-w3m
/home/yantar92/.emacs.d/straight/build/org/ol hides /usr/share/emacs/28.1.50/lisp/org/ol
/home/yantar92/.emacs.d/straight/build/org/org-agenda hides /usr/share/emacs/28.1.50/lisp/org/org-agenda
/home/yantar92/.emacs.d/straight/build/org/org-archive hides /usr/share/emacs/28.1.50/lisp/org/org-archive
/home/yantar92/.emacs.d/straight/build/org/org-attach-git hides /usr/share/emacs/28.1.50/lisp/org/org-attach-git
/home/yantar92/.emacs.d/straight/build/org/org-attach hides /usr/share/emacs/28.1.50/lisp/org/org-attach
/home/yantar92/.emacs.d/straight/build/org/org-capture hides /usr/share/emacs/28.1.50/lisp/org/org-capture
/home/yantar92/.emacs.d/straight/build/org/org-clock hides /usr/share/emacs/28.1.50/lisp/org/org-clock
/home/yantar92/.emacs.d/straight/build/org/org-colview hides /usr/share/emacs/28.1.50/lisp/org/org-colview
/home/yantar92/.emacs.d/straight/build/org/org-compat hides /usr/share/emacs/28.1.50/lisp/org/org-compat
/home/yantar92/.emacs.d/straight/build/org/org-crypt hides /usr/share/emacs/28.1.50/lisp/org/org-crypt
/home/yantar92/.emacs.d/straight/build/org/org-ctags hides /usr/share/emacs/28.1.50/lisp/org/org-ctags
/home/yantar92/.emacs.d/straight/build/org/org-datetree hides /usr/share/emacs/28.1.50/lisp/org/org-datetree
/home/yantar92/.emacs.d/straight/build/org/org-duration hides /usr/share/emacs/28.1.50/lisp/org/org-duration
/home/yantar92/.emacs.d/straight/build/org/org-element hides /usr/share/emacs/28.1.50/lisp/org/org-element
/home/yantar92/.emacs.d/straight/build/org/org-entities hides /usr/share/emacs/28.1.50/lisp/org/org-entities
/home/yantar92/.emacs.d/straight/build/org/org-faces hides /usr/share/emacs/28.1.50/lisp/org/org-faces
/home/yantar92/.emacs.d/straight/build/org/org-feed hides /usr/share/emacs/28.1.50/lisp/org/org-feed
/home/yantar92/.emacs.d/straight/build/org/org-footnote hides /usr/share/emacs/28.1.50/lisp/org/org-footnote
/home/yantar92/.emacs.d/straight/build/org/org-goto hides /usr/share/emacs/28.1.50/lisp/org/org-goto
/home/yantar92/.emacs.d/straight/build/org/org-habit hides /usr/share/emacs/28.1.50/lisp/org/org-habit
/home/yantar92/.emacs.d/straight/build/org/org-id hides /usr/share/emacs/28.1.50/lisp/org/org-id
/home/yantar92/.emacs.d/straight/build/org/org-indent hides /usr/share/emacs/28.1.50/lisp/org/org-indent
/home/yantar92/.emacs.d/straight/build/org/org-inlinetask hides /usr/share/emacs/28.1.50/lisp/org/org-inlinetask
/home/yantar92/.emacs.d/straight/build/org/org-keys hides /usr/share/emacs/28.1.50/lisp/org/org-keys
/home/yantar92/.emacs.d/straight/build/org/org-lint hides /usr/share/emacs/28.1.50/lisp/org/org-lint
/home/yantar92/.emacs.d/straight/build/org/org-list hides /usr/share/emacs/28.1.50/lisp/org/org-list
/home/yantar92/.emacs.d/straight/build/org/org-macro hides /usr/share/emacs/28.1.50/lisp/org/org-macro
/home/yantar92/.emacs.d/straight/build/org/org-macs hides /usr/share/emacs/28.1.50/lisp/org/org-macs
/home/yantar92/.emacs.d/straight/build/org/org-mobile hides /usr/share/emacs/28.1.50/lisp/org/org-mobile
/home/yantar92/.emacs.d/straight/build/org/org-mouse hides /usr/share/emacs/28.1.50/lisp/org/org-mouse
/home/yantar92/.emacs.d/straight/build/org/org-num hides /usr/share/emacs/28.1.50/lisp/org/org-num
/home/yantar92/.emacs.d/straight/build/org/org-pcomplete hides /usr/share/emacs/28.1.50/lisp/org/org-pcomplete
/home/yantar92/.emacs.d/straight/build/org/org-plot hides /usr/share/emacs/28.1.50/lisp/org/org-plot
/home/yantar92/.emacs.d/straight/build/org/org-protocol hides /usr/share/emacs/28.1.50/lisp/org/org-protocol
/home/yantar92/.emacs.d/straight/build/org/org-refile hides /usr/share/emacs/28.1.50/lisp/org/org-refile
/home/yantar92/.emacs.d/straight/build/org/org-src hides /usr/share/emacs/28.1.50/lisp/org/org-src
/home/yantar92/.emacs.d/straight/build/org/org-table hides /usr/share/emacs/28.1.50/lisp/org/org-table
/home/yantar92/.emacs.d/straight/build/org/org-tempo hides /usr/share/emacs/28.1.50/lisp/org/org-tempo
/home/yantar92/.emacs.d/straight/build/org/org-timer hides /usr/share/emacs/28.1.50/lisp/org/org-timer
/home/yantar92/.emacs.d/straight/build/org/org-version hides /usr/share/emacs/28.1.50/lisp/org/org-version
/home/yantar92/.emacs.d/straight/build/org/org hides /usr/share/emacs/28.1.50/lisp/org/org
/home/yantar92/.emacs.d/straight/build/org/ox-ascii hides /usr/share/emacs/28.1.50/lisp/org/ox-ascii
/home/yantar92/.emacs.d/straight/build/org/ox-beamer hides /usr/share/emacs/28.1.50/lisp/org/ox-beamer
/home/yantar92/.emacs.d/straight/build/org/ox-html hides /usr/share/emacs/28.1.50/lisp/org/ox-html
/home/yantar92/.emacs.d/straight/build/org/ox-icalendar hides /usr/share/emacs/28.1.50/lisp/org/ox-icalendar
/home/yantar92/.emacs.d/straight/build/org/ox-koma-letter hides /usr/share/emacs/28.1.50/lisp/org/ox-koma-letter
/home/yantar92/.emacs.d/straight/build/org/ox-latex hides /usr/share/emacs/28.1.50/lisp/org/ox-latex
/home/yantar92/.emacs.d/straight/build/org/ox-man hides /usr/share/emacs/28.1.50/lisp/org/ox-man
/home/yantar92/.emacs.d/straight/build/org/ox-md hides /usr/share/emacs/28.1.50/lisp/org/ox-md
/home/yantar92/.emacs.d/straight/build/org/ox-odt hides /usr/share/emacs/28.1.50/lisp/org/ox-odt
/home/yantar92/.emacs.d/straight/build/org/ox-org hides /usr/share/emacs/28.1.50/lisp/org/ox-org
/home/yantar92/.emacs.d/straight/build/org/ox-publish hides /usr/share/emacs/28.1.50/lisp/org/ox-publish
/home/yantar92/.emacs.d/straight/build/org/ox-texinfo hides /usr/share/emacs/28.1.50/lisp/org/ox-texinfo
/home/yantar92/.emacs.d/straight/build/org/ox hides /usr/share/emacs/28.1.50/lisp/org/ox
/home/yantar92/.emacs.d/straight/build/org/org-loaddefs hides /usr/share/emacs/28.1.50/lisp/org/org-loaddefs
/home/yantar92/.emacs.d/straight/build/let-alist/let-alist hides /usr/share/emacs/28.1.50/lisp/emacs-lisp/let-alist
/home/yantar92/.emacs.d/straight/build/map/map hides /usr/share/emacs/28.1.50/lisp/emacs-lisp/map

Features:
(shadow emacsbug cus-start helm-ring conf-mode tomelr-autoloads calccomp
calc-alg calc-lang calc-menu latexenc two-column ledger-mode
ledger-check ledger-texi ledger-test ledger-sort ledger-report
ledger-reconcile ledger-occur ledger-fonts ledger-fontify ledger-state
ledger-complete ledger-schedule ledger-init ledger-xact ledger-post
ledger-exec ledger-navigate ledger-context ledger-commodities
ledger-regex wdired gnuplot-context gnuplot helm-imenu sendmail vc-mtn
vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs macrostep-c cmacexp
eieio-opt speedbar ezimage dframe shortdoc sort footnote tabify
mm-archive w3m doc-view w3m-hist w3m-fb bookmark-w3m w3m-ems w3m-favicon
w3m-image tab-line w3m-proc w3m-util mule-util cal-move org-learn
elfeed-link boon-moves er-basic-expansions expand-region-core
expand-region-custom cl-print network-stream url-cache helm-command
helm-elisp helm-eval misearch multi-isearch pdf-sync pdf-outline
pdf-links pdf-history all-the-icons-dired dired-filter
dired-hide-dotfiles boon-main boon-hl boon-arguments multiple-cursors
mc-separate-operations rectangular-region-mode mc-mark-pop mc-edit-lines
mc-hide-unmatched-lines-mode mc-mark-more mc-cycle-cursors
multiple-cursors-core boon-regs boon-utils preview font-latex latex
latex-flymake tex-ispell tex-style tex tex-mode cal-iso vc org-duration
ffap org-table-sticky-header oc-basic highlight-indentation flymake-proc
flymake elpy elpy-rpc pyvenv eshell esh-cmd esh-ext esh-opt esh-proc
esh-io esh-arg esh-module esh-groups esh-util elpy-shell elpy-profile
elpy-django elpy-refactor grep scimax-jupyter ob-jupyter jupyter-tramp
tramp-cache jupyter-server jupyter-server-ioloop jupyter-ioloop-comm
jupyter-ioloop zmq zmq-core jupyter-rest-api jupyter-org-extensions
jupyter-org-client tramp-archive tramp-gvfs helm-x-files helm-for-files
helm-bookmark helm-external helm-net git-email-magit magit-patch
git-email-notmuch git-email-piem git-email git-email-autoloads
project-autoloads xref-autoloads piem-notmuch piem piem-maildir
mail-extr piem-autoloads autoload org-crypt helm-notmuch
helm-notmuch-autoloads ol-notmuch org-eldoc
org-table-sticky-header-autoloads posframe posframe-autoloads ob-async
ob-async-autoloads ob-latex ob-dot ob-calc calc-store calc-trail
ob-gnuplot ob-ditaa ob-C cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs ob-python ob-perl ob-org
ob-shell ob-mathematica org-tempo tempo org-archive ox-md ox-beamer
engrave-faces engrave-faces-autoloads ox-extra orgdiff orgdiff-autoloads
doct ya-org-capture ya-org-capture-autoloads doct-autoloads
org-capture-pop-frame org-capture-pop-frame-autoloads org-protocol
org-analyzer-autoloads pomidor-autoloads alert-autoloads log4e-autoloads
gntp-autoloads helm-org-ql helm-org org-clock org-autosort
org-autosort-autoloads helm-org-ql-autoloads helm-org-autoloads
org-ql-search org-ql-view ov org-super-agenda org-ql peg ts
org-ql-autoloads peg-autoloads ov-autoloads org-super-agenda-autoloads
org-quick-peek org-quick-peek-autoloads calfw-org calfw-org-autoloads
calfw holidays hol-loaddefs calfw-autoloads org-attach cdlatex texmathp
cdlatex-autoloads org-capture-ref org-ref-url-utils org-ref org-ref-core
org-ref-glossary org-ref-bibtex doi-utils org-ref-utils org-ref-export
citeproc citeproc-itemgetters citeproc-biblatex citeproc-bibtex
ol-bibtex citeproc-cite citeproc-subbibs citeproc-sort citeproc-name
citeproc-formatters citeproc-number rst citeproc-proc citeproc-disamb
citeproc-itemdata citeproc-generic-elements citeproc-macro
citeproc-choose citeproc-date citeproc-context citeproc-prange
citeproc-style citeproc-locale citeproc-term citeproc-rt citeproc-lib
citeproc-s queue ox-pandoc ox-org ox-odt rng-loc rng-uri rng-parse
rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok
nxml-util ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox
org-ref-misc-links org-ref-label-link org-ref-ref-links
org-ref-citation-links org-ref-bibliography-links bibtex-completion
biblio biblio-download biblio-dissemin biblio-ieee biblio-hal
biblio-dblp biblio-crossref biblio-arxiv timezone biblio-doi biblio-core
ido parsebib bibtex org-ref-autoloads ox-pandoc-autoloads
citeproc-autoloads string-inflection-autoloads queue-autoloads
bibtex-completion-autoloads biblio-autoloads biblio-core-autoloads
parsebib-autoloads htmlize-autoloads scimax-inkscape
scimax-inkscape-autoloads org-pdftools pdf-annot facemenu org-noter
org-pdftools-autoloads org-noter-autoloads org-capture org-checklist
org-habit org-edna org-edna-autoloads org-inlinetask org-drill persist
org-agenda org-drill-autoloads persist-autoloads ol-info ol-w3m ol-doi
org-link-doi speed-type speed-type-autoloads ement ement-notify
ement-room ewoc ement-lib ement-api ement-structs ement-macros dns
ement-autoloads ts-autoloads svg-lib-autoloads
taxy-magit-section-autoloads taxy-autoloads map-autoloads plz
plz-autoloads 0x0 0x0-autoloads notmuch-calendar-x
notmuch-calendar-x-autoloads notmuch notmuch-tree notmuch-jump
notmuch-hello notmuch-show notmuch-print notmuch-crypto notmuch-mua
notmuch-message notmuch-draft notmuch-maildir-fcc notmuch-address
notmuch-company notmuch-parser notmuch-wash coolj notmuch-query
goto-addr icalendar diary-lib diary-loaddefs notmuch-tag notmuch-lib
notmuch-version notmuch-compat mm-view mml-smime smime dig w3m-autoloads
elfeed-score elfeed-score-maint elfeed-score-scoring elfeed-score-serde
elfeed-score-rule-stats elfeed-org org-element org-persist
elfeed-org-autoloads quick-peek quick-peek-autoloads elfeed-show
elfeed-search hideshow display-fill-column-indicator eros
rainbow-delimiters highlight-numbers parent-mode easy-escape
license-snippets yasnippet-snippets-autoloads yasnippet-snippets
yasnippet elfeed-csv elfeed elfeed-curl elfeed-log elfeed-db elfeed-lib
avl-tree url-queue xml-query elfeed-score-rules elfeed-score-log
elfeed-score-autoloads elfeed-autoloads ytel-show-autoloads ytel
ytel-autoloads qrencode-el-autoloads tb-keycast tb-keycast-autoloads
gif-screencast xdg gif-screencast-autoloads yaml-mode
yaml-mode-autoloads mingus libmpdee cl mingus-autoloads
libmpdee-autoloads calctex calc-sel calctex-autoloads
shell-pop-autoloads eterm-256color-autoloads xterm-color-autoloads vterm
term ehelp vterm-module term/xterm xterm vterm-autoloads diffpdf
diffpdf-autoloads pdf-view-restore pdf-view-restore-autoloads pdf-occur
ibuf-ext ibuffer ibuffer-loaddefs tablist tablist-filter
semantic/wisent/comp semantic/wisent semantic/wisent/wisent
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw mode-local cedet pdf-isearch pdf-misc pdf-tools cus-edit
cus-load pdf-roll pdf-view jka-compr pdf-cache pdf-info tq pdf-util
pdf-macs pdf-tools-autoloads tablist-autoloads image-roll
image-roll-autoloads scimax-jupyter-autoloads pretty-hydra
pretty-hydra-autoloads jupyter jupyter-repl jupyter-kernel-manager
jupyter-channel jupyter-widget-client websocket bindat simple-httpd
jupyter-kernelspec jupyter-env jupyter-client jupyter-mime
jupyter-comm-layer jupyter-messages hmac-def jupyter-base eieio-base
jupyter-autoloads websocket-autoloads simple-httpd-autoloads
zmq-autoloads scimax-ob avy scimax-ob-autoloads wolfram-mode
wolfram-mode-autoloads ledger-mode-autoloads auctex-autoloads tex-site
ebuild-mode skeleton sh-script smie executable ebuild-mode-autoloads
lua-mode lua-mode-autoloads gnuplot-autoloads eros-autoloads nameless
lisp-mnt nameless-autoloads paredit paredit-autoloads company-jedi
company-jedi-autoloads jedi jedi-core python-environment epc ctable
concurrent auto-complete jedi-autoloads auto-complete-autoloads
jedi-core-autoloads python-environment-autoloads epc-autoloads
ctable-autoloads concurrent-autoloads elpy-autoloads pyvenv-autoloads
highlight-indentation-autoloads python tramp-sh helm-info which-key
which-key-autoloads helm-descbinds helm-descbinds-autoloads elisp-demos
elisp-demos-autoloads helpful edebug info-look help-fns radix-tree
elisp-refs helpful-autoloads elisp-refs-autoloads tldr tldr-autoloads
lsp-ui-autoloads lsp-mode-autoloads spinner-autoloads macrostep
macrostep-autoloads highlight-refontification
highlight-refontification-autoloads font-lock-profiler
font-lock-profiler-autoloads font-lock-studio font-lock-studio-autoloads
memory-usage memory-usage-autoloads bug-hunter bug-hunter-autoloads
lorem-ipsum lorem-ipsum-autoloads debug backtrace undohist
undohist-autoloads license-snippets-autoloads yasnippet-autoloads
move-text move-text-autoloads aggressive-indent
aggressive-indent-autoloads visual-regexp-autoloads magit-bookmark
bookmark pp helm-bm compile helm-bm-autoloads bm bm-autoloads helm-dash
dash-docs helm-dash-autoloads dash-docs-autoloads disk-usage
disk-usage-autoloads dired-git-info-autoloads
dired-hide-dotfiles-autoloads dired-filter-autoloads diredfl
diredfl-autoloads all-the-icons-dired-autoloads dired-async
dired-open-autoloads dired-avfs dired-avfs-autoloads
dired-narrow-autoloads dired-hacks-utils dired-hacks-utils-autoloads
dired+ image-file image-converter dired-x dired-aux dired+-autoloads
winner windower emacs-windower-autoloads goggles pulse skip-buffers-mode
avy-autoloads eval-sexp-fu eval-sexp-fu-autoloads goggles-autoloads
easy-escape-autoloads highlight-numbers-autoloads parent-mode-autoloads
rainbow-delimiters-autoloads highlight-parentheses
highlight-parentheses-autoloads flycheck-tip error-tip notifications
dbus popup flycheck-tip-autoloads flycheck flycheck-autoloads
pkg-info-autoloads epl-autoloads wordnut wordnut-history wordnut-u
wordnut-autoloads smog smog-autoloads writegood-mode
writegood-mode-autoloads el-patch-autoloads el-patch el-patch-stub
flyspell ispell hi-lock ediff ediff-merg ediff-mult ediff-wind
ediff-diff ediff-help ediff-init ediff-util browse-at-remote vc-git
vc-dispatcher f browse-at-remote-autoloads f-autoloads code-review
code-review-actions code-review-comment code-review-section
code-review-bitbucket code-review-faces shr kinsoku svg xml dom emojify
apropos tar-mode arc-mode archive-mode ht code-review-gitlab
code-review-utils code-review-parse-hunk code-review-github
code-review-db uuidgen calc-misc calc-ext calc calc-loaddefs rect
calc-macs a code-review-interfaces deferred forge-list forge-commands
forge-semi forge-bitbucket buck forge-gogs gogs forge-gitea gtea
forge-gitlab glab forge-github ghub-graphql treepy gsexp ghub let-alist
gnutls forge-notify forge-revnote forge-pullreq forge-issue forge-topic
yaml bug-reference forge-post markdown-mode thingatpt forge-repo forge
forge-core forge-db closql emacsql-sqlite emacsql emacsql-compiler
url-http url-auth url-gw nsm magit-submodule magit-obsolete magit-blame
magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch
magit-clone magit-remote magit-commit magit-sequence magit-notes
magit-worktree magit-tag magit-merge magit-branch magit-reset
magit-files magit-refs magit-status magit package browse-url
url-handlers magit-repos magit-apply magit-wip magit-log which-func
imenu magit-diff smerge-mode diff diff-mode git-commit log-edit message
rmc puny rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util
rmail rmail-loaddefs text-property-search mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr
mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log magit-core
magit-autorevert magit-margin magit-transient magit-process with-editor
magit-mode transient magit-git magit-base magit-section crm compat-27
compat-26 code-review-autoloads emojify-autoloads ht-autoloads
deferred-autoloads uuidgen-autoloads a-autoloads forge-autoloads
yaml-autoloads markdown-mode-autoloads ghub-autoloads treepy-autoloads
let-alist-autoloads emacsql-sqlite-autoloads emacsql-autoloads
closql-autoloads magit-autoloads magit-section-autoloads
git-commit-autoloads with-editor-autoloads transient-autoloads
autorevert recentf tree-widget wid-edit disp-table hl-todo
pretty-symbols company-oddmuse company-keywords company-etags etags
fileloop generator xref project company-gtags company-dabbrev-code
company-dabbrev company-files company-clang company-capf company-cmake
company-semantic company-template company-bbdb company
persistent-scratch persistent-scratch-autoloads savehist
backup-walker-autoloads company-autoloads helm-adaptive helm-mode
helm-misc helm-files image-dired image-mode dired dired-loaddefs exif
filenotify tramp tramp-loaddefs trampver tramp-integration files-x
tramp-compat shell parse-time iso8601 ls-lisp helm-buffers helm-occur
helm-tags helm-locate helm-grep helm-regexp helm-utils helm-help
helm-types helm helm-core async-bytecomp helm-global-bindings
helm-easymenu helm-source helm-multi-match helm-lib async helm-autoloads
popup-autoloads helm-core-autoloads face-remap pyim pyim-hacks
pyim-cloudim url url-proxy url-privacy url-expand url-methods
url-history url-cookie url-domsuf mailcap pyim-probe pyim-cregexp xr
pyim-dict pyim-autoselector pyim-indicator pyim-preview pyim-page
pyim-process pyim-cstring pyim-punctuation pyim-outcome pyim-candidates
pyim-codes pyim-imobjs pyim-pinyin pyim-pymap pyim-entered pyim-dcache
url-util url-parse auth-source eieio eieio-core eieio-loaddefs
password-cache json map url-vars pyim-scheme pyim-common pyim-autoloads
xr-autoloads async-autoloads reverse-im quail reverse-im-autoloads hydra
lv boon-qwerty color olivetti straight-x boon boon-keys boon-core
boon-loaddefs boon-autoloads multiple-cursors-autoloads
expand-region-autoloads meta-functions org-id org-refile dash
meta-functions-autoloads dash-autoloads hl-line memoize
memoize-autoloads info-colors info-colors-autoloads hl-todo-autoloads
latex-pretty-symbols latex-pretty-symbols-autoloads
pretty-symbols-autoloads page-break-lines page-break-lines-autoloads
edmacro kmacro adaptive-wrap adaptive-wrap-autoloads olivetti-autoloads
shackle trace shackle-autoloads use-package-diminish all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons all-the-icons-autoloads org
ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote
org-src ob-comint org-pcomplete pcomplete comint ansi-color ring
org-list org-entities time-date noutline outline org-version
ob-emacs-lisp ob-core ob-eval org-cycle org-font-lock org-font-lock-core
org-element-match org-faces org-table ol org-fold org-fold-core org-keys
oc org-compat advice org-font-lock-obsolete org-macs org-loaddefs
format-spec find-func cal-menu calendar cal-loaddefs
modus-operandi-theme modus-themes modus-themes-autoloads s s-autoloads
pcase asoc asoc.el-autoloads no-littering compat no-littering-autoloads
compat-autoloads hydra-autoloads lv-autoloads finder-inf
use-package-bind-key org-contrib-autoloads comp comp-cstr warnings rx
bind-key easy-mmode diminish diminish-autoloads use-package-core
use-package-autoloads bind-key-autoloads straight-autoloads info cl-seq
cl-extra help-mode seq byte-opt straight subr-x cl-macs gv cl-loaddefs
cl-lib bytecomp byte-compile cconv server site-gentoo iso-transl tooltip
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd
fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice button loaddefs faces cus-face macroexp files
window text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget hashtable-print-readable backquote threads dbusbind
inotify dynamic-setting font-render-setting cairo x multi-tty
make-network-process native-compile emacs)

Memory information:
((conses 16 14243880 5079313)
 (symbols 48 95923 238)
 (strings 32 1604455 634055)
 (string-bytes 1 71099467)
 (vectors 16 851772)
 (vector-slots 8 18133169 13987565)
 (floats 8 153456 38146)
 (intervals 56 745206 76506)
 (buffers 992 174))





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#56475: 28.1.50; bibtex-parse-entry disregards @string substitutions
  2022-07-10  7:14 bug#56475: 28.1.50; bibtex-parse-entry disregards @string substitutions Ihor Radchenko
@ 2022-07-11 10:16 ` Lars Ingebrigtsen
  2022-07-11 17:12   ` Roland Winkler
  0 siblings, 1 reply; 12+ messages in thread
From: Lars Ingebrigtsen @ 2022-07-11 10:16 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: 56475, Roland Winkler

Ihor Radchenko <yantar92@gmail.com> writes:

> Org currently relies on built-in bibtex.el to parse bibliography files.
> However, the built-in parser does not appear to be complete.

Perhaps Roland has some comments; added to the CCs.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#56475: 28.1.50; bibtex-parse-entry disregards @string substitutions
  2022-07-11 10:16 ` Lars Ingebrigtsen
@ 2022-07-11 17:12   ` Roland Winkler
  2022-07-11 17:29     ` Roland Winkler
  0 siblings, 1 reply; 12+ messages in thread
From: Roland Winkler @ 2022-07-11 17:12 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 56475, Ihor Radchenko

On Mon, Jul 11 2022, Lars Ingebrigtsen wrote:
> Ihor Radchenko <yantar92@gmail.com> writes:
>
>> Org currently relies on built-in bibtex.el to parse bibliography files.
>> However, the built-in parser does not appear to be complete.
>
> Perhaps Roland has some comments; added to the CCs.

The arg CONTENT of bibtex-parse-entry is passed on to
bibtex-text-in-field-bounds that gives you a more complete description
of what it does.  So I believe binding bibtex-expand-strings to t while
calling bibtex-parse-entry with arg CONTENT non-nil should do the job.

The parser in bibtex.el goes through some effort to deal with BibTeX
constructs such as

    title = "Foo " # BAR # {Baz},

correctly.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#56475: 28.1.50; bibtex-parse-entry disregards @string substitutions
  2022-07-11 17:12   ` Roland Winkler
@ 2022-07-11 17:29     ` Roland Winkler
  2022-07-12  2:32       ` Ihor Radchenko
  0 siblings, 1 reply; 12+ messages in thread
From: Roland Winkler @ 2022-07-11 17:29 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 56475, Ihor Radchenko

On Mon, Jul 11 2022, Roland Winkler wrote:
> The arg CONTENT of bibtex-parse-entry is passed on to
> bibtex-text-in-field-bounds that gives you a more complete description
> of what it does.  So I believe binding bibtex-expand-strings to t while
> calling bibtex-parse-entry with arg CONTENT non-nil should do the job.

I should add: The code in bibtex.el that relies on this is bibtex-url,
which in turn relies on font-lock to activate clickable links in your
bib files.  Users may or may not want to expand strings for their rules
defined in bibtex-generate-url-list.

If I understand your issue correctly you probably want to let-bind the
user variable bibtex-expand-strings while calling bibtex-parse-entry so
that your code works irrespective of what users have chosen for
bibtex-expand-strings.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#56475: 28.1.50; bibtex-parse-entry disregards @string substitutions
  2022-07-11 17:29     ` Roland Winkler
@ 2022-07-12  2:32       ` Ihor Radchenko
  2022-07-12  4:14         ` Roland Winkler
  0 siblings, 1 reply; 12+ messages in thread
From: Ihor Radchenko @ 2022-07-12  2:32 UTC (permalink / raw)
  To: Roland Winkler; +Cc: Lars Ingebrigtsen, 56475

Roland Winkler <winkler@gnu.org> writes:

> If I understand your issue correctly you probably want to let-bind the
> user variable bibtex-expand-strings while calling bibtex-parse-entry so
> that your code works irrespective of what users have chosen for
> bibtex-expand-strings.

Thanks for the pointer!
I tried my reproducer by running
M-: (let ((bibtex-expand-strings t)) (bibtex-parse-entry))
instead of
M-: (bibtex-parse-entry)

Unfortunately, the journal field is still not substituted.

Best,
Ihor





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#56475: 28.1.50; bibtex-parse-entry disregards @string substitutions
  2022-07-12  2:32       ` Ihor Radchenko
@ 2022-07-12  4:14         ` Roland Winkler
  2022-07-12  6:04           ` Ihor Radchenko
  0 siblings, 1 reply; 12+ messages in thread
From: Roland Winkler @ 2022-07-12  4:14 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Lars Ingebrigtsen, 56475

On Tue, Jul 12 2022, Ihor Radchenko wrote:
> Roland Winkler <winkler@gnu.org> writes:
>
>> If I understand your issue correctly you probably want to let-bind the
>> user variable bibtex-expand-strings while calling bibtex-parse-entry so
>> that your code works irrespective of what users have chosen for
>> bibtex-expand-strings.
>
> Thanks for the pointer!
> I tried my reproducer by running
> M-: (let ((bibtex-expand-strings t)) (bibtex-parse-entry))
> instead of
> M-: (bibtex-parse-entry)
>
> Unfortunately, the journal field is still not substituted.

The variable bibtex-string-files tells bibtex.el where it can find the
string definitions (which are then stored in the variable
bibtex-strings).  This complements bibtex-files that tells bibtex.el
where it can find the BibTeX entries.  A command like
bibtex-search-entry searches the entries in the files in bibtex-files.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#56475: 28.1.50; bibtex-parse-entry disregards @string substitutions
  2022-07-12  4:14         ` Roland Winkler
@ 2022-07-12  6:04           ` Ihor Radchenko
  2022-07-12 15:31             ` Roland Winkler
  0 siblings, 1 reply; 12+ messages in thread
From: Ihor Radchenko @ 2022-07-12  6:04 UTC (permalink / raw)
  To: Roland Winkler; +Cc: Lars Ingebrigtsen, 56475

Roland Winkler <winkler@gnu.org> writes:

>> Thanks for the pointer!
>> I tried my reproducer by running
>> M-: (let ((bibtex-expand-strings t)) (bibtex-parse-entry))
>> instead of
>> M-: (bibtex-parse-entry)
>>
>> Unfortunately, the journal field is still not substituted.
>
> The variable bibtex-string-files tells bibtex.el where it can find the
> string definitions (which are then stored in the variable
> bibtex-strings).  This complements bibtex-files that tells bibtex.el
> where it can find the BibTeX entries.  A command like
> bibtex-search-entry searches the entries in the files in bibtex-files.

I am wondering why bibtex-string-files is not documented inside the
docstring of bibtex-expand-strings. Same for bibtex-expand-strings not
being documented in bibtex-parse-entry.

As for using bibtex-string-files in my specific scenario, I cannot make
it work as well.

I tried the following simple test:

M-: (let ((bibtex-string-files `(,(buffer-file-name))) (bibtex-expand-strings t)) (bibtex-parse-entry))

The journal field is still not handled: ("journal" . "jgr")

Also, note that bibtex-string-files cannot help with situations when the
BibTeX buffer does not have an associated file.

Best,
Ihor





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#56475: 28.1.50; bibtex-parse-entry disregards @string substitutions
  2022-07-12  6:04           ` Ihor Radchenko
@ 2022-07-12 15:31             ` Roland Winkler
  2022-07-17  8:34               ` Ihor Radchenko
  0 siblings, 1 reply; 12+ messages in thread
From: Roland Winkler @ 2022-07-12 15:31 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Lars Ingebrigtsen, 56475

On Tue, Jul 12 2022, Ihor Radchenko wrote:
> I am wondering why bibtex-string-files is not documented inside the
> docstring of bibtex-expand-strings. Same for bibtex-expand-strings not
> being documented in bibtex-parse-entry.

I believe the situation is the other way round: bibtex-files and
bibtex-string-files are basic user variables for bibtex-mode and have
been around for 30+ years (much longer than I support bibtex.el).
bibtex-expand-strings is a small add-on in this context.

> I tried the following simple test:
>
> M-: (let ((bibtex-string-files `(,(buffer-file-name)))
> (bibtex-expand-strings t)) (bibtex-parse-entry))
>
> The journal field is still not handled: ("journal" . "jgr")

Try

M-: (let ((bibtex-string-files `(,(buffer-file-name)))
(bibtex-expand-strings t)) (bibtex-parse-entry t))

> Also, note that bibtex-string-files cannot help with situations when
> the BibTeX buffer does not have an associated file.

When does this happen?  To the best of my knowledge, this has never been
an issue for users of bibtex.el.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#56475: 28.1.50; bibtex-parse-entry disregards @string substitutions
  2022-07-12 15:31             ` Roland Winkler
@ 2022-07-17  8:34               ` Ihor Radchenko
  2022-07-17 20:10                 ` Roland Winkler
  0 siblings, 1 reply; 12+ messages in thread
From: Ihor Radchenko @ 2022-07-17  8:34 UTC (permalink / raw)
  To: Roland Winkler; +Cc: Lars Ingebrigtsen, 56475

Roland Winkler <winkler@gnu.org> writes:

> On Tue, Jul 12 2022, Ihor Radchenko wrote:
>> I am wondering why bibtex-string-files is not documented inside the
>> docstring of bibtex-expand-strings. Same for bibtex-expand-strings not
>> being documented in bibtex-parse-entry.
>
> I believe the situation is the other way round: bibtex-files and
> bibtex-string-files are basic user variables for bibtex-mode and have
> been around for 30+ years (much longer than I support bibtex.el).
> bibtex-expand-strings is a small add-on in this context.

I think that the main issue on my side is that I interact with bibtex.el
from API perspective without editing many actual .bib files. So, I was
mostly looking into parser API instead of user customizations.

If you start exploring bibtex.el from bibtex-parse-entry and its
docstring, it is not very easy to figure out that bibtex-string-files
and bibtex-expand-strings need to be set. They are not mentioned in the
docstring other than by common word "extract content" with "extract"
meaning being not very clear.

>> I tried the following simple test:
>>
>> M-: (let ((bibtex-string-files `(,(buffer-file-name)))
>> (bibtex-expand-strings t)) (bibtex-parse-entry))
>>
>> The journal field is still not handled: ("journal" . "jgr")
>
> Try
>
> M-: (let ((bibtex-string-files `(,(buffer-file-name)))
> (bibtex-expand-strings t)) (bibtex-parse-entry t))

Thanks! It works now.

>> Also, note that bibtex-string-files cannot help with situations when
>> the BibTeX buffer does not have an associated file.
>
> When does this happen?  To the best of my knowledge, this has never been
> an issue for users of bibtex.el.

It is more of a hypothetical scenario that might occur in future if Org
tries to support bibliographies provided inside .org files. Such
bibliographies will need to be converted to .bib files transiently and
might not need to be saved on disk.

In any case, it is not a concern you need to worry about now. AFAIU,
bibtex.el depends on .bib buffers having non-nil buffer-file-name in
multiple places.

Best,
Ihor





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#56475: 28.1.50; bibtex-parse-entry disregards @string substitutions
  2022-07-17  8:34               ` Ihor Radchenko
@ 2022-07-17 20:10                 ` Roland Winkler
  2022-07-18  4:07                   ` Ihor Radchenko
  0 siblings, 1 reply; 12+ messages in thread
From: Roland Winkler @ 2022-07-17 20:10 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Lars Ingebrigtsen, 56475

On Sun, Jul 17 2022, Ihor Radchenko wrote:
>>> Also, note that bibtex-string-files cannot help with situations when
>>> the BibTeX buffer does not have an associated file.
>>
>> When does this happen?  To the best of my knowledge, this has never been
>> an issue for users of bibtex.el.
>
> It is more of a hypothetical scenario that might occur in future if Org
> tries to support bibliographies provided inside .org files. Such
> bibliographies will need to be converted to .bib files transiently and
> might not need to be saved on disk.

This sounds to me like reinventing the wheel and a poor design choice.
BibTeX is a well-established bibliography format with a large ecosystem
[(La)TeX].  Also, publishers provide BibTeX records for their journal
articles.  (Occassionally I need to deal with records that have some
other database format like RIS.  Converting formats is always painful.)

From a practical perspective, BibTeX mode is built around the idea that
users may have a large bibliography database.  Something like 10,000
records is not exotic.  Then it is natural to split up these entries
among multiple files.  BibTeX mode and its API support this very nicely.
(I have many little helper functions in my emacs init file that use the
BibTeX mode API.  Maybe I should put some of these also into bibtex.el.)

What are the usage scenarios you have in mind for putting a bibliography
database into org mode that comes with its own database format?





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#56475: 28.1.50; bibtex-parse-entry disregards @string substitutions
  2022-07-17 20:10                 ` Roland Winkler
@ 2022-07-18  4:07                   ` Ihor Radchenko
  2022-12-30  6:37                     ` Roland Winkler
  0 siblings, 1 reply; 12+ messages in thread
From: Ihor Radchenko @ 2022-07-18  4:07 UTC (permalink / raw)
  To: Roland Winkler; +Cc: Lars Ingebrigtsen, 56475

[-- Attachment #1: Type: text/plain, Size: 1393 bytes --]

Roland Winkler <winkler@gnu.org> writes:

>>> When does this happen?  To the best of my knowledge, this has never been
>>> an issue for users of bibtex.el.
>>
>> It is more of a hypothetical scenario that might occur in future if Org
>> tries to support bibliographies provided inside .org files. Such
>> bibliographies will need to be converted to .bib files transiently and
>> might not need to be saved on disk.
>
> This sounds to me like reinventing the wheel and a poor design choice.
> BibTeX is a well-established bibliography format with a large ecosystem
> [(La)TeX].  Also, publishers provide BibTeX records for their journal
> articles.  (Occassionally I need to deal with records that have some
> other database format like RIS.  Converting formats is always painful.)
> ...
> What are the usage scenarios you have in mind for putting a bibliography
> database into org mode that comes with its own database format?

Org mode provides transparent conversion between BibTeX and Org formats.

The advantages of keeping bibliography in Org involve the extra things
you can do with Org headlines compared to BibTeX records:

- You can keep the related notes together with the bibliographic record
  and make use of Org markup, including inline images, inline LaTeX
  formulas, and cross-links to other bibliographic records. An example of
  such record is in the attached screenshot.


[-- Attachment #2: bibtex-note-example.png --]
[-- Type: image/png, Size: 100576 bytes --]

[-- Attachment #3: Type: text/plain, Size: 1936 bytes --]


- You can convert such records to actionable tasks and schedule them
  using org-agenda. This integrates literature review process with task
  management capabilities of Org.

- You can easily search across the literature records while also
  indexing the records according to personal notes/tags/relevance to
  specific projects/etc

- You can visualize relations between literature records using packages
  like org-roam-ui: https://github.com/org-roam/org-roam-ui

- You can attach the literature PDFs/related data alongside with the
  literature record using org-attach mechanism

- You can put the bibliographic records together with notes inside the
  actual authored document, being able to review and search across the
  used literature. They can also be transparently exported to the
  required printable format like pdf/Tex/html/odt/etc

> From a practical perspective, BibTeX mode is built around the idea that
> users may have a large bibliography database.  Something like 10,000
> records is not exotic.  Then it is natural to split up these entries
> among multiple files.  BibTeX mode and its API support this very nicely.
> (I have many little helper functions in my emacs init file that use the
> BibTeX mode API.  Maybe I should put some of these also into bibtex.el.)

Sure. I am not saying that the current API is incorrect. It's just
geared towards specific kind of traditional workflow.

For the bibtex.el extension, I am pretty sure that people do want some
helper functions. Some Org-related projects are even using
alternative API-oriented implementations of BibTeX parsers:
https://github.com/joostkremers/parsebib You may find reading the
parsebib's readme useful to get an idea what people need. parsebib is at
least being used by https://github.com/andras-simonyi/citeproc-el that
is natively supported by Org mode's citation engine
(https://blog.tecosaur.com/tmio/2021-07-31-citations.html).

Best,
Ihor

^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#56475: 28.1.50; bibtex-parse-entry disregards @string substitutions
  2022-07-18  4:07                   ` Ihor Radchenko
@ 2022-12-30  6:37                     ` Roland Winkler
  0 siblings, 0 replies; 12+ messages in thread
From: Roland Winkler @ 2022-12-30  6:37 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Lars Ingebrigtsen, 56475-done

On Mon, Jul 18 2022, Ihor Radchenko wrote:
> Sure. I am not saying that the current API is incorrect. It's just
> geared towards specific kind of traditional workflow.

Closing.





^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2022-12-30  6:37 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-07-10  7:14 bug#56475: 28.1.50; bibtex-parse-entry disregards @string substitutions Ihor Radchenko
2022-07-11 10:16 ` Lars Ingebrigtsen
2022-07-11 17:12   ` Roland Winkler
2022-07-11 17:29     ` Roland Winkler
2022-07-12  2:32       ` Ihor Radchenko
2022-07-12  4:14         ` Roland Winkler
2022-07-12  6:04           ` Ihor Radchenko
2022-07-12 15:31             ` Roland Winkler
2022-07-17  8:34               ` Ihor Radchenko
2022-07-17 20:10                 ` Roland Winkler
2022-07-18  4:07                   ` Ihor Radchenko
2022-12-30  6:37                     ` Roland Winkler

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).