2013-08-27 12 views
6

Chciałbym zdefiniować zmienną o szerokim buforze w pliku org i użyć wartości z tej zmiennej później, np. Do określenia szerokości obrazów do eksportu lateksu.Emacs org-mode: zdefiniuj zmienną w buforze i zmienną dostępu

Czy jest sposób, w jaki można to zrobić?

Czy można tego dokonać za pomocą #+CONSTANTS:?

Idealnie powinno działać w następujący sposób:

zdefiniować zmienny image_width w buforze, np

image_width=10 

i używać tej zmiennej dla #+ATTR_LATEX: ustawienia, na przykład, #+ATTR_LATEX: :width $image_width.

Odpowiedz

0

Zdefiniuj zmienną w pliku .emacs. Podobnie jak definiujesz funkcję, możesz powiązać zmienną z określoną wartością. Możesz zrobić setq lub defvar, defconst, w zależności od tego, co chcesz. Na przykład:

(setq obraz szerokości 10)

Upewnij się eval bufor po ustawieniu zmiennej.

+0

dzięki za wskazanie mi, jak zdefiniować zmienną. Jak mogę uzyskać wartość, tj. 10 w pliku org? Najlepiej, jeśli rzeczywista wartość powinna być zawarta w pliku org ** przed ** eksportem pliku org. – jotsetung

2

Dwa sposoby (niesprawdzone), jeśli chcesz, aby stały się buforem specyficzne:

  • „Zmienna lokalna (s)” w ciągu ostatnich 8 linii (lub więcej) z pliku Org;

  • Zastosowanie Org "# + MAKRO" Funkcja

+1

Próbowałem, abyś podszedł i zdefiniował makro '# + MACRO: image_width 16'. w pliku tekstowym w pliku org działa to idealnie i zgodnie z oczekiwaniami '' {{{image_width}}} 'zostanie zastąpione przez _16_ w eksportowanym pliku. Jednak po dodaniu go do atrybutu LaTeX, takiego jak '# + ATTR_LATEX:: center: placement [H]: width {{{image_width}}} cm' otrzymam' \ includegraphics [width = {{{image_width}}} cm ] {test.png} 'a nie' \ includegraphics [width = 16cm] {test.png} '. Tak więc to nie działa dla mnie. – jotsetung

+0

Powinieneś zgłosić to co najmniej jako funkcja. Mam wrażenie, że powinno dobrze działać. – fniessen

0

Można zadeklarować zmienną za pomocą znacznika #+NAME:. Następnie użyj go, przekazując go do :var w bloku src, którego potrzebujesz.

Będzie to wyglądać mniej więcej tak:

#+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 

Zanotować instance-id[0, 0] w Pythonie bloku src. Zadeklarowałem zmienną jako tablicę, z powodu której muszę odreagować wartość podobną do tej.

Powiązane problemy