emacs-humanities
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [emacs-humanities] How do you use Ebib?


From: Göktuğ Kayaalp
Subject: Re: [emacs-humanities] How do you use Ebib?
Date: Fri, 26 Feb 2021 16:51:53 +0300

On 2021-02-25 15:53 +01, Joost Kremers <joostkremers@fastmail.fm> wrote:
> Hi Göktuğ,
>
> Obviously as Ebib's maintainer I feel compelled to reply :-) but I hope that
> won't stop anyone else from chiming in.

I’m glad that it found you, I did hope it does! Thank you so much for
this beautiful program, and for replying!

> Alternatively, you can create a single "main" .bib file and have a so-called
> "dependent" .bib file for different projects. Dependent databases (i.e., .bib
> files) are subsets of their main database; edits you make to entries in the 
> main
> database show up in the dependent databases as well, and vice versa.
[... snip ...]
> Ebib fully supports biblatex, but by default it assumes your files are BibTeX
> files (which I really want to change, but I'm hesitant because every
> introduction to LaTeX still seems to present BibTeX as *the* bibliography
> solution...) If you want to use biblatex, you need to configure Ebib first.
>> and I turn off auto-exports for
>> projects after they are concluded).
> Since the .bib files *are* the database, there's no need for auto-updating. If
> you use the main-dependent databases mechanism, you can simply convert the
> dependent database into a normal database when you conclude a project. At that
> point it loses its connection to the main database and edits to the latter 
> won't
> show up in the former (or vice versa).

The dependent database mechanism is exactly what I needed, and seems to
fulfil my needs perfectly from what you describe.  Is there a standard
way to convert a dependent database to a main way?  I can’t seem to find
a command / keybinding in the manual for it.

