Compare commits

...
10 Commits
2 changed files with 237 additions and 2 deletions

No files matched your search

+1 -1
View File
@@ -29,7 +29,7 @@ conteggio di parole *{{{word-count}}}*. ]
#+latex: \newpage
#+latex: \clearpage
Only for test autocommit delle 14:01
* \to Esigenze: :@ToReview:
:PROPERTIES:
+236 -1
View File
@@ -29,7 +29,6 @@ conteggio di parole *{{{word-count}}}*. ]
#+latex: \newpage
#+latex: \clearpage
Test autocommit delle 10:01
* \to Esigenze: :@ToReview:
:PROPERTIES:
@@ -678,6 +677,20 @@ completamente rotto Emacs.
(setq native-comp-async-report-warnings-errors 'silent))
#+end_src
** Salvare in automatico tutti i buffer ogni ora:
:PROPERTIES:
:ID: 20260531T144156.765250
:END:
Siccome ho lo script che fa il commit ogni ora dei documenti, il minuto
precedente, lancio il comando di salvataggio di tutti i buffer in emacs, così
posso committarli e mantenere il backup di tutto usando gitea.
#+begin_src emacs-lisp :tangle "~/.emacs.d/init.el"
;; Dalle 00:00 e ripetuto ogni ora:
(run-at-time "00:00" 3600 'org-save-all-org-buffers)
#+end_src
** Impostazione per mandare ~custom-file~ nell'oblio:
:PROPERTIES:
:ID: 8f4ba6e8-b50c-49c3-aa88-5451986e0fdc
@@ -810,6 +823,9 @@ Imposto come formato di default dei file: UTF8
:PROPERTIES:
:ID: 89b37a37-0f9b-42f6-9afa-bbe3648a04df
:END:
:BACKLINKS:
[2026-05-31 dom 16:28] <- [[id:20260531T154957.127764][Imposto il pacchetto: org-super-links]]
:END:
Gli eventuali codici lisp custom, che voglio utilizzare, li metterò manualmente
nella cartella =~/.emacs.d/MyAddOn/= e devo fare in modo che emacs li carichi
@@ -1427,6 +1443,114 @@ Carico il file con la configurazione della UI che descrivo [[id:3a5bad5e-b492-44
(load "~/.emacs.d/org-init.el")
#+end_src
** Uso dei pacchetti zip e find di unix:
Per prima cosa ho scaricato gli eseguibili dal progetto [[https://gnuwin32.sourceforge.net/packages.html][GnuWin32]] e li homessi
nella cartella =C:\MyTools\GnuWin32=. Quindi ho configurato emacs per caricare
quella cartella in modo che ritrovi i relativi eseguibili.
#+begin_src emacs-lisp :tangle "~/.emacs.d/init.el"
;; 1. Aggiunge la cartella con zip.exe e unzip.exe ai percorsi di Emacs
(add-to-list 'exec-path "C:/MyTools/GnuWin32")
;; 2. Disattiva il vecchio standard PKZIP (obbligatorio su Windows moderno)
(setq archive-zip-use-pkzip nil)
;; 3. Definisce i comandi esatti per la gestione degli archivi zip
(setq archive-zip-program "zip")
(setq archive-zip-extract '("unzip" "-qq" "-c"))
;; Verifica che sta prendendo gli eseguibili voluti:
;; (executable-find "zip") C-j --> "c:/MyTools/GnuWin32/zip.exe"
;; (executable-find "unzip") C-j --> "c:/MyTools/GnuWin32/unzip.exe"
;; (executable-find "find") C-j --> "c:/MyTools/GnuWin32/find.exe"
#+end_src
** Uso del Latex
Per usare latex, utilizzo il pacchetto portable MikTex, che ho configurato sul
disco virtuale X tramite il file batch =C:\MyTools\miktex\miktex -
Avvia.bat=. In questo modo posso esportare in latex avendo l'accortezza di
lanciare miktex prima di avviare l'esportazione.
Per fare in modo che emacs riconosca miktex, ho configurato:
#+begin_src emacs-lisp :tangle "~/.emacs.d/init.el"
;; X:/texmfs/install/miktex/bin/x64/pdflatex.exe
;; 1. Aggiunge la cartella con MikTex ai percorsi di Emacs
(add-to-list 'exec-path "X:/texmfs/install/miktex/bin/x64")
;; ;; 1. Dice a Emacs dove trovare pdflatex su Windows
;; (setenv "PATH" (concat "C:\\Users\\" (user-login-name) "\\AppData\\Local\\Programs\\MiKTeX\\miktex\\bin\\x64;" (getenv "PATH")))
;; ;; 2. Sincronizza il percorso interno di Emacs
;; ;; (setq exec-path (append '("C:/Users/" (user-login-name) "/AppData/Local/Programs/MiKTeX/miktex/bin/x64") exec-path))
;; ;; 3. Dice a Org-mode di usare pdflatex
;; (setq org-latex-pdf-process '("pdflatex -interaction nonstopmode -output-directory %o %F"))
;; ;; questultima dà ancora errore pdflatex non trovato, quindi lo indico direttamente:
;; Risolviamo aggirando completamente il problema del PATH: inseriamo il percorso assoluto dell'eseguibile direttamente nel comando di compilazione, così Windows non dovrà "cercarlo".
(setq org-latex-pdf-process '("X:/texmfs/install/miktex/bin/x64/pdflatex.exe -interaction nonstopmode -output-directory %o %F"))
;; dopo questo ho:
;; (executable-find "pdflatex") --> "x:/texmfs/install/miktex/bin/x64/pdflatex.exe"
;; (executable-find "dvipng") --> "x:/texmfs/install/miktex/bin/x64/dvipng.exe"
#+end_src
Alcune volte dà problemi, per esempio se vi sono formule matematiche in latex,
perchè non riesce a caricare correttamente dvipng. Per risolvere bisogna
utilizzare i riferimenti assoluti =%F= dei file e non relativi =%f= e quindi
occorre sistemare la variabile =org-preview-latex-process-alist= in modo che tutti i riferimenti siano
assoluti:
#+begin_src emacs-lisp :tangle no
;; Configurazione presa da internet
(with-eval-after-load 'org
(add-to-list 'org-preview-latex-process-alist
'(dvisvgm :programs ("latex" "dvisvgm")
:description "dvi > svg"
:message "you need to install the programs: latex and dvisvgm."
:use-xcolor t
:image-input-type "dvi"
:image-output-type "svg"
:image-size-adjust (1.7 . 1.5)
:latex-compiler ("latex -interaction nonstopmode -output-directory %o %f")
:image-converter ("dvisvgm %f -n -b min -c %S --currentcolor -o %O")))
;; Imposta il programma predefinito per il rendering
(setq org-preview-latex-default-process 'dvisvgm))
#+end_src
#+begin_src emacs-lisp :tangle no
;; Configurazione creata da me con M-x customize-variable RET org-preview-latex-process-alist RET
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(org-preview-latex-process-alist
'((dvipng :programs ("latex" "dvipng") :description "dvi > png"
:message
"you need to install the programs: latex and dvipng."
:image-input-type "dvi" :image-output-type "png"
:image-size-adjust (1.0 . 1.0) :latex-compiler
("latex -interaction nonstopmode -output-directory %o %F")
:image-converter ("dvipng -D %D -T tight -o %O %F")
:transparent-image-converter
("dvipng -D %D -T tight -bg Transparent -o %O %F"))
(dvisvgm :programs ("latex" "dvisvgm") :description "dvi > svg"
:message
"you need to install the programs: latex and dvisvgm."
:image-input-type "dvi" :image-output-type "svg"
:image-size-adjust (1.7 . 1.5) :latex-compiler
("latex -interaction nonstopmode -output-directory %o %F")
:image-converter
("dvisvgm %F --no-fonts --exact-bbox --scale=%S --output=%O"))
(imagemagick :programs ("latex" "convert") :description
"pdf > png" :message
"you need to install the programs: latex and imagemagick."
:image-input-type "pdf" :image-output-type "png"
:image-size-adjust (1.0 . 1.0) :latex-compiler
("pdflatex -interaction nonstopmode -output-directory %o %F")
:image-converter
("convert -density %D -trim -antialias %F -quality 100 %O")))))
#+end_src
* \checkmark File di configurazione della grafica *UI-init.el*
:PROPERTIES:
@@ -2327,6 +2451,117 @@ org:
(setq default-process-coding-system '(utf-8-unix . utf-8-unix))
#+end_src
** Imposto il pacchetto: org-id
:PROPERTIES:
:ID: 20260531T154540.446558
:END:
Per poter usare gli id univoci, abilito l'uso del pacchetto org-id:
Org-id è una funzionalità integrata di Org Mode che assegna identificatori
univoci e permanenti a titoli o file specifici. Consente di creare collegamenti
ipertestuali permanenti e resilienti che continuano a funzionare anche se si
sposta, rinomina o archivia il file di destinazione.
Come si vede dal sito [[https://medium.com/@James86768479/org-id-org-attach-better-folder-names-3905f3841044][Org ID, Org Attach & Better Folder Names]] ricavo come
personalizzare =org-id= e =org-attach= per id più significativi:
#+begin_src emacs-lisp :tangle "~/.emacs.d/org-init.el"
;; Load org-id
(require 'org-id)
;;
;; Customize how IDs are generated (optional)
;; 'ts generates a timestamped ID,
;; 'uuid generates a random UUID (default)
(setq org-id-method 'ts)
;;
;; Ordino anche le funzioni pe ril path:
;; La funzione UUID prende i primi due caratteri dell'UUID e crea una cartella
;; padre a partire da essi, mentre la funzione ts prende i primi sei cioè
;; l'anno e il mese.
(setq org-attach-id-to-path-function-list
'(org-attach-id-ts-folder-format org-attach-id-uuid-folder-format)
)
;;
;; Dalla configurazione di org-super-links:
(setq org-id-link-to-org-use-id 'create-if-interactive-and-no-custom-id)
#+end_src
Comandi essenziali
Una volta caricati, è possibile gestire gli ID utilizzando i seguenti comandi
interattivi:
- =M-x org-id-get-create= :: Assegna una proprietà :ID: univoca al titolo nel
punto specificato (annidata all'interno di un riquadro :PROPERTIES:). Se
esiste già un ID, lo lascia invariato.
- =M-x org-store-link= (=C-c l=) :: Mentre ci si trova su un titolo con un ID,
questo comando memorizza un collegamento che punta specificamente a quell'ID.
- =M-x org-insert-link= (=C-c C-l=) :: Inserisce il collegamento ID
precedentemente memorizzato nel documento, consentendo di assegnare un nome
alla descrizione del collegamento.
** Imposto il pacchetto: org-super-links
:PROPERTIES:
:ID: 20260531T154957.127764
:END:
:RELATED:
[2026-05-31 dom 16:28] -> [[id:89b37a37-0f9b-42f6-9afa-bbe3648a04df][Impostazione per directory con il codice lisp custom:]]
:END:
Dai reference [[https://github.com/toshism/org-super-links][GitHub]], [[https://karl-voit.at/2020/07/22/org-super-links/][Karl Voit article]], [[https://writequit.org/articles/emacs-org-mode-generate-ids.html][Lee Hinman article]]
L'idea generale è quella di creare link con backlink automatici. In poche
parole, questo pacchetto automatizza la creazione di ID org, il loro
collegamento a un'intestazione org e la creazione di un backlink da tale
intestazione a quella che si collega da essa.
Mi basta cercare l'intestazione a cui voglio collegarmi e tutto viene creato
automaticamente: un ID per l'intestazione in cui mi trovo, un ID per
l'intestazione a cui mi sto collegando, un link che punta a quell'ID nel mio
marcatore e un backlink nell'intestazione a cui mi sto collegando che punta
all'intestazione in cui mi trovo.
Nel post, Hinman spiega che se si utilizzano gli ID nel file org, si otterrà un
vantaggio anche durante l'esportazione in un file HTML: i link di intestazione
utilizzati punteranno alla posizione desiderata, anche dopo aver spostato le
intestazioni.
Per ora non vi è un pacchetto ELPA, quindi bisogna scaricare i file
=org-super-links.el=, =org-super-links-org-ql.el=,
=org-super-links-org-rifle.el= e metterli nella cartella di [[id:89b37a37-0f9b-42f6-9afa-bbe3648a04df][custom lisp]] in modo
che siano caricati all'avvio di emacs.
#+begin_src emacs-lisp :tangle "~/.emacs.d/org-init.el"
(use-package org-super-links
:bind (
("C-c s s" . org-super-links-link)
("C-c s l" . org-super-links-store-link)
("C-c s C-l" . org-super-links-insert-link)
("C-c s d" . org-super-links-quick-insert-drawer-link)
("C-c s i" . org-super-links-quick-insert-inline-link)
("C-c s C-d" . org-super-links-delete-link)
)
:config (
setq org-super-links-related-into-drawer t
org-super-links-link-prefix 'org-super-links-link-prefix-timestamp)
)
#+end_src
*** Utilizzo:
:PROPERTIES:
:ID: 20260531T161241.670404
:END:
Si può semplicemente usarlo in sostituzione del collegamento Org:
Usalo esattamente come useresti i normali link org. Invece di chiamare
=org-store-link= chiama =org-super-links-store-link= (=C-c s l=). Quindi per
inserire il link invece di =org-insert-link= chiama
=org-super-links-insert-link= (=C-c s C-l=). Questo inserirà un link normalmente
aggiungendo anche un backlink alla destinazione del link. Questo dovrebbe
funzionare allo stesso modo dei normali link org, con il vantaggio di aggiungere
il backlink.
** Imposto la visibilità iniziale di default:
:PROPERTIES:
:ID: e51a0604-d2d1-486e-ad56-20103e765ebd