I'm trying to create a keyboard shortcut to add date to my class notes in Lyx so that they are organized better. I want the shortcut to add the notes on the left.

That is, I just want to add the following, with the current date each time.

enter image description here

The following keyboard shortcut does half the job:

command-sequence ert-insert; self-insert \reversemarginpar; char-forward; marginalnote-insert; self-insert 2017-05-07; char-forward

However, the date is not assigned dynamically. Is it possible to make the date be filled automatically based on current writing (not compiling) date?

  • Have you tried after the self-insert to simply put \today? – Gal Grünfeld May 11 '17 at 13:40
  • @GalGrünfeld This adds the day of compilation and not the day of adding the comment. – tmrlvi May 11 '17 at 13:49
  • Untested idea: define a dummy 'converter' to call an external script that puts the date in a file, e.g., currentdate.tex, then in your keyboard shortcut call the converter and self-insert \input{currentdate.tex}. – Marijn May 11 '17 at 14:33
  • @Marijn It will work only once, no? If I use the keyboard shortcut twice in a single document, then I'll get the same value in both places. – tmrlvi May 11 '17 at 15:03

The solution is to use the LyX command date-insert instead of self-insert. It receives a parameter for the date format, in strftime format (e.g. %Y-%m-%d).

I.e., the full keyboard binding is:

command-sequence ert-insert; self-insert \reversemarginpar; char-forward; marginalnote-insert; date-insert; char-forward

All the commands appear in LyX Wiki, but without much documentation. The source code contains complete and thorough documentation, so it is easier to find the needed commands there.

As for possibility to use self-insert for dynamic input, by looking at the source, it seems that it only copies the text as is, as if it was inserted using keyboard.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.