Il modo in cui Cal. scrive

È un po’ complicato ed ha avuto bisogno di un po’ di tempo per arrivare al grado di collaudamento attuale. Esso si compone di diversi software, dal basso verso la tastiera:

LaTeX
Dovrebbe andare bene una distribuzione qualsiasi, a patto che pandoc sappia dove trovarla. Quindi deve trovarsi in $PATH e tutte le altre belle cose che il tuo sistema tenta di nasconderti.
Pandoc
Convertitore universale di documenti. Scaricabile qui.
make
Questo dovrebbe già essere su ogni sistema degno di questo nome. Su windows manca. Non ho idea di come possa essere sostituito; forse Cygwin lo implementa…
Emacs
Un intero sistema operativo al quale manca un editor decente, dicono i suoi detrattori. Questa è la parte meno fondamentale di tutte, a dir il vero. Usate l’editor che più vi piace.

Makefiles

I vari software una volta installati dovrebbero comunicare senza necessità di interventi ulteriori.

Il makefile, per il quale si ringraziano varie persone trovate prima o poi su google, che cal di solito invoca con M-! make <RET>, fa questa roba:

  • elenca tutti i file .text nella dir in cui viene invocato, e
  • sostituendo l’estensione genera una lista di target .pdf che poi
  • compila con le opzioni scelte.
PANDOC = pandoc

PANVARS = --var=papersize:a4 --var=lang:it-IT 

FILES = $(patsubst %.text,%.pdf,$(wildcard *.text))

all: $(FILES)

%.pdf: %.text makefile
	$(PANDOC) $(PANVARS) -o $@ $< && open $@

%.tex: %.text makefile
	$(PANDOC) $(PANVARS) --standalone -o $@ $<

Ci potrebbero essere modifiche per supportare una bibliografia o inserire altra roba arbitraria nel preambolo, strumento che uso per includere siunitx, di solito, o per ridimensionare la dimensione massima delle immagini nei documenti. Per esempio:

PANDOC = @pandoc

PANVARS = --var=papersize:a4 --var=lang:it-IT \
	--var=header-includes:'\frenchspacing' \
	--var=header-includes:'\setkeys{Gin}{width=0.75\maxwidth}' \
	--bibliography=$*.bib \
	--latex-engine=xelatex --var=mainfont:'Myriad Pro'

PIPE = > /dev/null

FILES = $(patsubst %.text,%.pdf,$(wildcard *.text))

all: $(FILES)

%.pdf: %.text makefile %.bib
	$(PANDOC) $(PANVARS) -o $@ $< $(PIPE) && open $@

%.tex: %.text makefile %.bib
	$(PANDOC) $(PANVARS) --standalone -o $@ $< $(PIPE)

Emacs

Markdown-mode è abbastanza funzionante, se si ricorda di abilitare la matematica nei documenti (setq markdown-enable-math t), mi pare; in modo che non tratti gli underscore dei pedici come comandi per corsivo, e se si affianca ad adaptive-wrap.

Un miglioramento notevole viene ottenuto cambiando il cursore di default di emacs ed impostando un po’ di roba semplice nel .emacs:

  • riconoscimento automatico delle estensioni per markdown;
  • evidenziazione della riga corrente hl-line-mode;
  • “a capo automatico” morbido visual-line-mode;
  • font proporzionale (migliora di molto la leggibilità, quando non si tratta di codice) variable-pitch-mode.
(delete-selection-mode 1) ; se cominci a scrivere con del testo selezionato, ciò che scrivi sostituisce la selezione

;; Markdown mode
(autoload 'markdown-mode "markdown-mode"
   "Major mode for editing Markdown files" t)
(add-to-list 'auto-mode-alist '("\\.text\\'" . markdown-mode))
(add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode))
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))

;; Text mode (applies to Markdown & LaTeX, too)
(add-hook 'text-mode-hook 'hl-line-mode)
(add-hook 'text-mode-hook 'adaptive-wrap-prefix-mode)
(add-hook 'text-mode-hook 'turn-on-visual-line-mode); a capo automatico
(add-hook 'text-mode-hook 'variable-pitch-mode); font proporzionale

Qui una volta c’era una descrizione di come configurare il correttore automatico con Emacs. Era poco utile e un sacco complicata, oltre che probabilmente ormai rotta.