0

我正在尝试对从 Emacs 的 Org 模式导出到 HTML 的一组表进行更精细的编程(Emacs Lisp)控制。[此任务是ErgoEmacs社区采用的替代方法的一部分,其中 SVG 用于将文本文件转换为 PNG 文件,说明使用 Emacs 的替代人体工程学布局。] 简而言之,这些表格是 Apple 蓝牙键盘的抽象其中每个 Emacs/Org Mode 表代表一行键盘键,因此有六个表,每行有 12 到 14 个键(列)。

在 Emacs 中,在 org-mode 缓冲区中,我的抽象完美呈现,使用 org 模式元行来指定每列的大小:| / | <c12> | <c7> | <c7> | ...

Emacs 中生成的 Org Mode 输出既准确又强大。在使用 CSS 导出到 HTML 时,我能做的最好的事情(Org Mode 是版本 7,顺便说一句)是将每个单元格的宽度固定为相同的值,这会产生非常不准确的渲染。我试图找出一种方法(使用 CSS 或其他保留 Emacs 缓冲区渲染的方法)为导出的 HTML 分配单个单元格宽度或单个列宽。

建议?

4

2 回答 2

2

如果 fniessen 建议的内容还不够,您可以使用:custom_id: special-table属性将其分配给有问题的表,然后将 CSS 定义放在一个#special-table { ... }类中。

但是,实际上,org-mode已经创建了一些 id(它从节号派生出来),所以你总是可以通过类似#section-id table:nth-child(x) { ... }rule 的方式访问你感兴趣的表。

如果您想动态生成 CSS 规则,那么一种方法是使用一个org-babel代码块来呈现:results html在该块上使用的结果。例如,这样的事情会起作用:

#+NAME: insert-css
#+BEGIN_SRC emacs-lisp :exports none :var nth-child=1
   (print
    (format
     "<style type=\"text/css\">
       #section table:nth-child(%s) { color: orange }
      </style>" nth-child))
#+END_SRC

#+CALL: insert-css(nth-child=3) :results html

The code above produces this output:
# <style type="text/css">
#     #section table:nth-child(3) { color: orange }
#    </style>

但是,后一种方法有一个小缺点:即使所有浏览器都理解<style>HTML 文档正文中的标签,但从技术上讲,将其放在那里是无效的。当然,如果你是超级书呆子,你可以有一个 JavaScript 函数在运行时在一个更合适的位置插入 CSS,但我认为这对这项任务来说太过分了。

于 2013-06-29T07:19:56.397 回答
1

我想您可以(尝试)通过在表格前面添加 #+ATTR_HTML 行来实现您的目标。在那里,您应该插入 CSS 规范。我弄错了吗?

于 2013-06-29T06:43:41.317 回答