Writing complex documents (books, research) with DT3: which setup and workflow do you use?


I write complex documents such as books, research, (very) long form articles.
I use Ulysses, but I feel redundant, so I wonder if I can have the same features on DT3: it would reduce the cognitive load.

This is how I use Ulysses:

  1. I work on Markdown files
  2. Each chapter and subchapter is a file
  3. I can change the order of the files, and it reflects the new structure of the document
  4. With Ulysses I can export the whole document (that is made of several files), and the order of the chapters reflects the order of the files, so that I don’t have to copy paste each file into a new .doc file
  5. I can export the whole document in ePub, PDF and .doc

Can I do this on DT3?

Another feature I use a lot on Ulysses is Statistics: here I can count the characters, words, pages of a single file (chapter) but also of the whole document (many files put together as a whole document).
Can I do this on DT3?

Hope it makes sense.

Thank you!

You can use file transclusion (a MultiMarkdown feature) to display the contents of one Markdown file in another.

You cannot get statistics on transcluded content as the content isn’t actually part of the file. It’s merely displayed. Development would have to assess the feasibility of this.


Thank you very much: I totally forgot that feature.
I’ll have a test and see what happens if I export the master file.
As for the statistics, it’s something I can manage.

You’re welcome :slight_smile:

DEVONtech’s free WordService got a statistics feature. If you select some text you’ll find it in the contextual menu under Services.

I use my DT extensively as a large academic research library. There’s nothing remotely as good for this ( in fact, I couldn’t easily live without it now). I also increasingly write short-form notes in DT, in markdown. Somewhat longer documents are also fine, and navigating these has become easier by using headers that you can click in the inspector ‘Table of Contents’ (some third party md editors also offer this functionality, e.g. Typora). But what you are using Ulysses for (free rearranging; and exports of multiple files to one other format) isn’t yet available in DT (to the best of my knowledge; or perhaps it could be scripted, but that’s not my forte). The power offered by Ulysses in that regard, or in my case, by writing in Scrivener, isn’t something I’d be prepared to give up. So I don’t do more serious long form writing in DT (yet). There are plenty of ways in DT to manually re-arrange the order in which md files are displayed, but I think that this would quickly become unwieldy when you are dealing with a big pile of them (in chapters, or indeed, chapters split into sections split into paragraphs, as I tend to work).

Happy writing!


Damn, this is cool.

I mean, it’s obvious in hindsight but it’s one of those “look what this unlocks” features that’s not obvious when just thinking of “plain markdown docs”.

1 Like

That’s why it’s a good idea to spend some time reading the release notes and testing new features in order to see whether they could be useful. :slight_smile:


Transclusion is really great! Where it gets trippy is when you try to transclude a transcluded document into a “meta-transclusion”… and it actually works :nerd_face: :wink:

1 Like

Oh oh oh! That’s a great idea. Nested transcluded documents.

Agreed, I’ve used IA Writer in the past, and I had many files (a file per each paragraph) and used to transclude them (IA Writer has a “native” feature for it).

For a long article I had nested transclusions.
Pro: moving a section up or down was as easy as copy/paste a portion of text, all just using Markdown and never going away form the keyboard.
Cons: a real pain afterwards when I had to relocate a section fro ma chapter to another one.

Having a graphical interface for it is much friendly.

Anyways, I use Ulysses only for the writing part.
I use mindmaps for brainstorming and organizing the sections.

1 Like

I’ve used Scrivener in the past for the same nesting/transcluding/reorganizing, but I realized I was relying on that as a cheat for outlining, so I’m trying to move away from Scrivener and simply be more deliberate in making outlines.

How about have a list of unsorted documents in a folder, and drag them into any order you want. Then use the merge documents feature to put it all together?

It’s a good workaround (also replying to @lutefish ).

Because I use mindmaps as outlines, I can get rid of the need to have a structure into the folder.

Another workaround would be having a “master document” with the transclusions, that appear as a simple outline/index in the raw view.

This way changing the order of the chapters and the sections is just a matter of copying/pasting a string of text.
I don’t have to manage the order of the files, I can focus on the single files when I work on them…

If it works (I’m going to test this workflow) I can ditch Ulysses.

BTW: Ulysses is very good, but I want to have the less Apps as possible and avoid overlaps and redundancy.

1 Like

@IvanPsy Perhaps this script by @pete31 could also be useful in such a workflow.

It creates / updates a transclusion of all records contained in a group when selecting that group. So you would only need to reorder items, select the group and voilà…


I’d like to throw in just a little thing: If your document does include footnotes and you are not using MultiMarkdown’s random/inline footnotes—[^footnote content]—but the more common ones with footnotes anchors—[^1] … [^1]:footnote content—and only with simple numbers you will have a problem with file transclusion as you have many footnote anchors with the same number.

I’m a Scrivener user by the way and really happy with using it in combo with DEVONthink. Although it is a rich text app it imports Markdown with structure and footnotes intact.

I see. May I ask you what’s the benefit with indexing Scrivener inside DevonThink?

You can do that, but there’s no need to.

There’s a way of using Scrivener as the organiser / final compiler for your book, while keeping your research in DT3, and writing the actual words in iA Writer.

Basically, you use the External Folder Sync function in Scrivener, index that folder in DT3 (and set it up as a location in iA Writer as well if you want).

Designate the folder to use Markdown to use automatic sync and then:

  1. You can write your texts in iA Writer, where they will automatically appear in DT3

  2. When you next open Scrivener (or you sync manually), these documents will appear. You can move them around / edit them as much as you like (but make sure you use markdown syntax in Scrivener – *italics*, not italics – or they’ll be lost).

  3. When you close Scrivener / sync manually, any modified documents will be updated in the external folder. Any new documents created in Scrivener will appear in the External Folder. All External Documents will be in their Scrivener Binder order.

  4. When everything is done, you use Scrivener to compile the final document, but you still have access to your entire text in DT3. (Scrivener also understands DT3 links natively).

It’s worth noting that footnotes and comments will be transferred both ways Footnotes appear as {{footnotes}} in the markdown, comments as ((comments)), but as standard Scrivener comments/footnotes in Scrivener.

For example, you can use Scrivener’s outlining tools (cork board/ outliner etc) to create your initial outline, then do the actual writing in iA Writer, knowing that everything will be ready to compile in the right order when needed, and that changes to the outline in Scrivener will be reflected.

NB: You don’t get this set up out of the box – there are quite a few options, and you will need to read the manual to get the details right, but there are a lot of advantages to this set up and if you already have Scrivener it’s definitely worth checking out.



I’m experimenting with a similar indexed situation with Curio. I want to use Curio as sort of a front end corkboard for Devonthink.

How is your luck with changing absolute paths to the DT database? For instance, syncing to a laptop where your login name may not be the same?

I don’t really know, because I always use the same login name on my devices (though different passwords!), so the problem doesn’t arise.