Come ingrandire i frammenti di lattice in modalità org contemporaneamente al testo del buffer?


12

Sto usando org-modeEmacs, ma penso che la domanda sia rilevante anche per gli auctexutenti.

In org-modepuoi mostrare frammenti di lattice, come dimostra il manuale .

Ma: questi frammenti (principalmente formule matematiche) sembrano avere dimensioni costanti . Quando scrivo C-x C-+o cambia C-x C-- solo la dimensione del testo del buffer. Come posso modificare la dimensione dei frammenti dal buffer?

(So ​​di poter ingrandire o ridurre i frammenti con org-format-latex-options, ma questo è permanente. Voglio cambiare la dimensione dei frammenti (i file png) come il testo.)

Risposte:


4

Risposta aggiornata: (grazie per il feedback)

(defun update-org-latex-fragments ()
  (org-latex-preview '(64))
  (plist-put org-format-latex-options :scale text-scale-mode-amount)
  (org-latex-preview '(16)))
(add-hook 'text-scale-mode-hook 'update-org-latex-fragments)

Vecchia risposta:

Ecco un inizio: aggancia text-scale-mode-hooke aggiorna di org-format-latex-optionsconseguenza.

(defun update-org-latex-fragments ()
  (org-toggle-latex-fragment '(16))
  (plist-put org-format-latex-options: scale text-scale-mode-amount)
  (org-toggle-latex-fragment '(16)))
(aggiungi hook 'text-scale-mode-hook' update-org-latex-fragments)

Un fattore di ridimensionamento potrebbe essere necessario prima text-scale-mode-amountperò ...


Nessuna org-toggle-latex-fragmentfunzione nell'ultima modalità org.
Leu_Grady,

@ user3173715 La tua ultima non è la mia più recente ...
termina il

stai usando la modalità org di sviluppo?
Leu_Grady,

@ user3173715 Usa org-preview-latex-fragment(obsoleto dall'agosto 2014)
termina il

org-toggle-latex-fragmentè obsoleto da allora org 9.3. Usa org-latex-previewinvece. Inoltre, almeno al mio fianco, il primo org-toggle-latex-fragmentdovrebbe prendere '(64)invece. '(64)cancella le immagini nel buffer e le '(16)visualizza (vedi il documento).
Firmin Martin,

2

Sulla base della risposta di questi, sto usando quanto segue con successo. Il fattore di scala in questo esempio è 2.3:

(defun update-org-latex-fragment-scale ()
  (let ((text-scale-factor (expt text-scale-mode-step text-scale-mode-amount)))
    (plist-put org-format-latex-options :scale (* 2.3 text-scale-factor)))
)
(add-hook 'text-scale-mode-hook 'update-org-latex-fragment-scale)

Nota che ho rimosso il codice che attiva / disattiva l'anteprima, poiché preferisco farlo manualmente e può richiedere del tempo se ci sono molti frammenti da visualizzare in anteprima. Questo codice regola solo la scala dei frammenti visualizzati in anteprima, in modo che alla successiva visualizzazione C-c C-x C-l, avranno una dimensione appropriata che corrisponda al testo.


L'hardcoding è il fattore necessario?
T. Verron,

@ T.Verron il fattore di scala è qualcosa che influenza quanto grande o piccolo sia il frammento previsto rispetto alla dimensione del testo. Il rapporto tra questi due probabilmente dipende dal tipo di carattere che stai utilizzando e possibilmente dal dpi dello schermo. Potrebbe essere possibile automatizzare il calcolo di un fattore di scala, ma preferisco solo giocherellare con esso fino a quando non mi sembra di mio gradimento. Si noti che il "fattore di scala codificato" non è lo stesso del fattore di scala del testo, che cambia automaticamente quando si ingrandisce il testo.
Segna l'

Oh, ok, in effetti ho pensato che sarebbe stato il fattore di zoom. Scusate!
T. Verron,

0

Ciò è già incorporato se si utilizza texfrag-modeOrgmode anziché il supporto per frammenti LaTeX incorporato di Orgmode.

Rigenera i frammenti di LaTeX semplicemente C-c C-p C-ddopo aver modificato le dimensioni con C-x C-+ C-+ .... La dimensione dei frammenti LaTeX si adatta alla dimensione del testo circostante.

Dimensione normale del testo:

Dimensione del testo normale

Dopo aver premuto C-x C-+ C-+ C-xe C-c C-p C-d:

inserisci qui la descrizione dell'immagine

Sidenote: con l'ultima versione di texfrag puoi anche attivare texfrag-show-last-mode. Con quella modalità minore attivata, Texfrag mostra l'ultimo frammento LaTeX renderizzato come handle se si modifica la formula:

texfrag-show-ultima-mode

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.