My Current Setup for University-Related Matters

What I will not present when I'm presenting on using reference management software and other tools for students of Asian Studies.

On Tuesday and Wednesday next week, we'll have a library tour for new master's students of Southeast Asian Studies at Goethe University (starting at 2 p.m. at the info box in the central university library in Bockenheim). After the library tour, which Holger Warnk, our secretary and librarian offered to hold, I'll give a short training or seminar on how to use the library website to access online journals and databases and a short introduction reference management software. I wrote about both briefly in German a long time ago (accessing databases, JabRef).

On the latter part, I'll give an introduction to JabRef and Zotero and how they can be integrated with a word processor. It's what makes sense to show people, but it's not what I realistically use when I have the choice. I'll instead take the chance to sum up what I do use when I have the chance here - for references and writing, but also other things like presentations.

Quite much of the software is self-written, but almost all is available in open-source as well. So I hope that a more in-depth description can help.


Somehow involved in almost anything that follows are BibTeX databases (or is the term "list" more appropriate?). BibTeX is a beautifully simple plaintext format that can theoretically also be just edited by hand, but JabRef offers a great and comfortable to use way of editing BibTeX files. It's quite well-documented and easy to use, so I think further elaborating on it is rather unnecessary.

Writing: Org-mode's LaTeX Export and Helm-BibTeX

Note: I am using spacemacs. My .spacemacs file can be found here.

For notes and papers I use org-mode in emacs whenever possible. Files are stored in a plain text file, which I generally prefer over any alternative way of data storage. Thus, it's easy to e.g. search through a whole range of documents or process the documents with outside scripts. Also, it's easy to read the documents even with a more simple text editor - definitely an improvement when compared to having to, e.g., unpack and search through .docx documents when there is no word processor around. On the long run, this means that the documents also will surely be usable for a long time.

On the other hand it's made to give the user a good overview over the document, and, since it's integrated into emacs, it can be combined with a huge number of emacs minor modes. Finally, it offers a range of different export functions including exports to LaTeX.

Coming to speak of minor modes, the two most important ones I use for taking notes / are yasnippet and helm-bibtex.

Yasnippet is a minor mode for entering commonly used snippets from a given folder into the document. I'm primarily using it for setting export settings and lines for metadata and inserting the bibliography at the end of the file if LaTeX is used.

#+AUTHOR: Joshua Ramon Enslin
#+DATE: 2017-05-00
#+ODT_STYLES_FILE: "~/Sync/Programming/dotfiles/general/emacs/orgmode/"
#+BIBLIOGRAPHY: pdf plain
#+LATEX_CLASS_OPTIONS: [a4paper, 12pt, linespread=5.5, colorlinks=true, citecolor=., linkcolor=black, urlcolor=black]
#+LATEX_HEADER: \usepackage{apacite}
#+LATEX_HEADER: \usepackage{parskip}
#+LATEX_HEADER: \setlength{\parindent}{1cm}
#+LATEX_HEADER: \usepackage{setspace}
#+LATEX_HEADER: \usepackage{etoolbox}
#+LATEX_HEADER: \AtBeginEnvironment{quote}{\singlespacing\small}
#+LATEX: \onehalfspacing
#+LATEX: \pagebreak`{.codeBlock}

In the first nine lines, basic metadata are set. The next two lines concern exports to odt: the template to be used for exporting is defined and a page break is inserted. By default, title, author and date information are exported at the very start of the document, even before the pagebreak. Thus, essentially a cover page is faked.

The following lines concern style and additional packages to use for LaTeX (and thus PDF) exports. The styles and margins are set to roughly meet the standards for term papers at our department, while the package apacite is included to set references using the APA citation style. Finally, a page break is also set for LaTeX exports, similar to ODT export.

For referencing, I directly enter LaTeX citations into the document through the minor-mode helm-bibtex. helm-bibtex reads BibTeX files and offers an interface to browse through and insert entries. Here it comes in handy that JabRef directly stores data in BibTeX files, too.

Note that there are some small problems remaining. By directly entering LaTeX references, references cannot be set processed when exporting to different formats. Second, generating references when exporting only works with the BibTeX files being located in same folder as the document that's being edited.

