8

我想在 org 文件中定义一个缓冲区宽变量,并稍后使用该变量中的值,例如,为乳胶导出定义图像的宽度。

有没有办法做到这一点?

这可以使用#+CONSTANTS:吗?

理想情况下,它应该像这样工作:

image_width我在缓冲区中定义了一个变量,例如

image_width=10

并将此变量用于#+ATTR_LATEX:设置,例如#+ATTR_LATEX: :width $image_width.

4

3 回答 3

1

两种方法(未经测试),如果您希望您的常量是特定于缓冲区的:

  • 组织文件最后 8 行(左右)中的“局部变量”;

  • 使用组织“#+MACRO:”功能

于 2013-08-27T18:41:59.350 回答
1

您可以使用标签声明变量#+NAME:。然后通过将它传递给:var你需要的 src 块来使用它。

这看起来像这样:

#+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]in python src 块。我已将变量声明为数组,因此我需要像这样取消引用该值。

于 2016-11-02T23:11:45.733 回答
-2

在 .emacs 中定义一个变量。就像定义函数一样,您可以将变量绑定到某个值。你可以做 setq 或 defvar、defconst,这取决于你想要什么。例如:

(setq 图像宽度 10)

确保在设置变量后 eval-buffer。

于 2013-08-27T15:53:34.613 回答