Smart notebooks

I’ve been using both for writing mathy class notes and for taking random notes of all sorts. The search feature is pretty good at finding what I am looking for, but I decided to try something different: Smart Notebooks. The idea is that you write one or more queries in the document, e.g.,@search[elm], then press refresh to get a “notebook” whose table of contents consists of links that match they query. Click on any one of these links to view the document — like the one you see below.

Here is a demo smart notebook You won’t be able to edit or run he search, but you do see the result of the search. Open an account at and try it out if you are interested A more technical discussion continues below the image.


  • The app is built with lamdera, which is awesome.

  • Notes can be in Markdown, MiniLaTeX, or plain text. The markdown supports math, LaTeX style. Except for plain text, code blocks can use syntax highlighting via Pablo Hirafuji’s Elm Syntax Highlight package

  • The search feature is quite versatile. @search[elm javascript] finds documents mentioning both “elm” and “javascript.” This means that these words occur in the document’s keystring, which concatenates the title, author, and tags. The query @search[elm -javascript] finds documents mentioning “elm” but not “javascript”. These searches are case-insenstive. You can also do a full-text search, e.g. @search[text=quantum]. Full-text searches are case-sensitive.

  • Enclose strings with spaces in parentheses, e.g., @searc[text=(Niels Bohr)].

  • The @search[term term term …] construct defines a search on the conjunction of those terms. Suppose you say


    with one query below the other. Documents mentioning either “elm” or “javascript” are retrieved. This way you can do a disjunctive search.

  • Mathy note: the queries formed in this way are in so-called *disjunctive normal form," i.e., a disjunction of conjunctions. All queries involving the available primitives can be formulated this way.


This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.