宏在导出时替换文本片段133。宏可全局定义在 org-export-global-macros 中,或在文档内按以下语法定义:
#+MACRO: name replacement text; $1, $2 are arguments #+MACRO: name 替换文本;$1、$2 为参数
通过 ‘{{{name(arg1, arg2)}}}’134 引用。例如:
#+MACRO: poem Rose is $1, violet's $2. Life's ordered: Org assists you.
{{{poem(red,blue)}}}
导出后变为:
Rose is red, violet's blue. Life's ordered: Org assists you.
特殊规则:替换文本以 ‘(eval’ 开头时,Org 会将其作为 Emacs Lisp 表达式执行,参数自动转为字符串。例如下方宏:
#+MACRO: gnustamp (eval (concat "GNU/" (capitalize $1)))
导出时会将 ‘{{{gnustamp(linux)}}}’ 转为 ‘GNU/Linux’ 。
Org 在以下位置识别宏引用:段落、标题、verse 块、表格单元格、列表,以及 ‘CAPTION’ 、 ‘TITLE’ 、 ‘AUTHOR’ 、 ‘DATE’ 等关键字和部分后端导出选项。
Org 内置以下预定义宏:
‘keyword’ 宏收集缓冲区中所有 NAME 关键字的值并用空格分隔。 ‘title’ 、 ‘author’ 、 ‘email’ 分别是 ‘{{{keyword(TITLE)}}}’ 、 ‘{{{keyword(AUTHOR)}}}’ 、 ‘{{{keyword(EMAIL)}}}’ 的简写。
该宏对应 ‘DATE’ 关键字。FORMAT 是 ‘date’ 宏的可选参数,仅当 ‘DATE’ 为单个时间戳时生效。FORMAT 必须是 format-time-string 能够识别的格式字符串。
这些宏分别对应文档的导出日期时间和修改日期时间。FORMAT 是 format-time-string 可以识别的字符串。如果 modification-time 宏的第二个参数不为 nil ,Org 会通过 ‘vc.el’ 从版本控制系统中获取文档的修改时间;否则,Org 将读取文件属性。
指向当前导出文件的文件名。
该宏返回当前条目中 PROPERTY-NAME 属性的值。如果 SEARCH-OPTION(见 Search Options in File Links)指向一个外部条目,则使用该外部条目的属性。
该宏用于实现自定义计数器,返回导出当前缓冲区时该宏已被展开的次数。你可以使用不同的 NAME 值创建多个计数器。若 ACTION 为 ‘-’ ,则保持计数器上一次的值不变,即不递增指定计数器。若该值为数字,则将对应计数器设为该数值。若为其他非空字符串,则将对应计数器重置为 1。你可以留空 NAME 以重置默认计数器。
此外,行内代码块(见 Structure of Code Blocks)使用专用 ‘results’ 宏标记输出,不建议用户重新定义,除非明确知晓后果。
将 org-hide-macro-markers 设为非 nil 可隐藏宏两侧的括号。
Org 在导出流程最开始执行宏展开。
将 org-export-replace-macros 设为 nil 可禁用宏替换,默认为 t。
逗号用于分隔参数,参数内的逗号需使用反斜杠转义,仅逗号前的反斜杠需要额外添加反斜杠转义。