org-mode导出latex,如何调整org表格的大小。

这个org表格的列很多,导致pdf文件中这一页的右边挤满出去就看不到内容了,怎么可以把org的表格也定义成类似latex中的\vbox之类的东西,可以用?%来缩放这个表格吗?

感觉表格比较难处理,我现在处理的办法是:改字号+longtable+align+隐藏列,如果还不行就用 landscape旋转为横向,一个例子:

#+LATEX: \begin{landscape}
#+LATEX: \zihao{-6}
#+ATTR_LATEX: :environment longtable :align l|l|l|p{0.7cm}|p{0.7cm}|p{0.7cm}|p{0.7cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|l|
.....

#+LATEX: \end{landscape}
1 个赞

你好哦。你的方法是针对LaTex的表格有效的。

我是另一个方式,就是org-mode的表格,我想在org文件中加点控制大小的语句,让它直接导出到pdf文件中缩小一点。

不过谢谢你!

这就是控制org-mode表格的呀 :sweat:

我觉得您的例子里面是LaTeX的表格。用Latex指令序列定义的表格:

l|l|l|p{0.7cm}|p{0.7cm}|p{0.7cm}|p{0.7cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|l|
.....

我想控制的是org-mode中原生的表格,源代码就是这样定义的表格:

| 姓名 | 身高 | 颜值 | 爱好 | 交往系数 |
|------+------+------+------+----------|
|      |      |      |      |          |

orgmode要导出, 就要转换成适合导出的格式, 直接在那些导出格式里做文章不是一样的?

我想得太理想化,以为org的原生表格可以和导出到latex无缝集成,可以直接和latex的表格缩放指令直接集成,哈哈。:sweat_smile:

哦,你不会是想在导出之前就控制org-table的显示吧,所见所得?

是的,因为org的原生表格很好用,可以排序,加公式,是“活的”, 而latex的表格是死的,纯粹为了排版的死的文字,不能进行公式处理。但是org的表格一般都很宽,我就想能不能先缩小到一页里面然后输出为pdf。

你可以把org导出到latex再导出PDF,这样就可以用latex控制。

可以用

#+BEGIN_EXPORT latex

#+END_EXPORT

在导出的latex文档里插入控制语句

你的意思是org导出到latex文本,停下来,然后手工介入这个.tex文档加入latex语句进行控制,然后,手工调用org-latex-pdf-process中的latex编译命令吗?

这样的工作流是一个办法,不过就不在org的发布流程控制里面了。

可能就是这个办法了。然后把这个流程加入到org的发布流程菜单里面。哈。

在Org文件里用这个就可以插入语句到导出的latex文档里。不过如果你需要直接修改表格而不是插入一些语句的话,这个就帮不了你了。

1 个赞

方法找到了。org表格缩放到页面的文本宽度导出latex

在org环境中,在org表格的“外面”包上这两条latex语句:

#+LaTeX: \resizebox{\textwidth}{!}{

| 姓名 | 身高 | 颜值 | 爱好 | 交往系数 |
|------+-----+------+------+---------|
|      |     |      |      |         |

#+LaTeX: }

真实图例如下:

7 个赞

其实我需要的是在“表格”外面起作用缩放语句,而不是在latex的表格环境中起作用的那种语句,因为我要操作org表格,在org环境中编辑和运算表格,最后把这个很宽的表用“外包语句”缩小到latex的\textwidth宽度输出到pdf中。

找到的那种方式就可以解决我的需求啦!

都过了一年了才找到,哈哈。

新年快乐啊!

1 个赞

通过这个总结出来一定的模式:

对于org的表格,

1、因为org表格是org的内部定义的对象,所以在org中表格必须保持org对表哥的原子性和完整性,不能拆开表格。(一拆开,org就不认这个是表格了,就没有那些org赋予表格的所有功能了)

2、如果企图用latex语句来控制org表格,必须在org表格的外面,以“外包”的方式去控制,不能采用latex的“表格环境”的控制语句,因为在org表格中,这样的语句加不进去。当然,可以在org输出到latex文件后,编辑latex文件来加入“表格环境”,但是我希望的是“只编辑org文件,然后直接得到pdf文档”,所以要外包。

3、因此,要关注latex命令中,外包“对象”的语句方式,而不是“环境控制”的语句方式。因为外包的对象,很可能就是org中的表格或者别的什么玩意儿,而“环境”在org中不存在。

由此,我又有一个新的问题来了,哈哈。就是enumitem.

问题的图例如下:

网上找到的解决方案还是基于编辑latex文件,用参数“itemindent=1em”

\begin{enumerate}[itemindent=1em]

\item One
\begin{enumerate}
		\item Two
		\item Three
		\item Four
\end{enumerate}
\item Five
\item Six

\end{enumerate}

这还不是我的org解法,继续寻找中,哈哈。

1 个赞

解决了。

在org文本中用外包语句:

这是古典文学的美好。我要下面的1,2,…7所有序号都缩进两个汉字,都缩进两个 汉字都缩进两个汉字都缩进两个汉字都缩进两个汉字都缩进两个汉字:

#+LaTeX: \begin{adjustwidth}{1.2em}{0em}

  1. 卧梅又闻花
  2. 暗枝伤恨底
  3. 遥闻卧似水
  4. 易透达春绿
  5. 岸似绿
  6. 岸似透绿
  7. 岸似透黛绿

#+LaTeX: \end{adjustwidth}

解决后的pdf如下图:

1 个赞

实用技能 :+1:

谢谢肯定,一起弄emacs和org!

试了一下感觉还是不错的,\resizebox 命令确实对导出latex表格尤其是长表格非常友好 我碰到个问题,\resizebox{宽度}{高度}{包含对象},这里的包含对象指表格对象,我在导出时会自动在 包含对象里导出 这样的latex命令

\begin{center}
\end{center}

如果直接用\resizebox包含会报错:

\resizebox{宽度}{!}{
\begin{center}
\end{center}
}

具体要如何在org里解决呢?我也不想直接编辑latex

搞定了,只需要将居中属性去掉就可以了,不用改全局,只需要加

#+ATTR_LATEX: :center nil

就可以了

您好,确实您的方法解决了表格超长问题,但我使用的时候发现caption和label的设置就不起作用了,不论是否包含在latex语句之内,请问您遇到过吗