Ich habe das Stylesheet meines Notebooks so modifiziert, dass es ein StyleData["Todo"]
enthält, das von StyleData["Item"]
erbt. Es ändert das Dingbat in eine Checkbox. Im Stylesheet-Editor:
Das Problem besteht darin, dass der Status des Kontrollkästchens in einem Notizbuch nicht zwischen Mathematica-Sitzungen gespeichert wird. Ich dachte, die DynamicModule[]
würde den Trick machen. Wie bekomme ich das Kontrollkästchen, um seinen Zustand zu erinnern?
BEARBEITEN
Simons Lösung speichert den Status des Kontrollkästchens, aber das Kontrollkästchen wird abgeschnitten, wenn es als CellDingbat (MacOS X) verwendet wird. Wenn Sie den Code von Simon in eine CellFrameLabels-Option einfügen, wird der standardmäßige CellDingbat-Eintrag beibehalten. Hier ist, womit ich gegangen bin:
%Vor% Das Problem mit Ihrem Code (glaube ich) ist, dass ein neues DynamicModule
nicht jedes Mal erstellt wird, wenn Sie eine neue "ToDo" -Zelle erstellen. Es gibt also keinen Ort, an dem der Status jedes Checkbox
gespeichert werden könnte.
Die einfachste Lösung, die ich mir vorstellen kann, um den Zustand von Checkbox
für jede "ToDo" -Zelle zu speichern, ist, die CellDingbat
beim ersten Mal zu überschreiben, wenn Checkbox
aktiviert ist.
(Andere Optionen, mit denen ich gespielt habe, waren TaggingRules
,
Umschalten zwischen "ToDo" - und "ToDone" -Stilen, etc ...)
Aber auch eine einfache Checkbox
in CellDingbat
speichert ihren Zustand nicht. Versuchen Sie, den folgenden Befehl auszuführen, und durchlaufen Sie dann die Ausgabe durch einen Show Ausdruck Zyklus.
Um das zu umgehen, habe ich Checkbox
mit dem bestimmten Argument True
oder False
verwendet, das in eine Schaltfläche eingepackt ist, die den Status ändert. Das ist dumm und ineffizient, aber es funktioniert!
Also, mein Code für den Zellenstil
%Vor%
Ich bin nicht glücklich mit dieser Lösung, aber es ist das Beste, was ich mir ausgedacht habe. Eine Verbesserung wäre, den Tastenfunktionscode aus der Zelle zu entfernen, damit er nicht für jede geprüfte ToDo-Zelle wiederholt wird. Damit es auch ohne ReplaceAll
läuft, wird der Kernel nicht benötigt und die Funktion kann nur mit dem Frontend ausgeführt werden.
Tags und Links wolfram-mathematica stylesheet