Welche Sprachen gibt es für Notizen (nicht Markdown)?

Hinweis: Diese Frage ist sehr spezifisch für die Erforschung von Informatiksprachen. Die Comp Sci SE-Community hielt es für das Beste, hier statt dort zu posten.

Ich liebe es, Notizen in meiner nativen Programmierumgebung zu machen, aber ich bin es leid, einfachen weißen Text mit loser Struktur zu haben. Ich suche nach einem Sprach- oder Datenaustauschformat, nicht nach Markdown oder cleveren Emacs-Tricks.

Ich bin neugierig auf eine neue Lösung für Notizen, die einen leichten Aspekt der Programmierung beinhaltet. Dies könnte eine DSL sein, aber ich suche wirklich nicht nach etwas wie Git-Markdown. Was ich mir vorstelle, ist so etwas wie unten. Die Syntaxhervorhebung könnte helfen, Aspekte von Notizen visuell zu trennen, und ich kann mir vorstellen, in einem Kompilierungsschritt etwas Spaß beim Verknüpfen und Strukturieren zu haben.

Das Erstellen dieser Sprache wäre ein lustiges Forschungsthema für mich, aber ich möchte sehen, ob es schon einmal gemacht wurde. Das sieht ein wenig pythonisch aus, aber ich stelle mir so etwas vor (oder könnte so kompiliert werden):

topic
    an elementary intro to fruit

concept
    fruit exists in many different colors, shapes, and sizes

list:[colors, shape, size]
    orange
        colors: orange, green, yellow
        size: small
        shape: round
    banana
        colors: yellow, green
        shape: long

terms
    fructose: something to do with sugar
    hue: a form of color

related
    trees > tree-fruits.txt
    humans > ../human-notes/
    farms > ../../farms
Können Sie erklären, was mit Markdown nicht stimmt?
@svick Markdown ist in Ordnung, ich will nur keinen Markdown. Markdown wird wie HTML verwendet: für Layout und Hervorhebung. Ich möchte mehr tun, nachdem ich meinen Text in einer Syntax strukturiert habe (dh Bedeutung erschließen).
Was für eine Bedeutung? Was ich in Ihrem Beispiel sehe, sind Überschriften, Links, ungeordnete Listen und Definitionslisten. Von diesen unterstützt Markdown alle außer Definitionslisten, aber selbst diese scheinen von einigen Dialekten unterstützt zu werden .
Sie sollten sich Org ansehen, wenn Sie emacs verwenden. Auch wenn Sie emacs nicht verwenden, ist Org das Erlernen wert.
@svick Ich bin mir nicht sicher, ob dies ein Problem mit Markdown an sich ist , aber die Implementierung in Sublime Text 3 für Windows lässt zu wünschen übrig.

Antworten (2)

Wenn Sie nach einem für Menschen schreibbaren Format suchen, um strukturierte Daten anzugeben (im Gegensatz zu nur für Menschen lesbaren Formaten wie JSON und XML), werfen Sie einen Blick auf YAML . Es ist nicht spezifisch für Notizen, aber ich denke, es könnte hier funktionieren.

Damit könnte Ihr Beispiel folgendermaßen geschrieben werden:

topic:
    an elementary intro to fruit

concept:
    fruit exists in many different colors, shapes, and sizes

list:
    orange:
        colors: [ orange, green, yellow ]
        size: small
        shape: round
    banana:
        colors: [ yellow, green ]
        shape: long

terms:
    fructose: something to do with sugar
    hue: a form of color

related:
    trees: tree-fruits.txt
    humans:  ../human-notes/
    farms: ../../farms
Großartig - ich habe Yaml nie in Betracht gezogen, aber ich denke, es könnte den Kontext widerlegen

Ich denke, es wäre Ihre Zeit wert, sich das Sphinx -Tool zur Erstellung von Python-Dokumenten anzusehen. Es wurde ursprünglich für die neue Python-Dokumentation erstellt und stützt sich stark auf Restructured Text .

Ziele des umstrukturierten Textes:

Von der Website.

  1. Lesbar. Der markierte Text muss ohne Vorkenntnisse der Auszeichnungssprache gut lesbar sein. Es sollte in roher Form genauso gut lesbar sein wie in verarbeiteter Form.
  2. Unaufdringlich. Das verwendete Markup sollte möglichst einfach und unauffällig sein. Die Einfachheit von Markup-Konstrukten sollte ungefähr proportional zu ihrer Verwendungshäufigkeit sein. Die gebräuchlichsten Konstrukte mit natürlichem und offensichtlichem Markup sollten die einfachsten und unauffälligsten sein. Weniger gebräuchliche Konstrukte, für die es kein natürliches oder offensichtliches Markup gibt, sollten unterscheidungskräftig sein.
  3. Eindeutig. Die Markup-Regeln dürfen nicht interpretierbar sein. Für jede gegebene Eingabe sollte es eine und nur eine mögliche Ausgabe geben (einschließlich Fehlerausgabe).
  4. Nicht überraschend. Markup-Konstrukte sollten bei der Verarbeitung keine unerwartete Ausgabe verursachen. Als Ausweichlösung muss es eine Möglichkeit geben, eine unerwünschte Markup-Verarbeitung zu verhindern, wenn ein Markup-Konstrukt in einem Nicht-Markup-Kontext verwendet wird (z. B. beim Dokumentieren der Markup-Syntax selbst).
  5. Intuitiv. Auszeichnungen sollten so offensichtlich und einprägsam wie möglich sein, sowohl für den Autor als auch für den Leser. Konstrukte sollten sich an natürlich vorkommenden Quellen wie Klartext-E-Mail-Nachrichten, Newsgroup-Beiträgen und Textdokumentationen wie README.txt-Dateien orientieren.
  6. Einfach. Es sollte einfach sein, Text mit jedem gewöhnlichen Texteditor zu markieren.
  7. Skalierbar. Das Markup sollte unabhängig von der Länge des Textes anwendbar sein.
  8. Mächtig. Das Markup sollte genügend Konstrukte bereitstellen, um ein einigermaßen reich strukturiertes Dokument zu erstellen.
  9. Sprachneutral. Das Markup sollte für mehrere natürliche (sowie künstliche) Sprachen gelten, nicht nur für Englisch.
  10. Erweiterbar. Das Markup sollte eine einfache Syntax und Schnittstelle zum Hinzufügen komplexerer allgemeiner Markups und benutzerdefinierter Markups bereitstellen.
  11. Ausgabeformatneutral. Das Markup ist für die Verarbeitung in mehreren Ausgabeformaten geeignet und nicht auf ein bestimmtes Format ausgerichtet.
So nett dieses Dokumenterstellungstool auch aussieht, das Ziel, das ich anstrebe, ist nicht die Erstellung einer strukturierten Dokumentation, sondern die Bereitstellung einfacher Sprachkonstrukte, während ich Notizen zu irgendetwas (dh nicht programmierungsbezogenen) eintippe.
Das ist der umstrukturierte Textteil - Sphinx wird verwendet, um alles zusammenzuführen.