17 votes

A Markdown Editor for the Humanities

22 comments

  1. [6]
    unknown user
    Link
    A really capable alternative is Emacs Org mode, which has a lovely syntax, task management, journalling and extensive hyperlinking capabilities, and above all, a big collection of totally...

    A really capable alternative is Emacs Org mode, which has a lovely syntax, task management, journalling and extensive hyperlinking capabilities, and above all, a big collection of totally customisable export targets, one of which is LaTeX, through which you can generate PDFs using all the power of LaTeX (I personally use XeLaTeX which does a better job with UTF-8 and OTF/TTF fonts). It can also export to OpenOffice and HTML, among many others. Also, Pandoc can convert Org mode to almost anything.

    There is org-ref which provides a whole slew of automated functionality for managing, using and searching citations. I did not use it yet, personally, but from what I've seen so far, it is great software.

    This stack has a bit of a learning curve (tho it is not as big as people make it to be, and is a great first step into programming useful to those who aren't even programmers), but it is a tool for a lifetime, and depending on your computing habits, it might be totally worth it. I tend to like to be able to extend my tools and customise them sometimes extensively---I'm the guy that'll modify his rucksack, add a makeshift pen holder to his notebook, or sharpen both sides of his pencils---and I find that Emacs fits naturally to my workflows.

    Please excuse this if this was your own work, I like looking at stuff like this, but Emacs and especially Org mode gives nice competition to these tools, so I talk about it in threads like this. These are valid tools for many/most users otherwise.

    3 votes
    1. tindall
      Link Parent
      No, not at all. I personally use Vim for everything, but I've recently begun to understand a lot better the struggle that non-technical users have when it comes to doing almost anything with...

      Please excuse this if this was your own work, I like looking at stuff like this, but Emacs and especially Org mode gives nice competition to these tools, so I talk about it in threads like this. These are valid tools for many/most users otherwise.

      No, not at all. I personally use Vim for everything, but I've recently begun to understand a lot better the struggle that non-technical users have when it comes to doing almost anything with computers. This seems like a piece of software that pretty much anyone can use, unlike Emacs, which, while an excellent operating system, is, like Vim, not very discoverable or friendly to people unfamiliar with its paradigm.

      5 votes
    2. Greg
      Link Parent
      From skimming the site, it looks as though Zettlr is designed to give non-developers a better option than Word without the learning curve of LaTeX - given how reticent most people are to move away...

      From skimming the site, it looks as though Zettlr is designed to give non-developers a better option than Word without the learning curve of LaTeX - given how reticent most people are to move away from what they know even when they're complaining bitterly about it in the same breath, the vast majority of potential Zettlr users won't even entertain Emacs as an option.

      4 votes
    3. [4]
      Comment deleted by author
      Link Parent
      1. [3]
        unknown user
        Link Parent
        Yes, and yes-ish. In the sense that it depends mostly on your workflow. If you won't ever customise anything, Emacs would be a hassle. But if you want to automate common stuff, Emacs is worth it....

        Would you say that Emacs/Org Mode could work for long-form novel writing?

        You think Emacs would work for me?

        Yes, and yes-ish. In the sense that it depends mostly on your workflow. If you won't ever customise anything, Emacs would be a hassle. But if you want to automate common stuff, Emacs is worth it.

        It could definitely do long form novel writing. With Org mode you can follow the progress of your writing, manage what to write when, make notes that won't be in the end result, comment in between paragraphs (and even lines, with a little bit of customisation), use different views to look at your overall structure. It is more text/keyboard oriented than something like Scrivener, tho. Below, I list a few modes for things you list, feel free to ask anything else.

        WRT the rug pulled under you, Emacs has been alive for a few decades by now, and is experiencing a kind of boom lately. It will never die. There are lots of people like me, who use it for many purposes. Even tho as of late I'm moving away from Emacs for some certain things (viewing PDFs and possibly feeds), I'll keep it for decades to come, and people like me will keep it alive (I'm keen to learn enough to contribute to core in the future, even if it's only bugfixes).

        • Focus mode: There is writeroom-mode and olivetti. This, with a full screen window should cut it. You could hide the informative line at the bottom of the window, the "mode line", but I'd advice against that.

        • Dark mode: there is a whole slew of those, Emacs includes Misterioso which I like, the Emacs Dracula theme is so fucking beautiful I can't describe it. Here is a listing of Emacs themes with screencaps.

        • Auto spellchecking: I don't use this, but there is some info here, here and here. Specifically, the flyspell mode will do auto spell-checking.

        • Word counts: There is this, this, and this; the function in the Worg website is what you need. Turns out I wanted something like this too, so I'll adapt that to have a display for buffer word count, and post it here as another reply.

        • Goals: I found this, which can work with the above function once I adapt it. I haven't used this functionality before, so I can't really comment.

        So, as you see, Emacs involves some complexity, but it can be quite useful.

        2 votes
        1. [3]
          Comment deleted by author
          Link Parent
          1. [2]
            unknown user
            (edited )
            Link Parent
            Org mode can handle that structure, I know Kitchin and a few other folks write books in Emacs, and I've heard novelists and other non-techie writers use it. I don't have experience with that tho,...

            Org mode can handle that structure, I know Kitchin and a few other folks write books in Emacs, and I've heard novelists and other non-techie writers use it. I don't have experience with that tho, but I can say this: if I was to write a book, I'd do it in Org mode. I'd probably use one of the methods described here or here (SETUPFILE) to split chapters or acts (tho just one single file should work nicely too), and export to PDF (tho probably there is an ebook exporter).

            You put your settings in ~/.emacs/init.el, it gets loaded as Emacs starts up. Mine is a big, but rather nicely documented one. You don't need something that big tho, Enabling a few modes, setting some stuff, you'd end up at most 100 lines, and you can definitely keep that stable for years if not decades.

            Emacs is perfectly cross platform, and would handle line endings well so that you can work with line-feed-terminated lines (Unix style) on macOS (where it is carriage return instead) or Windows (CRLF) without modifying the file. There are platform-dependent settings, but I don't think you easily run into them (tho I've only used Emacs on Linux and FreeBSD).

            Org files are just plain text, any sync platform would sync them perfectly, and you can use Emacs on whatever machine to view them. If you configure it extensively you might need to have your Emacs setup handy on all machines if you want to export, but otherwise should be totally okay. Org mode syntax is kinda similar to Markdown anyways, so you can edit with any text editor (and lots of them understand Org mode to some degree).

            Regarding the word counting setup I promised, I wrote it and will append it to this comment. I could not figure out how wc-goal-mode actually works, tho, so I just made it use the org mode word counting function and left it at that. You can add this to the modeline so that it always shows, but the org mode word counter function is rather slow, so, not encouraged. If anyone still wants to do that, just add '(:eval (wc-goal-mode-update)) to somewhere in mode-line-format. In my setup, I will map gk-org-word-count to some key and use it manually instead.

            (require 'org-element)
            (require 'wc-goal-mode)
            
            ;;; org word count:
            ;; From https://orgmode.org/worg/org-hacks.html
            ;;
            ;; «Count words in an Org buffer
            ;;
            ;; Paul Sexton posted this function to count words in an Org buffer:»
            ;;
            ;; This version includes some fixes, so not only an aesthetic
            ;; modification.
            (defun gk-org-word-count
                (beg end &optional count-latex-macro-args no-count-footnotes)
              "Report the number of words in the Org mode buffer or selected region.
            Ignores:
            - comments
            - tables
            - source code blocks (#+BEGIN_SRC ... #+END_SRC, and inline blocks)
            - hyperlinks (but does count words in hyperlink descriptions)
            - tags, priorities, and TODO keywords in headers
            - sections tagged as 'not for export'.
            
            If the optional argument NO-COUNT-FOOTNOTES is non-nil, footnote
            text is ignored.
            
            If the optional argument COUNT-LATEX-MACRO-ARGS is non-nil, the word count
            includes LaTeX macro arguments (the material between {curly braces}).
            Otherwise, and by default, every LaTeX macro counts as 1 word regardless
            of its arguments.
            
            If called interactively (including with a keybinding), report the
            word count in the echo area and return nil.  If not, return the
            number."
              (interactive
               (if (region-active-p)
                   (list (region-beginning) (region-end))
                 (list (point-min) (point-max))))
              (unless mark-active
                (setf beg (point-min)
                      end (point-max)))
              (let ((wc 0)
                    (latex-macro-regexp "\\\\[A-Za-z]+\\(\\[[^]]*\\]\\|\\){\\([^}]*\\)}"))
                (save-excursion
                  (goto-char beg)
                  (while (< (point) end)
                    (cond
                     ;; Ignore comments.
                     ((or (org-at-comment-p) (org-at-table-p))
                      nil)
                     ;; Ignore hyperlinks. But if link has a description, count
                     ;; the words within the description.
                     ((looking-at org-bracket-link-analytic-regexp)
                      (when (match-string-no-properties 5)
                        (let ((desc (match-string-no-properties 5)))
                          (save-match-data
                            (incf wc (length (remove "" (org-split-string
                                                         desc "\\W")))))))
                      (goto-char (match-end 0)))
                     ((looking-at org-any-link-re)
                      (goto-char (match-end 0)))
                     ;; Ignore source code blocks.
                     ((org-between-regexps-p "^#\\+BEGIN_SRC\\W" "^#\\+END_SRC\\W")
                      nil)
                     ;; Ignore inline source blocks, counting them as 1 word.
                     ((save-excursion
                        (ignore-errors (backward-char))
                        (equal 'inline-src-block (car (org-element-at-point))))
                      (goto-char (match-end 0))
                      (setf wc (+ 2 wc)))
                     ;; Count latex macros as 1 word, ignoring their arguments.
                     ((save-excursion
                        (ignore-errors (backward-char))
                        (looking-at latex-macro-regexp))
                      (goto-char (if count-latex-macro-args
                                     (match-beginning 2)
                                   (match-end 0)))
                      (setf wc (+ 2 wc)))
                     ;; Ignore footnotes.
                     ((and no-count-footnotes
                           (or (org-footnote-at-definition-p)
                               (org-footnote-at-reference-p)))
                      nil)
                     (t
                      (let ((contexts (org-context)))
                        (cond
                         ;; Ignore tags and TODO keywords, etc.
                         ((or (assoc :todo-keyword contexts)
                              (assoc :priority contexts)
                              (assoc :keyword contexts)
                              (assoc :checkbox contexts))
                          nil)
                         ;; Ignore sections marked with tags that are
                         ;; excluded from export.
                         ((assoc :tags contexts)
                          (if (intersection (org-get-tags-at) org-export-exclude-tags
                                            :test 'equal)
                              (org-forward-heading-same-level 1)
                            nil))
                         (t
                          (incf wc))))))
                    (re-search-forward "\\w+\\W*")))
                (if (called-interactively-p 'any)
                    (message (format "%d words in %s." wc
                                     (if mark-active "region" "buffer")))
                  ;; If non-interactive, just return the number
                  wc)))
            
            ;;; wc-goal-mode:
            (defvar gk-original-wc-goal-count-words-function
              (cl-copy-tree wc-goal-count-words-function))
            
            (defun gk-new-wc-goal-count-words-function (&rest args)
              (apply
               (if (eq major-mode 'org-mode)
                   #'gk-org-word-count
                 gk-original-wc-goal-count-words-function)
               args))
            
            (setq wc-goal-count-words-function #'gk-new-wc-goal-count-words-function)
            

            Edit: fix a little bug in the code.

            3 votes
            1. [2]
              Comment deleted by author
              Link Parent
              1. unknown user
                Link Parent
                Hope it can be useful to you! Pandoc can help you convert stuff to and from Org mode, Markdown, Textile, HTML, etc. Also, as a final tip, I recently wrote this toot for someone, which I'll copy...

                Hope it can be useful to you! Pandoc can help you convert stuff to and from Org mode, Markdown, Textile, HTML, etc. Also, as a final tip, I recently wrote this toot for someone, which I'll copy over, can be helpful to you too:

                C means Ctrl, - means key combo
                
                C-h t (Ctrl+h, t): tutorial
                C-h i: Info manuals
                C-h f: help for function or macro
                C-h v: help for variavle
                C-h k: help for keybinding
                C-h S: find help in manual for symbol
                C-h Tab: list all kinds of help available
                
                Emacs is the self documenting editor, and it is great at it.
                
                There are also: Emacswiki, Emacs StackExchange and /r/emacs.
                
                Strongly suggest subscribing to Emacs Tangents mailing list.
                

                Feel free to DM me and ask anything. I may reply a bit late but I would love to help!

                2 votes
  2. [3]
    Comment deleted by author
    Link
    1. tindall
      Link Parent
      Big oof. That sucks. Even if it's missing some features, I'm sure the devs would be open to suggestions. It's a young piece of software.

      I was using Ulysses for a while to write my books, but then they switched to a subscription model (yeah, even though I gave them $80 or so for their macOS and iOS apps)

      Big oof. That sucks.

      If Zettlr has a focus mode, dark mode, word counting and word goals, and a good auto-spellcheck, I'll be a happy writer.

      Even if it's missing some features, I'm sure the devs would be open to suggestions. It's a young piece of software.

      1 vote
    2. NaraVara
      Link Parent
      I just checked the pricing and $5 is pretty yikes. I couldn't see justifying that unless I actually earned regular money from my writing. I've been using Byword, which I also felt was steep at $10...

      I was using Ulysses for a while to write my books, but then they switched to a subscription model

      I just checked the pricing and $5 is pretty yikes. I couldn't see justifying that unless I actually earned regular money from my writing. I've been using Byword, which I also felt was steep at $10 for the Mac app and another $5 for the iOS version. But at least those were 1 time payments. I'd have made that up in 3 months of Ulysses.

      That said, Byword is really barebones and I just use it as a basic note-taking/brainstorming app. I might have to check zettlr out if it's better suited to organizing thoughts in a more systematic way.

      1 vote
  3. hamstergeddon
    Link
    Big fan of markdown and I use it when taking notes via Remarkable. I'll have to give this a shot though, looks a bit more polished and feature-rich.

    Big fan of markdown and I use it when taking notes via Remarkable. I'll have to give this a shot though, looks a bit more polished and feature-rich.

    1 vote
  4. [2]
    moocow1452
    Link
    This would probably be a bad mesh for screenplays, wouldn't it?

    This would probably be a bad mesh for screenplays, wouldn't it?

    1 vote
    1. tindall
      Link Parent
      I don't particularly see why - it's focused, first and foremost, on writing, not on any extraneous formatting, so you might have to do some post-writing work to format it just so, but basically,...

      I don't particularly see why - it's focused, first and foremost, on writing, not on any extraneous formatting, so you might have to do some post-writing work to format it just so, but basically, it'll let you write whatever you want.

      1 vote
  5. [10]
    Staross
    Link
    No version control ? Doesn't seem very serious. I'd go with authorea instead.

    No version control ? Doesn't seem very serious. I'd go with authorea instead.

    1 vote
    1. [9]
      tindall
      Link Parent
      It's Markdown, so entirely plain text files, making it "bring your own version control", which is a huge bonus in my book. I don't think condemning a new piece of software as insufficiently...

      It's Markdown, so entirely plain text files, making it "bring your own version control", which is a huge bonus in my book. I don't think condemning a new piece of software as insufficiently "serious", whatever that means, is fair just because it's missing one feature that can be easily provided by complementary software and would be, for many people, an anti-feature.

      EDIT: Also, Authorea is not open source and looks like it's tied to some proprietary crapware on the server side anyway. They're not really comparable.

      6 votes
      1. [8]
        Greg
        Link Parent
        I totally agree with you, but given the target audience it'd quite probably benefit them to bundle a simple git front end with the product and make it the default method of saving. Good version...

        I totally agree with you, but given the target audience it'd quite probably benefit them to bundle a simple git front end with the product and make it the default method of saving.

        Good version control is so fundamental to a lot of us that we forget just what a game changer it is, and introducing it effectively to an academic but not explicitly techie audience would be a huge win.

        3 votes
        1. tindall
          Link Parent
          I absolutely agree! I love version control and making it available to as many people as possible is a great idea. It's just that not having it doesn't make a product "not serious".

          I absolutely agree! I love version control and making it available to as many people as possible is a great idea. It's just that not having it doesn't make a product "not serious".

          2 votes
        2. [6]
          Staross
          Link Parent
          Asking social scientists to use git doesn't sound very realistic indeed, authorea has a wiki style history for example (and conflict are not possible by design). Comments and revisions are also...

          Asking social scientists to use git doesn't sound very realistic indeed, authorea has a wiki style history for example (and conflict are not possible by design). Comments and revisions are also important, there's a reason why people use word so much (I even knew physics professor using word).

          1. tindall
            Link Parent
            Conflicts are not possible in Git either if you only use a single master repository and don't use branches, which is what it sounds like your "wiki style history" makes available. That forces you...

            conflict are not possible by design

            Conflicts are not possible in Git either if you only use a single master repository and don't use branches, which is what it sounds like your "wiki style history" makes available. That forces you to be always online or risk getting out of sync, though.

            1 vote
          2. unknown user
            Link Parent
            That's increasingly not the case given digital humanities is growing fast and computational methods are used in all disciplines of social sciences. Increasingly, coding is a very useful skill even...

            Asking social scientists to use git doesn't sound very realistic indeed

            That's increasingly not the case given digital humanities is growing fast and computational methods are used in all disciplines of social sciences. Increasingly, coding is a very useful skill even for a literary theorist, even if only to load some text and make some graphs.

            Coupled with somehting like Magit or VSCod(e|ium)'s Git plugin, git is rather easy to use for a very basic workflow.

            1 vote
          3. [3]
            Greg
            Link Parent
            My thinking for "simple git front end" would be something along the lines of every save transparently becoming a commit to master, and if the user opens the "history" menu they can browse through...

            My thinking for "simple git front end" would be something along the lines of every save transparently becoming a commit to master, and if the user opens the "history" menu they can browse through a list of timestamps and choose to compare or roll back to a given point. Almost trivial to implement, zero learning curve above normal document saving, but still very powerful.

            Why use git at all if much of the functionality is hidden? Because it already exists and works, and because that way it is still open and compatible with other tooling that power users may want. It even lends itself beautifully to online collaboration with a few tweaks of the gitlab UI.

            Comments and revisions are also important, there's a reason why people use word so much

            Almost every MS Office user I've seen has a mishmash of timestamped filenames, revision-numbered filenames, and internal change tracking/redlining that crosses the boundaries of both. I'd strongly suggest that people use it not because it's actually the right tool for the job, but because it's baked into the tool they know and is sort of almost adequate.

            So far nobody has packaged, explained, and marketed a dedicated version control tool in a way most users understand - largely because it's an inherently complicated topic. I think that a text driven editor aimed at a savvy and educated but not explicitly technical audience may well be just the right place to start!

            1. [2]
              Staross
              Link Parent
              I was on a rather large paper (like 10 authors) written with word, it was a big mess. But sometimes people are used to it and you have to adapt to them.

              I was on a rather large paper (like 10 authors) written with word, it was a big mess. But sometimes people are used to it and you have to adapt to them.

              1. Greg
                Link Parent
                Oh yeah, I've been there. That's one of the main reasons I'd like to see it fixed in a consumer-friendly way! That and the fact that I feel like I've lost an arm on the rare occasions that I need...

                Oh yeah, I've been there. That's one of the main reasons I'd like to see it fixed in a consumer-friendly way! That and the fact that I feel like I've lost an arm on the rare occasions that I need to collaborate on an Excel document and I realise there aren't convenient branch and diff options...

  6. unknown user
    Link
    This seems quite nice, though not quite such a good fit for my workflow as VNote, which does a similar thing. I may be slightly biased by the fact that I have already worked out how to patch VNote...

    This seems quite nice, though not quite such a good fit for my workflow as VNote, which does a similar thing.

    I may be slightly biased by the fact that I have already worked out how to patch VNote to use AsciiMath instead of LaTeX math, however :)

    1 vote