Not signed in (Sign In)

Vanilla 1.1.9 is a product of Lussumo. More Information: Documentation, Community Support.

    • CommentTimeSep 26th 2010

    I’d like to introduce the procedure which I use to add notes and annotations to my Ulysses documents.

    When I started working with Ulysses some years ago I used inline and paragraph styles to add annotations to my novel or short stories. I have skipped this option for two reasons. First Ulysses adds the number of words of the annotation to the word count of the document because there is yet no way to tell Ulysses that it should not consider parts of the text for counting characters and words. The second reason why I no longer use styles for annotations is more important for me: Annotations in the document disturb me while I am working on the document.

    Therefore I now place all my ideas, questions and remarks to a text passage in project or document notes which soon leads to the next problem. How could I find the note to a given text passage or see at all that I added a annotation to the passage when I worked on the document a few days ago? How could I find the passage that a given note comments? The solution is easy: I just add a special marker to the text passage which I want to annotate and use the same marker as the beginning of the note that contains the annotation. Of course I don’t want think about the marker when I add a note to a text passage. Instead I use proceure that first creates a new marker, inserts it in the current document than creates a new note and finally places the new marker at the beginning of the note. I call this procedure „automatically generated note markers“.

    Let me describe how the procedure works. To use it you need TextExpander ( and a Perl script which I wrote and called TallyClerk just counts how many notes any of your documents have in your Ulysses project and knows the number of the next note. You don’t have to start it yourself. TextExpander invokes it to create and insert the marker in the text passage and in the note. Let’s see how TextExpander and TallyClerk work together.

    Assume Ulysses is in teminal mode and that the document I am working on has already 12 notes. While I am writing I got an idea what consequences the actions of my character might have. So I type
    which I use as an abbreviation for a TextExpander snippet that inserts an a new marker for an idea. When I hit space TextExpander asks tallyclerk for the number of the next note and expands it to
    which Ulysess shows in blue because ‚[i‘ and ‘]]’ address a special inline style. To create a new note I use the keyboard shortcut ??+. In the note I type
    which is my TextExpander abbreviation for the current marker of an idea. TextExpander asks TallyClerk for the number of the current note, inserts
    [iN13-Idea: |]]
    and places the cursor at the ‚|‘ so that I write down my idea. Then I switch back the document. I quit Ulysess and shut my mac mini down because I have an appointment with Karin downtown . While I am waiting for Karin I boot my MacBook. After I have added a few lines to the Ulysses document I worked on at home some kind of problem arises in the text. So I type
    which I use as an abbreviation for a problem marker. TextExpander expands it to
    which Ulysses shows in red because ‚[p‘ and ‘]]’ stand for another inline style. In the note I type
    which is the abbreviation for the current problem marker. TextExpander expands it to
    [pN14-Problem: |]]
    and again I can immediately describe the problem because TextExpander has put the cursor at the ‚|‘.

    I hope you got the point. I have abbreviations for all sorts of comments: ideas, problems, open issues, things I need to research, .... When I export the project the LaTeX document will contain all the notes of the projects because Ulysses handles the various inline styles like ‚[i‘ / ‘]]’ and ‚[p‘ / ‘]]’ as footnote markers.

    TallyClerk and the TextExpander snippets are not bundled together in a package yet. But I would do that and write a more detailed documentation if some of you wants to try it.


    • CommentTimeSep 26th 2010

    This sounds really awesome, great idea. Ulysses has always been designed to allow third-party extensions and textexpander is definitely one of the best! One of the next versions will allow direct links between notes and tags and maybe your process becomes even shorter then...

    • CommentTimeSep 27th 2010
    Thank you, Sarah.
    A very interesting idea.

    I'd like to know more (since you offer ;-)

    I use Typinator to generate style markers, too, but I don't know how to get it to run a perl script (and I don't know how to write a perl script either).

    So I have a couple of questions.
    1) Would you mind explaining how you get TE to 'talk' to the perl script? (I assume Typinator can do the same.)

    2) Does your system of counting notes allow for adding a note *between* already-exisiting notes, rather than in strict succession? Ulysses of course is fine with having note IDs 'out of order', but I'm wondering whether your counting system can mange this; this would be in the perl script I suppose.

    (Of course I'd be delighted if Ulysses made 'direct links between notes and tags' possible...)

    • CommentTimeOct 1st 2010
    I see now how TextExpander does this. Very nice. (I don't think Typinator can do this.)

    So now I'm just wondering how to write a perl script to do this kind of counting.

    • CommentTimeOct 3rd 2010
    Hi jb,

    the perl script is quite simple. TallyClerk stores the counters in a simple text file. Each line of the file contains the name of the counter and its value. You can think of the file as a simple database of counters. TallyClerk understands a few commands to manipulate a textfile:
    1) select the current database, i.e. select the current file of counter
    2) select the current counter
    3) get the current value of a counter
    4) set the the current value of a counter
    5) get the next value of a counter
    6) get the previous value of a counter
    TallyClerk runs on the command line. Before it executes a command it reads the selected database, updates the selected counter, writes the database back to the file and returns the desired value. TE simply executes these commands and inserts the result. So TE can be seen as an user interface to TallyClerk.

    I dont know Typinator. If Typinator can call shell scripts or AppleSripts it should be easy to use TallyClerk commads in Typinator. If you are interested in TallyClerk you can contact me under aryasarah at yahoo dot de.