2013-08-27 79 views
6

我想在組織文件中定義一個緩衝區寬度變量,並稍後使用此變量的值來爲例如乳膠導出定義圖像的寬度。Emacs組織模式:在緩衝區和訪問變量中定義變量

有沒有辦法如何做到這一點?

這可以使用#+CONSTANTS:完成嗎?

在理想情況下,應該這樣工作:

我在緩衝器中,例如定義一個變量image_width

image_width=10 

,並使用在此變量爲#+ATTR_LATEX:設置,例如,#+ATTR_LATEX: :width $image_width

回答

0

在.emacs中定義一個變量。就像你如何定義一個函數一樣,你可以將一個變量綁定到某個值。你可以根據你想要的來做setq或defvar,defconst。對於一個實例:

(setq圖像寬度10)

確保您設置的變量後,EVAL-緩衝區。

+0

感謝您指出我如何定義一個變量。我怎樣才能得到這個值,即組織文件中的10個值?理想情況下,在導出組織文件之前,實際值應該包含在組織文件**中。 – jotsetung

2

兩種方法(未經測試),如果你希望你的常數爲緩衝區具體:你的組織文件的

  • 「局部變量(S)」在過去的8線(左右);

  • 使用組織 「#+宏:」 功能

+1

我試過你的方法,並定義了宏##MACRO:image_width 16'。在純文本的組織文件中,這是完美的,並且如預期的那樣'{{{image_width}}}'將在導出的文件中被替換爲_16_。但是,當我將它添加到LaTeX屬性(如'#+ ATTR_LATEX :: center:placement [H]:width {{image_width}}} cm'時,我得到了'\ includegraphics [width = {{image_width}}} cm ] {test.png}'而不是'\ includegraphics [width = 16cm] {test.png}'。所以,這不適合我。 – jotsetung

+0

您應該至少報告此功能。我的印象是它應該很好地工作。 – fniessen

0

您可以使用#+NAME:標籤聲明一個變量。然後通過將它傳遞到您需要它的src塊中的:var來使用它。

這將是這個樣子:

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

注意instance-id[0, 0]在python SRC模塊。我已經將變量聲明爲一個數組,因爲我需要像這樣去引用這個值。