#+ATTR_LATEX 是 org-mode latex 导出中宏扩展的结果

#+ATTR_LATEX 是 org-mode latex 导出中宏扩展的结果

我正在尝试设置一个#+ATTR_LATEX语句,作为宏的结果,但它不起作用。这是一个 MWE:

#+OPTIONS: toc:nil
#+LATEX_CLASS_OPTIONS: [11pt,a4paper]
#+LATEX_HEADER: \usepackage{float}
#+LATEX_HEADER: \usepackage{booktabs}
#+LATEX_HEADER: \usepackage{tabu}

#+MACRO: tabdef :placement [t] :center t :booktabs t :environment tabu :width \textwidth :align $1

This works:

#+CAPTION: Test caption 1
#+NAME: tab:test1
#+ATTR_LATEX: :placement [t] :center t :booktabs t :environment tabu :width \textwidth :align X[1lm]X[2lm]
|------------+----------------|
| *Heading1* | *Heading2*     |
|------------+----------------|
|       1234 | Lorem Ipsum    |
|       5678 | dolor sit amet |
|------------+----------------|


And this doesn't


#+CAPTION: Test caption 2
#+NAME: tab:test2
#+ATTR_LATEX: {{{tabdef(X[1lm]X[2lm])}}}
|------------+----------------|
| *Heading1* | *Heading2*     |
|------------+----------------|
|       1234 | Lorem Ipsum    |
|       5678 | dolor sit amet |
|------------+----------------|

对于第二个 LaTeX 块,org-mode 导出器不适当翻译表设置;即,没有正确扩展{{{tabdef}}}宏。这是相应的 LaTeX 输出;

\begin{table}[htbp]
\caption{\label{tab:org4671fb8}Test caption 2}
\centering
\begin{tabular}{rl}
\hline
\textbf{Heading1} & \textbf{Heading2}\\
\hline
1234 & Lorem Ipsum\\
5678 & dolor sit amet\\
\hline
\end{tabular}
\end{table}

我也尝试将整#+attr_latex行定义为:

#+MACRO: tabdef "#+ATTR_LATEX: :placement [t] :center t :booktabs t :environment tabu :width \textwidth :align $1"

结果相同。

我正在写一个包含很多此类表格的文档,使用相同的定义,只更改参数:align。如果能找到一种方法来自动化这个过程,使用宏或者 elisp 代码,那就太好了。

提前致谢。

编辑:删除#begin_table#end_table标记。不会改变问题,但在 latex 输出中包含额外的环境。

相关内容