我正在尝试设置一个#+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 输出中包含额外的环境。