如何将org-mode表格正确导出为LaTeX,并设置正确的位置[h]?

5
我正在尝试将一个表格从我的org文件导出为LaTeX格式,该文件的样式如下:
    #+LATEX_HEADER: \usepackage{adjustbox}
    * table test 
    
    #+begin_table 
    #+LATEX: \caption{my caption}
    label:tab:mylabel
    #+ATTR_LATEX: :placement [h]
    #+LATEX: \centering
    #+LATEX: \adjustbox{max width=\linewidth}{
    #+ATTR_LATEX: :center nil
    |    |                          |
    | id | Question                 |
    |----+--------------------------|
    |    |                          |
    |  1 | Does it export with [h]? |
    #+end_table

我想让导出的 TeX 看起来像这样:
    ... 
    \begin{table}[h]
    \caption{my caption}
    \label{tab:mylabel}
    \centering
    \adjustbox{max width=\linewidth}{
    \begin{tabular}{ll}
     & \\
    id & Question\\
    \hline
     & \\
    1 & Does it export with [h]?\\
    \end{tabular}
    \end{table}
    ...

但我只是开始了
    ... 
    \begin{table}
    \caption{my caption}
    \label{tab:mylabel}
    \centering
    \adjustbox{max width=\linewidth}{
    \begin{tabular}{ll}
     & \\
    id & Question\\
    \hline
     & \\
    1 & Does it export with [h]?\\
    \end{tabular}
    \end{table}
    ...

使用以下版本
GNU Emacs 25.1.1 (x86_64-apple-darwin15.5.0, NS appkit-1404.47 Version 10.11.5 (Build 15F34)),日期为2017年1月6日
Org mode 版本 9.0.5 (release_9.0.5-444-g998576 @ ~/git/org-mode/lisp/)
我还尝试了以下内容
#+ATTR_LATEX: :float t :placement [h]
#+ATTR_LATEX: :center nil :float t :placement [h]
#+ATTR_LATEX: :center nil :placement [h]
#+begin_table :placement [h]
#+begin_table :float t :placement [h]
在互联网上搜索时,我只找到了一些来自2010年的电子邮件,当时存在org-latex.el。由于它仍然在文档中存在,我认为它应该以某种方式起作用。
所以有人可以帮助我吗?或者透露一下我需要输入哪些关键词才能找到答案?
谢谢@Nick,我们正在正确的道路上,但遗憾的是还没有到达终点。
嗯,我不想破坏解析,这解释了一些事情。 我还有一些更多的需求和需要解释的事情。
首先,我的一些表格有点宽,像这样:
   | id | Question                                                                                                                  |
   |----+---------------------------------------------------------------------------------------------------------------------------|
   |  1 | Does it export with [h]?                                                                                                  |
   |  2 | I have some tables witch are very wide so What if you have a really wide table which needs to be shrunk to the right size |

Adjustbox包是我找到的第一个可以将整个表格缩小到正确宽度的工具。我尝试了你建议的tabularx,但它并没有缩小表格的内容。如果没有缩小,我的大部分表格看起来都很奇怪。
另外一件事,我正在使用org-ref。在你的版本中(当这两个问题解决后,我更喜欢这个版本),导出结果为:
   \caption{\label{tab:org56e3a68}
   My caption}  

我按照文档的意图添加了#+label: tab:my-label。在#+caption:#+name:之前和之后都添加了,但是在.tex文件中没有任何变化。
有什么想法吗?

应该是 :placement [h],而不是 :plcement [h]。未经测试。 - NickD
谢谢Nick,但是在输入问题时出现了笔误。它不能与:placement [h]一起工作。 - Dings
你是否按照我的回答中所描述的添加了 #+BIND 指令?这应该可以解决 org 生成标签的问题。另外,我不知道你修改了问题:我没有收到任何通知。我只是偶然再次查看了问题,发现它变了。因此,如果你想让别人跟进,请在回答中添加评论,类似于“请查看修改后的问题”。 - NickD
另外,我认为Stack Overflow(以下简称SO)的政策是不鼓励在一个帖子中询问多个问题的。你应该能够用一个清晰的标题总结出问题,并且这应该是帖子中唯一的问题。如果您有其他问题,应该在单独的帖子中分别提出。到目前为止,我们已经偏离了最初的安置问题。 - NickD
尼克,你又说对了。我会发布一个总结性的问题并将其标记为已回答。谢谢。 - Dings
1个回答

7

除了使用adjustbox的内容,我可以做你想要的一切:

#+BIND: org-latex-prefer-user-labels t
* table test 


#+caption: My caption
#+name:my-label
#+ATTR_LATEX: :placement [h] :center t
|    |                          |
| id | Question                 |
|----+--------------------------|
|    |                          |
|  1 | Does it export with [h]? |

我不知道\adjustbox是什么,也不知道如何使用它以及放置在哪里;但是,在# +caption和表格之间不能添加# +LATEX:行:它们似乎会破坏解析。

您可以向ATTR_LATEX行添加另一个属性:

#+ATTR_LATEX: :placement [h] :center t :width \linewidth

但不清楚它是否满足您的需求。而且,我刚刚测试过,它并没有做任何事情:这是因为标准环境是 tabular,不接受宽度参数。以下是可行的:

#+ATTR_LATEX: :environment tabularx :placement [h] :center t :width \linewidth

但你还需要添加。
#+LATEX_HEADER: \usepackage{tabularx}

在文件顶部。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接