【问题标题】:Fine (CSS) granularity on HTML table cells exported via Emacs/Org Mode通过 Emacs/Org 模式导出的 HTML 表格单元格的精细 (CSS) 粒度
【发布时间】:2013-06-29 03:34:42
【问题描述】:

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

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

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

建议?

【问题讨论】:

    标签: emacs org-mode ergonomics


    【解决方案1】:

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

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

    如果您想动态生成 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>
    

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

    【讨论】:

    • 这种方法有一些潜力,因为它利用了部分 id,这是我应该想到的。我认为正确的做法是让 elisp 代码生成外部 CSS 文件。非常值得研究。
    【解决方案2】:

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

    【讨论】:

    • 只有当你知道这个特定的属性可以写成第 1 列宽度为 9em,第 2 列到第 14 列宽度为 7em 等时,你才不会弄错。我不知道如何从 ATTR_HTML 实体执行此操作。
    猜你喜欢
    • 2023-03-12
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多