Ich kann Daten folgendermaßen berechnen:
#+NAME: mytbl
| # | [2014-12-14 Sun] | 30 | <2015-01-13 Tue> |
#+TBLFM: $4=$2+$3;D
aber was ich dann tun möchte, ist, dieses Datum als Tagesordnungsdatum erscheinen zu lassen, so etwas wie:
DEADLINE: $remote(mytbl,@1$4)
aber das funktioniert nicht. Ich kann keine Syntax finden, auch kein Makro, das alles andere als ein wörtliches Datum für einen Tagesordnungseintrag zulässt.
Irgendwelche Ideen?
org-mode
org-agenda
jtgd
quelle
quelle
org-mode
und (meiner Meinung nach) nicht einfach geändert werden kann - es gibt sogar einen Beachten Sie in der Dokumentzeichenfolge die Zeitstempelvariable, die davon abrät, sie zu optimieren.org-time-stamp-formats
ist eine Variable definiert inorg.el
. Sein Wert ist("<%Y-%m-%d %a>" . "<%Y-%m-%d %a %H:%M>")
Diese Variable kann riskant sein, wenn sie als dateilokale Variable verwendet wird. Dokumentation: Formate, fürformat-time-string
die Zeitstempel verwendet werden. Es wird nicht empfohlen, diese Konstante zu ändern. Siehe auch das benutzerdefinierte Zeitstempelformat: orgmode.org/manual/Custom-time-format.html#Custom-time-formatAntworten:
Versuche dies:
Berechnen Sie die Frist in einem Tabellenkalkulations aka Tabelle .
Erstellen Sie mit der Funktion eine neue 1x1-Tabelle, die auf die berechnete Frist aus der ersten Tabelle verweist
remote(NAME-OR-ID,REF)
.Übergeben Sie die Termintabelle 1x1 als Variable über den Header
:var name=value
an den benanntenSRC
Block , z. B. den elisp- Codeblock set_deadline unten.Bewerten Sie den SRC-Block mit C-c C-cund die Frist wird der org-mode-Datei unter einem
#+RESULTS:
Block hinzugefügt .Durch Hinzufügen des
:results raw
Headers zum Codeblock wird die Ausgabe im Format org-mode als reguläre org-Anweisung erkannt.Als zusätzlichen Bonus fördert die Verwendung eines benannten src-Blocks auch die Wiederverwendung von Code über Inline-Funktionsaufrufe.
Bewerten Sie nach wie vor jede Inline-Funktion mit C-c C-cund fügen Sie der Organisationsmodus-Datei eine neue Frist hinzu.
Hoffe das hat geholfen!
Hinweis: Dieser Code wurde mit den folgenden Versionen von Emacs und Org-Mode getestet.
quelle
replace
nicht wie erwartet verhalten, versuchen , zu aktualisierenraw
Header mitdrawer
Kopf. Nachdem ich gewechselt hatte, funktionierte alles wie erwartet. Hoffe das hat geholfen! Vielen Dank für Ihre Frage und Ihren Elisp-Code!drawer
Ding funktioniert jetzt perfekt. So viel über den Org-Modus zu lernen, schön, Zauberer wie Sie zu haben. Was Ihre anderen geposteten Beispiele betrifft, habe ich eines ausprobiert und es funktioniertraw
ohne Anhängen. Aber meine Bewerbung funktioniert und ich bin glücklich.Vielen Dank Melioratus, was für eine hervorragende Antwort! Es ist erstaunlich, wie Sie die verschiedenen Mechanismen des Org-Modus verwendet haben, um dies zu tun. Der wichtigste Teil davon war für mich,
:results raw
welcher Text ausgegeben wurde, der bei der Erstellung der Agenda erneut gescannt werden sollte. Das war der Schlüssel.Als ich mir ansah, wie ich dies erweitern könnte, um viele Daten zu verarbeiten, fragte ich mich, ob ich die Datumsberechnungen nicht einfach in elisp durchführen könnte. Ich bin noch sehr neu in Elisp, aber ich habe ein bisschen herumgehackt und mir das ausgedacht.
Meine Aufgabe besteht darin, das Datum zu berechnen, an dem meine Medikamente aufgebraucht sind, indem ich dem Tag, an dem ich mit der Flasche beginne, 30 Tage hinzufüge. Was ich getan habe war das.
In meinen .emacs habe ich einige Funktionen geschrieben:
Ich habe versucht, diese Funktionen generisch zu halten und mich nicht auf die Medikamente zur Wiederverwendbarkeit zu konzentrieren. Es könnte bessere Möglichkeiten geben, dies zu tun, wie ich sagte, ich bin ein Neuling.
Dann mache ich in meiner .org-Datei Folgendes:
Schön und ordentlich, eine Zeile pro Instanz. Wenn Sie Cc Cc für den Block ausführen, werden die Überschrift und die FRIST mit Datum generiert und es wird perfekt in der Agenda angezeigt. Es funktioniert gut und ich bin mit den Ergebnissen zufrieden. Nochmals vielen Dank für den Tipp an Sie und Lawlist.
ps Das einzige, was nicht funktioniert, ist das
replace
. Es wird immer an den Block # + RESULTS angehängt, daher muss ich ihn löschen, bevor ich ihn generieren kann. Es ist geringfügig, aber ich verstehe nicht warum.quelle