2013-08-27 15 views
6

org-fileにバッファワイド変数を定義し、この変数の値を後で、例えばラテックスエクスポート用の画像の幅を定義するために使用します。Emacs org-mode:バッファ内の変数とアクセス変数を定義する

これはどのように行うことができますか?

#+CONSTANTS:を使用してこれを行うことはできますか?

理想的には、このように動作するはず:

Iは、例えば、バッファ変数image_widthを定義します

image_width=10 

#+ATTR_LATEX:設定するためにこの変数を使用して、例えば、#+ATTR_LATEX: :width $image_width

答えて

0

.emacsに変数を定義します。関数を定義する方法と同じように、変数を特定の値にバインドすることができます。あなたは、あなたが望むものに応じて、setqまたはdefvar、defconstを行うことができます。例えば:

(setqのイメージ幅10)

あなたの変数を設定した後、バッファをevalしていることを確認してください。 (未テスト)

+0

変数を定義する方法を教えてくれてありがとう。どのようにして値を取得することができますか?つまり、orgファイル内の値は10ですか?理想的には、実際の値は、orgファイルのエクスポート前にorgファイルに含める必要があります。 – jotsetung

2

二つの方法、あなたがしたい場合は、あなたの定数バッファ特異的である:あなたの組織ファイルの(そうか)最後の8行で

  • 「ローカル変数(S)」。

  • 利用組織 "#+ MACRO:" 機能

+1

マクロ '#+ MACRO:image_width 16'にアプローチして定義しました。 orgファイルのプレーンテキストでは完全に動作し、 '{{{image_width}}}'はエクスポートされたファイルの_16_に置き換えられます。しかし、 '#+ ATTR_LATEX::center:placement [H]:width {{{image_width}}} cm'のようなLaTeX属性に' '\ 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 

注PythonのSRCブロックのinstance-id[0, 0]

この

は次のようになります。変数を配列として宣言しました。そのため、このような値の参照を解除する必要があります。