Using Atom for academic writing

This page has been tremendously helpful - thanks OP!

As I have fought the newbie battles getting to a workflow that doesn’t make my head hurt - big thumbs up to the Marked 2 app.

If you are on a Mac, Marked 2 makes it brain dead simple to export to many formats, especially .docx.

Very helpful selection.
Is anyone has tried ?

1 Like


I came to Atom because I thought with appropriate packages it would support CriticMarkup during editing. The now defunct package atom-criticmarkup at least had keyboard shortcuts to apply CriticMarkup. I can’t seem to find any packages that do anything more than CriticMarkup highlighting in the source, which is great if your collaborator places CriticMarkup in the file you get from him or her.

Is there no way to have Atom auto-generate CriticMarkup tags while adding/deleting/replacing text? Isn’t this an important feature for collaborative academic writing?

And what about the ability to trigger something in Atom so it will go through all CriticMarkup tags and ask the user to accept/reject?

What am I missing?

1 Like

Sure there is. Someone just needs to write up a set of logical rules in code.

  1. Command to toggle markup mode on/off
    a. When in markup mode, if no text is selected and the user starts typing or presses ctrl-v, insert {++ and ++} around the cursor and then perform the operation.
    b. When in markup mode, if text is selected and the user starts typing or presses ctrl-v, insert ~~} at the end of the selection and {~~~> at the beginning. Place the cursor after the second tilde and execute the operation.
    c. When in markup mode, if text is selected and the user presses backspace, delete, or ctrl-x, surround the text with {-- and --}. Optionally, check to see if these tags are adjacent to others like them and merge if possible. If the operation was a cut command, also copy the selected text to the clipboard.
    d. When in markup mode, if no text is selected and the user presses backspace, wrap the character behind the cursor in {-- --}. If the three characters behind the cursor are {--, instead move the character to the left of the tag inside of it.
    e. When in markup mode, if no text is selected and the user presses delete, wrap the character in front of the cursor in {-- --}. If the three characters in front of the cursor are --}, instead move the character to the left of the tag inside of it.
    f. Comment and highlight tags would have to be handled through keybindings.

And what about the ability to trigger something in Atom so it will go through all CriticMarkup tags and ask the user to accept/reject?

Regular expression search. The dialog could be in a modal or a side panel, or the whole thing could be handled through keybindings.


Just today I wanted to use CriticMarkup and I have to agree: Better CriticMarkup support for Atom would be extremely useful. A package that offers keyboard shortcuts, auto-generates CriticMarkup tags while editing, and the accept/reject functionality. At least language-markdown with some syntax themes support CriticMarkup highlighting. I really hope a more talented programmer than me would create something like this :slight_smile:

OK, here is another great addon for writers that deserves more attention: zotero-picker integrates the Zotero visual picker in Atom. This is a great alternative to autocomplete-bibtex for people like me who have a large library. Autocomplete-bibtex loads the entire library on startup which can be painful. zotero-picker doesn’t have this issue.


FYI I recently asked the author of Markdown-Preview-Enhanced if (s)he would add CriticMarkup support and so it was done very quickly. The author is very responsive and the package is excellent, really.

1 Like

What is the advantage of Marked 2 over markdown preview plus? The latter is free and supports live view whereas in marked 2 u seem to have to save the file. What am I missing why people pay money for that?


I love this thread! I have one question though, downloading all of these packages is making my atom a bit heavy. Is there a way to group my packages so that I can easily disable all of my coding packages when I’m writing, and vice-versa? Thanks!

I don’t know if there is an elegant way to do this. Perhaps you could create shell aliases for apm enable <list of writing-related packages> and apm disable <list of writing-related packages>.

That said, I don’t feel a huge difference in speed. Startup time is a bit worse, but Atom’s startup time is not great anyway so it doesn’t bother me.

There isn’t.

Keep in mind that enabling or disabling a package via configuration has an effect on every open Atom window, so this technique can’t be used to have differently-configured Atom windows at the same time.

Install atom-ctags to enable navigation by sections with cmd-r

The atom manual describes how to navigate by symbols using cmd-r (current file) and cmd-shift-r (project). For this to work, a project needs a ctags file with the locations of markdown sections. There may be better ways, but installing atom-ctags seems to do this fairly painlessly. (It disables the built in symbols-view package and replaces it with a fork which is worrying, but it has nearly 100,000 installs so is probably safe!)

I have other software for writing in Markdown (I use MacDown), but I turned to Atom when I started using AsciiDoc, which is a more powerful language.

I had a very bad experience with GitBook which was supposed to support AsciiDoc, but all I did was waste my money and time on the effort. I then found that Atom has an Asciidoc preview package, and that made things much better.

1 Like

I’m a bit late, but Atom has “activation-hooks”, which delay loading of packages until they are actually used, or their declared language is used. It’s totally up to the package developer to add these, but it means that the issue isn’t quite as important as you might first believe.

For example, if you have a bunch of Haskell IDE packages (for whatever reason), they’ll only load if you open a Haskell file. If you never open that kind of file, those packages will never load. Similarly, the latex package will only load when you first open a .tex file, or run one of it’s commands.

I don’t know exactly what impact this has on load times, but it’s probably relatively minor.

1 Like

For on-the-fly checking of professional and scholarly writing there is also an atom linter, linter-retextjs that uses the retext natural language processor and many of its plugins

This package provides these checkers:

This package is like a super-set that includes linter-alex, write-good, linter-just-say-no, and others

I’ve found it easy to propose additions to the retext checkers because they are all developed in the open on GitHub and have detailed instructions for contributors.


That’s awesome! Can you tell us how the configuration works?


I find no documentation.

In lack of enabled Github issues, I ask here: would it be feasible to allow in the configuration the disabling of some retext plugins per GUI?

I might consider to convert my EU clear writing guidelines project from to retext. :slight_smile:

1 Like

Thanks! Yes those config options are taken directly from the alex-linter pkg, and are documented for that pkg here: I haven’t used them yet myself.

Yes, that is a great question about toggling the retext plugins in the GUI, I agree that would be very handy! I need to study some other pkgs that have these kind of settings to see how it might be possible (currently I have no idea). If you have any suggestions about good examples I’d be most grateful to know.

Also, I’ve move the GitHub repo for retextjs so issues can be opened there, I’ve opened this just now:

1 Like

Hi there. Interesting post. Thanks for the useful information.

Hi there very much a newbie trying to organise 330 pages of literature search and live the visuals and multiscreen element. Unable to track that a package that allows me to tag paragraphs with @tag like in folding text. Ie clicking on an @tag gives you the paragraphs that contain it- any ideas?

Great topic !

I am a regular user of tools such as Zettlr to take Markdown notes with bibliographic references.

I have recently started using Atom and, for me, the most useful package is Pandoc/PDF.