Wrt biblatex IMHO it’d be nice to add a function like this to Ebib for
easily switching dialects in (AFAICT) the proper way:

    (defun ebib-set-bibtex-dialect (dialect)
      "Set the default dialect for Ebib and bibtex.el.
    
    This sets the values of ‘bibtex-dialect’ and
    ‘ebib-bibtex-dialect’ and calls ‘bibtex-set-dialect’.
    
    The value of DIALECT should be one of the symbols in
    ‘bibtex-dialect-list’.  The symbol ‘bibtex’ is synonymous with
    ‘BibTeX’."
      (let ((d (or (and (eq dialect 'bibtex) 'BibTeX)
                   dialect)))
        (setq bibtex-dialect d
              ebib-bibtex-dialect d)
        (bibtex-set-dialect d)))

I think it’s easy to miss one of these steps, as it is.

>> I make a lot of use of org-zotxt to link to items in collections when
>> preparing reading lists, and also in my reading notes file
>> (Reading.org), I create a heading and under it link to the relevant
>> entry in Zotero, even if I have no reading notes separate from PDF
>> annots for that particular item.  I’ve modified org-zotxt links to
>> export to ‘\fullcite’ for that purpose.
> Here I'm not entirely sure I understand your workflow, probably because I 
> don't
> know Zotero. Ebib can manage an external notes file (by default in Org 
> format),
> and it can manage an external reading list (also as an Org file). The two are
> separate, but Ebib tries to be flexible with regard to the exact format of 
> both
> files, so it shouldn't be difficult to have the notes file double as a reading
> list. (The only limitation would be that Ebib won't show you that an entry is 
> on
> your reading list and you won't be able to add items to your reading list or
> mark them as read from within Ebib; you'd have to go to Org file to do that.)

I’ve found the relevant manual entries and will give them a read.  FWIW,
my current workflow is as follows:

My reading lists are simple Org checkbox lists with org-zotxt
links. These links can set the selected entry in Zotero’s listing on
click, and with C-c " a, they open the associated file.  In LaTeX
export, I’ve configured them to export to ‘\fullcite{<citekey>}
[citekey:  @<citekey>]’ so when I want to make a PDF reading list
(e.g. to send to my advisor), it looks nice.  I use org-habit.el with my
thesis reading list, and a percentage cookie, to track progress (and
shame myself into reading):

    ** HABIT [#A] readings for thesis [0%]
    SCHEDULED: <2021-02-25 Prş .+1d>
    :PROPERTIES:
    :STYLE:    habit
    :COOKIE_DATA: recursive
    :END:
    - Theory
      - [ ] @einstein1915
      - [ ] @...


Reading.org entries look like this:

    * Syntactic structures; Chomsky
    [[zotero://select/items/1_GKNV49LW][@chomsky2002]]
    # ^ the org-zotxt link
    - Some note.
      - some other note.

I don’t tag stuff as read in Zotero itself, instead if they appear in
this file, they are read.  Sometimes I create items in my agenda file
like:

    * TODO read [[Reading.org::*Syntactic structures; Chomsky][syntactic 
structures]]
    SCHEDULED: <2021-02-26 Cum>

>> One of the Zotero features I make heavy use of is the ‘Save to Zotero’
>> bookmarklet.  I’ve adapted it to Qutebrowser where ‘,z’ triggers the
>> bookmarklet and the current ‘thing’ is saved to Zotero.
> Honestly, I don't know what this means...

Zotero has a suite of scrapers that can grab data from many journal web
pages, so using this bookmarklet on a journal page, you can have Zotero
automatically create an entry and populate it from the metadata it can
scrape.  Then, two years later, you find out half of your citations were
full of mistakes, and promptly kick yourself...

Besides, Zotero can pull data in using ISBNs, DOIs, PMIDs, etc from it’s
user interface (tho at least for DOIs it’s pretty easy to code up a
BibTeX fetcher, and I’ll risk a guess that for ISBNs it’d be possible to
use WorldCat.org).

Another feature is, when you add a .pdf to Zotero, it can use text
inside it to look up in some online database to figure out its
metadata.

These are all timesavers but also they pull in bad metadata pretty
often, so losing them wouldn’t be a huge loss for me, and maybe even an
improvement in the long run.

> There is a function (contributed by a user) that can pull a PDF from the
> internet, but currently it's only configured for a one or two sites, and I do
> not know how reliable it is, because I'm rarely able to use it myself.

The only reliable source of PDFs in my experience is a good friend in
Kazakhstan...

> Ebib comes with a package `org-ebib.el`, which provides such a link type. 
> Though
> currently it just jumps to the entry in Ebib.

Thats great!  I think it’d be trivial to add a keybinding that can
directly open the associated PDF of link at point instead of jumping to
Ebib.  I can add that to org-ebib.el if/when I write it, if you want.

> I suspect the main-dependent database mechanism could be helpful here, as I
> mentioned above. External files (such as pdfs) are linked by their file path, 
> so
> copying an entry to another .bib file keeps the reference to the same file.
> Notes are identified by the entry's key, so if you have two (independent) .bib
> files with the same entry (specifically, the same entry key), they'll point to
> the same external note.
>> I also like to be able to have multiple exports of the same collection
>> sometimes.  E.g., my thesis collection is exported to two locations:
> As you say yourself, you'll need some other mechanism for this, because the 
> .bib
> file is the database.

With all this info I think I’ll go for a setup as follows:

~/Bibliography/               a toplevel directory for global .bib files
     main.bib                 all bibliography items, keywords for
                                 topics
     Attachments/             global store for PDF files and other
                                 attachments
~/Research/<project>
     <project>.bib            dependent database of
                              ~/Bibliography/main.bib, dependency
                              deleted when thesis published

~/Notes/Research/<project>    for private notes on the project and
                                planning
     <project>.bib            another dependent database, like above

~/Notes/Todo.org::*some reading list
     - [ ] [[ebib:...]]

~/Notes/Reading.org
     * Some paper or book; Author1, Author2
     [[ebib:...]]

I’ll see if I can integrate Ebib’s notes/reading list management in the
short term, tho it may end up conflicting with my setup so far,
requiring me to deal with it after my thesis is complete.

> I hope this answers some of your questions. If it raises any new ones, feel 
> free
> to ask.

This was very useful, thank you so much for your help!



Cheers,

        -gk.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]