要在 LaTeX 中包裹源表格,使用 ‘comment.sty’173 提供的 ‘comment’ 环境,在文档头部添加 \usepackage{comment} 启用。Orgtbl 模式可通过命令 M-x orgtbl-insert-radio-table 插入无线表格框架174,该命令会提示输入表格名称。例如名称为 ‘salesfigures’ 时,模板会插入:
% BEGIN RECEIVE ORGTBL salesfigures
% END RECEIVE ORGTBL salesfigures
\begin{comment}
#+ORGTBL: SEND salesfigures orgtbl-to-latex
| | |
\end{comment}
行 ‘#+ORGTBL: SEND’ 告知 Orgtbl 模式使用函数 orgtbl-to-latex 将表格转为 LaTeX 格式,并插入到名为 ‘salesfigures’ 的目标(接收)位置。此时表格即可录入数据,还可使用电子表格功能175:
% BEGIN RECEIVE ORGTBL salesfigures
% END RECEIVE ORGTBL salesfigures
\begin{comment}
#+ORGTBL: SEND salesfigures orgtbl-to-latex
| Month | Days | Nr sold | per day |
|-------+------+---------+---------|
| Jan | 23 | 55 | 2.4 |
| Feb | 21 | 16 | 0.8 |
| March | 22 | 278 | 12.6 |
#+TBLFM: $4=$3/$2;%.1f
% $ (可选额外美元符号,让字体高亮正常显示,见脚注)
\end{comment}
编辑完成后,C-c C-c 会将转换后的表格插入到目标位置的两个标记行之间。
对于手动编写的自定义表格,转换函数需要跳过源表格前两行,同时命令需拼接输出目标表格主体,不含表头与表尾。
\begin{tabular}{lrrr}
Month & \multicolumn{1}{c}{Days} & Nr.\ sold & per day\\
% BEGIN RECEIVE ORGTBL salesfigures
% END RECEIVE ORGTBL salesfigures
\end{tabular}
%
\begin{comment}
#+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
| Month | Days | Nr sold | per day |
|-------+------+---------+---------|
| Jan | 23 | 55 | 2.4 |
| Feb | 21 | 16 | 0.8 |
| March | 22 | 278 | 12.6 |
#+TBLFM: $4=$3/$2;%.1f
\end{comment}
LaTeX 转换函数 orgtbl-to-latex 已内置在 Orgtbl 模式中,使用 ‘tabular’ 环境排版表格,并用 \hline 标记水平线。控制输出的额外参数见 Translator functions:
当 {{{var(BOOLEAN}}} 非 nil 时,仅返回表格主体行,不包裹在 ‘tabular’ 环境中,默认为 nil 。
包裹每个字段的格式字符串,需包含 ‘%s’ 表示原始字段值。例如用 ‘:fmt "$%s$"’ 为每个字段值包裹美元符号。格式也可使用带列号与格式的属性列表,例如 ‘:fmt (2 "$%s$" 4 "%s\\%%")’ 。也可使用单参数函数替代字符串,函数需返回格式化后的字符串。
将数字以指数形式格式化,规范需包含两个 ‘%s’ 分别插入尾数与指数,例如 ‘"%s\\times10^{%s}"’ 。也可使用带列号与格式的属性列表,例如 ‘:efmt (2 "$%s\\times10^{%s}$" 4 "$%s\\cdot10^{%s}$")’ 。对值应用 EFMT 后,还会继续应用 FMT。可使用双参数函数替代字符串,默认不应用特殊格式。
https://www.ctan.org/pkg/comment
默认仅支持 LaTeX、HTML、Texinfo 格式,可配置变量 orgtbl-radio-table-templates 为其他模式添加模板。
若 ‘TBLFM’ 关键字包含奇数个美元符号,可能导致 LaTeX 模式中的字体锁定异常。示例中通过在 ‘comment’ 环境内添加额外行平衡美元表达式可修复该问题。若使用 AUCTeX 与 font-latex 库,更佳方案是将 ‘comment’ 环境添加至变量 LaTeX-verbatim-environments 。