Configurer un wiki personnel En mode Emacs Org

j'aimerais configurer un wiki personnel en mode org.

jusqu'à présent, j'ai essayé de deux façons. Ma première tentative a été d'utiliser un seul "scientifique Notebook.org" file. Dans cela est allé toutes mes notes - chacun avec son titre, date et étiquettes propres (même format qu'un billet de blog). J'ai ensuite activé org-velocity pour naviguer rapidement dans le fichier.

mais cela a créé deux problèmes: d'abord, j'utilise beaucoup de mathématiques dans Mes notes (Latex previews sont l'une des raisons pour lesquelles je veux nous org). Mais ces soooooo mettre longtemps à charger, Je ne peux pas images en essayant d'ouvrir un fichier avec plusieurs milliers d'entrées (toutes remplies de mathématiques!!)

L'autre problème que j'ai est avec des balises. J'aime utiliser beaucoup d'étiquettes multi-mots pour croiser mes notes. Mais la façon dont org-mode enroule ça dans le tampon, rend mes rubriques complètement inintelligibles. Aussi (peut-être que c'est juste moi mais) je trouve CamelCase vraiment difficile à lire, surtout quand on fait face à quelque chose comme:

:monotonicTransformations:homogeneousFunctions:orderedSets:proofs:

Maintenant ma deuxième tentative est avec Habileté. Ici, j'ai divisé chaque note en sa propre .le fichier org et la création d'un dossier ~ / org / dédié pour tenir mon wiki. Mais c'est là que je suis bloqué:

1) Comment configurer la liaison automatique, de sorte que taper "foo bar" dans une note crée un lien vers "foo bar "bar.org"? Est-ce possible avec Radio target? Si ce n'est pas le cas, cette syntaxe [[foo bar]] peut-elle être dépassée pour rechercher des titres dans tous les fichiers du répertoire ~/org/? J'ai essayé D'ajouter Wiki.el comme mode mineur mais non dé...

2) comment étiqueter des fichiers individuels? Et comment pouvez-vous puis tirez une liste de toutes les balises et l'utiliser pour filtrer votre liste de notes? J'ai lu que bookmark+ vous permet de faire des tags de fichiers. Mais je me suis perdue dans les docs en ligne...

j'aimerais entendre comment d'autres ont résolu ces problèmes, quels modes mineur que vous utilisez, les flux de travail et des raccourcis clavier ou d'autres mods!

Merci!

Adam

10
demandé sur Adam 2014-10-31 10:13:27

2 réponses

avoir un seul fichier de notes est, à mon avis, plus flexible et compatible. Il tend, cependant, à obtenir lent pour même les fichiers de taille moyenne. Plusieurs petits fichiers sont rapides, mais ils nécessitent plus d'efforts pour être configurés, et ils ne fonctionnent que dans cette configuration.

Fichier Unique Solution

pour accélérer les choses, envisagez org-startup-with-latex-preview à néant (ou ajouter #+STARTUP: nolatexpreview à votre dossier).

les Tags ne deviennent pas seulement désordonnés lorsqu'ils sont utilisés pour des mots-clés, leur utilisation devient aussi plutôt lente que votre fichier augmente. J'ai joué avec quelques fonctions personnalisées, mais maintenant éviter les balises, la plupart du temps. J'utilise plutôt plat hiérarchies, catégories et autrement dépendent de se produire et org-se produire (par exemple M-x org-occur begin_proof).

Plusieurs Fichiers

la syntaxe org pour les liens vers d'autres fichiers est assez simple:[[./this idea.org][this idea]]. Si c'est trop compliqué, il devrait être facile d'écrire une fonction qui remplace la région active avec un lien approprié.

Si vous voulez pour lier [[this idea]] vers un fichier", ce idea.org", vous pouvez ajouter une fonction à org-open-at-point-functions et gérer vous-même.

en ce qui concerne les tags, vous ne taggez pas un fichier lui-même, mais plutôt un titre unique de haut niveau. Bien sûr, cela signifie que tous vos problèmes avec les balises d'un retour. Encore une fois, je recommande de ne pas utiliser de tags. Juste assurez-vous que le fichier contient les bons mots-clés aux bons endroits et utiliser occur et des amis.

Modifier: Un Exemple `org-ouvert-au-point-fonction'

si vous voulez rechercher un lien flou dans tous les fichiers d'un répertoire au lieu du tampon courant, vous pouvez le faire en utilisant le org-open-at-point-functions crochet. Voici un exemple:

(defvar my-link-search-directory "/my/notes/directory/")

(defun my-open-link-function ()
  "Open link, interpreting it a the name of a headline."
  (let* ((el (org-element-context))
         (type (first el))
         (link-type (plist-get (cadr el) :type))
         (path (let ((path-1 (plist-get (cadr el) :path)))
                 (when (stringp path-1)
                   (org-link-unescape path-1)))))
    (when (and (eql type 'link)
               path
               (string= link-type "fuzzy"))
      (let* ((path (regexp-quote path))
             (result
                 (delq nil
                       (org-map-entries
                        (lambda ()
                          (when (string-match
                                 path
                                 (org-get-heading))
                            (list (buffer-file-name) (point))))
                        nil
                        ;; Here we set the scope.
                        ;; 'agenda would search in all agenda files.
                        ;; We want a list of all org files in `my-link-search-directory'.
                        (directory-files
                         my-link-search-directory
                         t "[.]org\'")))))
        (when result
          (when (> (length result) 1)
            (message "Warning: multiple search results for %s" path))
          (let ((file (caar result))
                (pos (cadar result)))
            (find-file file)
            (goto-char pos)))))))


(add-hook 
 'org-open-at-point-functions
 'my-open-link-function)

notez que je n'ai pas testé autant.

en fait, je recommande de ne pas utiliser ceci sauf si vous vraiment besoin d'elle. Alors que faire des extensions de fantaisie est tentant, garder vos notes aussi simple que possible est de préférence. Si vous avez tout dans un fichier, vous pouvez éditer vos notes avec notepad ou google docs ou n'importe quoi, si vous en avez besoin.

3
répondu olaf b 2014-11-06 21:05:05

j'utilise un code simpliste pour un wiki. Parce que c'est ce qu'un wiki est pour moi:rapide manière de catégoriser les choses. La structure est la suivante:

  • chaque sujet a son propre fichier org
  • chaque sujet a sa propre rubrique
  • tous org fichiers sont dans le répertoire
  • vous pouvez sauter dans un fichier ou créer un nouveau fichier avec helm

C'est ça. J'ai trouvé le besoin de relier n'importe quoi à quoi que ce soit, la fonctionnalité de saut à sujet c'est plus que suffisant. Voici à quoi cela ressemble:

jump to subject

Et une fois dans un sujet, je peux sauter dans les rubriques worf. Voici à quoi cela ressemble:

jump to topic of subject

8
répondu abo-abo 2014-10-31 13:18:42