By the way, quite a few people have written about roughly similar approaches to using org-mode together with different minor modes for references for writing (academic) documents or at least drafts thereof (1, 2, 3, 4, 5).

Either way, one large problem remains. With the focus on MS Word and perhaps increasingly Google Docs in the social sciences and humanities, one has to export and convert documents quite often to be able to communicate with people. For me, the improved writing experience overweighs this disadvantage easily.

Keeping Track of Readings: Aklaman

Last year, I wrote a tool to keep track of my readings, note down important parts of the texts, and collaboratively work on the literature part of research projects with others: Aklaman (and also posted a blog post about it in it's earliest phases, then still as the "books tool"). Aklaman, too, reads BibTeX files and displays the entries as web pages. Users can then mark it as read and enter notes, reviews and reading process for the entry.

Additionally, there are project pages. On the project pages, any of the texts that have been marked as read by the given user can be added to the project. Subsequently, users can add noted down passages from the texts to the project. Finally, files and blog posts can be added for the project.

I published the code of an earlier version here. Since then, most updates have been aimed at improving performance, e.g. by replacing XML for JSON as a storage format.

Citations in Blog Posts

My homepage runs on self-written software. It's, in a way, my playground for adding new features that seem useful here but could also come in handy elsewhere. The three relevant ones here are the table of contents for blog posts and the citation functionalities.

The table of contents is generated by splitting the text along the different second level headlines, each of the split parts along the third level headlines and so on. This might not be the smartest or most concise way, but it's quite surely the most straight-forward and stable.

More interesting are citations, for which there are two implementations running in parallel. First, the bibliography visible at the bottom of the page is generated on the server side through citeproc-php; second, seeing the bibliographical data on hovering over a citation is implemented on the client side. I use this split setup primarily because I favor having readable HTML outputs, and those parts implemented on the client side would not contribute to good HTML.

Both, the server-side functions and the client-side ones, are run/embedded in case a BibTeX file for the post exists. This is handled by the potential BibTeX file having the same ID as the post. E.g. there is a bibliography generated for post 47 (Surabaya in the 19th Century and on to Independence) because there exists a file 47.bib with all the displayed entries. To write those files, I copy-paste the relevant bibliographical entries from my main bibliographical databases to a blank one in JabRef.

Two last notes should be placed here: First, I'm abusing HTML's tags for the client side scripting. Apparently, they are indented to mark up a work's title - instead I'm using them to mark up identifiers (e.g. Aguilar1999) as there seems to be no actual HTML specification for that and tags are the most reasonable to use. Second, a word of thanks is also due to the PubPub project, for offering a great example of how academic writing on the web can look like.

Course Website and Presentations

This semester, I volunteered to give a tutorial on Transnational Migration in Southeast Asia. For the course I set up a website to collect all the presentations, references, and maybe some other relevant data. By now, I also started to use a newly written JavaScript presentation tool.

The website runs on a small content management system I originally wrote as a sort of personal proof of concept. Back then, I wanted to see how far one gets by using only the folder structure and file names to generate the folder structure. After adding the bibliography functionalities from my website into the CMS, it's now rather usable also for usecases like this.

By now, I've also written a small JavaScript tool for presentations for the course. Aside from the common features of presentation, it also includes a text version, which means that there is directly a transcript available within the presentation (given that the presenter bothered to write the text version, of course). The code is open-source and can be found here.

Keeping Things Organized

At the very end of this overview, maybe two more small hints at small things I use for keeping things organized and giving people the chance to profit from that are useful to mention.

One is, that I am now (since this week) publishing a personal, probably very incomplete calendar of the public events in Asian Studies at Goethe University. This ranges from listing interesting presentations to e.g. the current meetings to set up some form of informal colloquium for MA students. Again, this is a very personal selection of events, so please excuse me if I missed any event or chose not to include it. To generate and publish the calendar, I'm merging the single .ics files khal (the calendar tool I use) generates into a stream using this small tool and upload them through lftp. The process is executed every some hours through a cronjob.

Also, I wrote templates for some more administrative documents for giving courses in LaTeX and open-sourced them. Maybe they are of help to somebody.