[[!meta title="Emacs as a fully-fledged reference manager"]] [[!meta copyright="Copyright © 2025 Vidianos Giannitsis"]] [[!inline pages="internal(2025/info/reference-nav)" raw="yes"]] # Emacs as a fully-fledged reference manager Vidianos Giannitsis (he/him) - IRC: vidianos, . Vidianos Giannitsis on LinkedIn [[!inline pages="internal(2025/info/reference-before)" raw="yes"]] Even though all of my note-taking and literature organization infrastructure has been in Emacs for a few years, I haven't been able to make myself independent from a literature manager (Zotero in my case) until recently. Zotero was just too convenient. You can capture articles seamlessly (although downloading attachments didn't always work as intended), organize them in directories and take a quick look at your lists to determine what to read next, before you move on to actually reading them and taking notes. This year, I finally decided that I am tired of this and I will find a way to do this fully in Emacs. This talk will be discussing my findings in this regard. A lot of this was built in Ebib. It turns out that a lot of what I considered useful for this workflow was already available through this excellent software, built inside Emacs. Not everything worked as I wanted on installation, but naturally, this is Emacs, so I just hacked my way through getting the exact behaviour I wanted. This required integration with other tools and especially a closer interaction between Ebib and Org-roam. This came out incredible and I am now very happy with using it, so I thought I should also showcase it in EmacsConf! With this integration ready, only capturing articles from the web remains. Zotra can capture articles in a way about as seamless as Zotero's (it actually uses Zotero's translators, but from Emacs). Attachments remain a problem sometimes, but that's publishers making attachments hard to get because third party software can't see that you have full access to them, so I have decided to do those mostly manually, I often did that with Zotero anyways. Relevant links: - [Zotra - Capturing Articles](https://github.com/mpedramfar/zotra) - [Ebib - Organizing literature before and after reading](https://joostkremers.github.io/ebib/) - [Org-Roam - The missing link to create an effective reading list](https://www.orgroam.com/) - [Bibtex Completion - Useful tools for manipulating literature](https://github.com/tmalsburg/helm-bibtex) - [Ebib section of Dotfiles/emacs/.emacs.d/libs/zettelkasten.org at master · Vidianos-Giannitsis/Dotfiles · GitHub](https://github.com/Vidianos-Giannitsis/Dotfiles/blob/master/emacs/.emacs.d/libs/zettelkasten.org#ebib) About the speaker: I'm Vidianos and I'm currently doing my PhD in KU Leuven in Belgium. Working on research means I have a need for good tools to help me with my research. I have been using Emacs for roughly 5 years now and I can confidently say it is the number one tool that helps me with this research. This talk will be all about how it helps me and about finally being able to remove external reference managers from my workflow, something I have wanted for years, but that I haven't managed to do before this. ## Discussion / notes - Check out the ebib manual for an explanation of the features I showed and more! [https://joostkremers.github.io/ebib/ebib-manual.html](https://joostkremers.github.io/ebib/ebib-manual.html){rel="noreferrer noopener"}. - Also my ebib config for the custom things [https://github.com/Vidianos-Giannitsis/Dotfiles/blob/master/emacs/.emacs.d/libs/zettelkasten.org#ebib](https://github.com/Vidianos-Giannitsis/Dotfiles/blob/master/emacs/.emacs.d/libs/zettelkasten.org#ebib){rel="noreferrer noopener"} - My 2022 talk if you're interested in the rest of my workflow regarding scientific literature [https://emacsconf.org/2022/talks/science/](https://emacsconf.org/2022/talks/science/){rel="noreferrer noopener"} - Use link to directly download bib info to the library is cool. I always did that manually. - The reading list, for me every download item will directly inside a manuscript. - Q: Which version of \`org-ref\` you are using? I am so dependent on org-ref and org-mode, so that I had huge resistant to update \`org-mode\`, \`org-ref\`, \`ivy-bibtex.el\`, etc - A: I'm not sure how recently I updated, so it may not be master, but I generally try to keep up to date with the packages I use. I generally haven't had many problems, unless when there is a new major version, which may need an afternoon to confirm everything works. - Thanks for sharing this. - Q: Have you try ivy-bibtex/bibtex-completion.el, how it compares to ebib? - A: I think they are not mutually exclusive. I typically use ivy-bibtex to find an article quickly, to initialize a literature note (integration with org-roam-bibtex) or to add a pdf to the entry, where it will automatically rename it as it should. ebib is more of a tool to manage the .bib file more, find an entry with full text search (instead of just Author/Title search) and reading list management. There may be some overlap, but I use both a lot. - Got it, quick check with ivy-bibtex etc. - ebib is for heavy lifting for academics - Q: Do you find showing abstract on your navigation panel helpful? I always delete all the abstract info in my bib to make things little concise. Just want to know you thoughts on this. - A: I like showing the abstract. It can be long and reduce visibility, but the whole point of searching with the navigation panel inside ebib is that I cannot easily find it through an Author/Title search. Therefore, the abstract is often the next line of search where you will find what you were looking for, so for me it is helpful. I sometimes also use the small comments I leave on the annote entry for this purpose. - Try to find relevent info using search. Abstract helps you search better. - annotation entry also help - Q: it seems that there's a meta problem here:  too much information.   Do your tools reduce cognitive load? - A: There is definitely too much information, but that is an innate problem of handling a lot of literature. I think these tools can reduce cognitive load, because things don't stay in my mind. They can be moved to the computer, which can handle more overload than my brain. So it is to a large extent the externalization that reduces the load, because too much information is a reality with literature. - thanks.  Sounds like externalizing the problem is the point. - Q: When you download a new article, how do you integrate its file to your database? For example, do you move and rename the file manually? - A:Find the file in ivy-bibtex, run M-o, select l (add PDF to library), find from file (f), find where you saved it and it will be renamed automatically. It is not moved automatically, but the rest of my packages know to find it in the folder I save initially. You may look at the README of the package for more details, it is one of the more well written ones in my opinion ([https://github.com/tmalsburg/helm-bibtex](https://github.com/tmalsburg/helm-bibtex){rel="noreferrer noopener"}). - Ok, I see, Ivy-bibtex has a function for this, thanks! - Q: What about annotations with ereaders. veiwng and taking on emacs or erader touchscreen highlighting and notes, org-noter I think would be an alternative out of ebook anotation alternative? - A: I do not use an ereader. For touchscreen, I have a tablet, which runs Emacs natively and I can work with org-noter with touch, but in that case, nothing in the general workflow changes. For books, I know org-noter also works with epub files, so you can also directly take the notes there. If you use an ereader for annotating that doesn't run Emacs, this is obviously more complex. - Q: How well do you feel about making notes an web sites, pdf, videos, I know pdf is ussaly good but others I am less sure about? - (Not the author) i always try to convert it to pdf, so only one file format to worry about. Video is another story. - I agree with the above comment. PDF is just the easiest to deal with in general, so I try to go for it. For taking notes on web sites, there is org-roam-protocol ([https://www.orgroam.com/manual.html#org_002droam_002dprotocol](https://www.orgroam.com/manual.html#org_002droam_002dprotocol){rel="noreferrer noopener"}) although I personally don't use it a lot. Video is much more complex, but in practice, I tend to not annotate videos directly, with a timestamp, but rather to take crude notes on paper during the video and organize them online at a later point. - Q: how do you add a new article from scratch, a pdf that you did not have in your bib file? How do you generate the 'bib' entry with metadata and abstract? - (Not the author) He mentioned he uses Zotra, which does that. [https://github.com/mpedramfar/zotra](https://github.com/mpedramfar/zotra){rel="noreferrer noopener"} - Yes, this is my approach. Specifically the function zotra-add-entry. - Q: When you fact check every details for a bib entry? The author names, published journal, doi stuff. Always painful for me when I need to upload a final version of a manuscript. Tons of work. Maybe I can do it at the download step. - A: I haven't worried about that, because I think automatically added bib entries work well. But Org-ref has a tool to automatically check it. I generally think it is best to do it directly when you add them. - [https://github.com/jkitchin/org-ref/blob/master/org-ref-bibtex.el#L119](https://github.com/jkitchin/org-ref/blob/master/org-ref-bibtex.el#L119){rel="noreferrer noopener"} - Yes, i did it manully, so some time I have issues. - Comment: I just use Org headings for all the metadata. Why bother with bib files. https://0x0.st/Kvbi.txt With Org, you can search through notes and title and metadata together. I use org-ql, but you can use anything that can search Org headings. And use attachments. can also directly export to .bib from org. with headings, reading list is just natural - assign todo to heading - A: You can move this all to org, yes, but I think .bib is very ubiquitous and a lot of tools work well with it, so I haven't really felt the need to move away from it. It is an interesting approach though. I have seen some others use it as well - A: Making a reading list is easy indeed. The primary goal of my additions were to be able to manipulate it without ever worrying about the file itself. I find it works better/faster for me if I can always access the content I want without opening the file. Which is mostly what the code I wrote for this does. - I noticed that his command searches are automatically prefixed with "^" to prevent more generalized matching (e.g. all comands that have "copy") - A: I believe that is done automatically by counsel-M-x. It served for something, but I don't remember exactly why. - Q: for viewing pdfs, do you use pdf-tools? I always found it clunky imo. - A: Yes, its pdf-tools With org-noter to take notes side by side. And I haven't had any problems with it. It generally works well. - (audience): I tend to always call out to the external PDF viewers. - (audience): maybe I didn't try it well enough, but I just prefer external viewers. pdf-tools feels like an image viewer to me - A: Some external viewers can have more features, but again, the problem comes down to it not being Emacs :D Being in Emacs is better than not being in Emacs. - A: Are you sure you are talking about pdf-tools and not doc-view? Because those problems are very much in doc-view, but I wouldn't say for pdf-tools. - It's always interesting to watch other people work in their emacs environment. - Thanks for the talk! There was a lot to digest, I'll have to rewatch it. [[!inline pages="internal(2025/info/reference-after)" raw="yes"]] [[!inline pages="internal(2025/info/reference-nav)" raw="yes"]]