2013-08-27 10 views
6

Vorrei definire una variabile buffer-wide in un file org e utilizzare il valore da questa variabile in seguito, ad esempio, per definire la larghezza delle immagini per l'esportazione del latex.org-mode di Emacs: definire la variabile nel buffer e la variabile di accesso

C'è un modo in cui questo può essere fatto?

È possibile farlo utilizzando #+CONSTANTS:?

Idealmente, dovrebbe funzionare in questo modo:

definisco una variabile image_width in un buffer, ad esempio

image_width=10 

e utilizzare questa variabile a #+ATTR_LATEX: impostazioni, per esempio, #+ATTR_LATEX: :width $image_width.

risposta

0

Definisci una variabile nel tuo .emacs. Proprio come si definisce una funzione, è possibile associare una variabile a un determinato valore. Puoi fare setq o defvar, defconst, a seconda di cosa vuoi. Per un esempio:

(setq immagine larghezza 10)

Assicurarsi a eval-buffer dopo aver impostato la variabile.

+0

grazie per avermi indicato come definire una variabile. Come posso ottenere allora il valore, cioè il 10 all'interno del file org? Idealmente il valore effettivo dovrebbe essere incluso nel file org ** prima ** dell'esportazione del file org. – jotsetung

2

due modi (non testati), se volete che il vostro costante per essere precisi-tampone:

  • "Variabile locale (s)" nelle ultime 8 righe (o giù di lì) del file Org;

  • Usa Org "# + MACRO:" caratteristica

+1

Ho provato l'approccio e definito la macro '# + MACRO: image_width 16'. in testo semplice nel file org funziona perfettamente e come previsto '{{{image_width}}}' sarà sostituito con _16_ nel file esportato. Tuttavia, quando lo aggiungo ad un attributo LaTeX come '# + ATTR_LATEX:: center: placement [H]: width {{{image_width}}} cm' Ottengo' \ includegraphics [width = {{{image_width}}} cm ] {test.png} 'e non' \ includegraphics [width = 16cm] {test.png} '. Quindi, questo non funziona per me. – jotsetung

+0

Dovresti segnalarlo come una funzione almeno. Ho l'impressione che dovrebbe funzionare bene. – fniessen

0

È possibile dichiarare una variabile utilizzando il tag #+NAME:. Quindi utilizzalo passandolo a :var nel blocco src di cui hai bisogno.

Questa sarà simile a questa:

#+NAME: instance-id 
| abcd | 

#+BEGIN_SRC sh :var id=instance-id 
echo $id 
#+END_SRC 

#+RESULTS: 
: abcd 

#+BEGIN_SRC python :var myvar=instance-id[0, 0] 
print myvar 
#+END_SRC 

#+RESULTS: 
: abcd 

Annotare il instance-id[0, 0] nel blocco src pitone. Ho dichiarato la variabile come array a causa della quale ho bisogno di de-referenziare il valore come questo.

Problemi correlati