导出时的组织模式时间戳格式

问题描述 投票:0回答:4

我将组织模式文件导出到 LaTeX,并且经常使用

C-c .
时间戳作为顶级标题,就像滚动日记一样。

但是,当它导出为 PDF 时,

<2014-04-25 Fri>
看起来有点滑稽。 是否有一个通用设置可以将时间戳转换为某种格式化日期,例如“2014 年 4 月 25 日星期五”或某种其他常见的日期字符串格式?

我查看了here并了解输入日期有多种方法,但我想也必须有输出格式。 我还看到有一个导出时间戳设置here

<:
Toggle inclusion of any time/date active/inactive stamps (org-export-with-timestamps). 

但我不清楚实施意味着什么。

datetime emacs org-mode
4个回答
8
投票

试试这个:

(let ((org-time-stamp-custom-formats
       '("<%A, %B %d, %Y>" . "<%A, %B %d, %Y %H:%M>"))
      (org-display-custom-times 't))
  (org-latex-export-to-latex))

更新:如果你想从输出字符串中删除括号

<>
,你必须修补函数
org-translate-time
。正常行为:

(let ((org-time-stamp-custom-formats
       '("<%A, %B %d, %Y>" . "<%A, %B %d, %Y %H:%M>"))
      (org-display-custom-times 't))
  (org-translate-time "<2014-04-29 Tu.>")) => "<Tuesday, April 29, 2014>"

具有像这里这样的修补功能https://gist.github.com/boykov/11387660

(let ((org-time-stamp-custom-formats
       '("<%A, %B %d, %Y>" . "<%A, %B %d, %Y %H:%M>"))
      (org-display-custom-times 't))
  (org-translate-time "<2014-04-29 Tu.>")) => "Tuesday, April 29, 2014"

方括号

<>
被硬编码在函数
org-translate-time
中,您无法通过仅修复
org-time-stamp-custom-formats
来删除它们。


8
投票

您可以通过向

org-translate-time
添加以下函数来删除括号,而不是修补
org-export-filter-timestamp-functions

(defun org-export-filter-timestamp-remove-brackets (timestamp backend info)
  "removes relevant brackets from a timestamp"
  (cond
   ((org-export-derived-backend-p backend 'latex)
    (replace-regexp-in-string "[<>]\\|[][]" "" timestamp))
   ((org-export-derived-backend-p backend 'html)
    (replace-regexp-in-string "&[lg]t;\\|[][]" "" timestamp))))

(eval-after-load 'ox '(add-to-list
                       'org-export-filter-timestamp-functions
                       'org-export-filter-timestamp-remove-brackets))

请参阅 http://endlessparentheses.com/better-time-stamps-in-org-export.html 了解更多详情。


2
投票

以下内容对我来说效果很好。我喜欢它,因为它不需要过滤掉“[]”或“<>”,并且选择目标格式非常简单。不要忘记通过将

#+BIND
设置为
org-export-allow-bind-keywords
来允许
t

#+BIND: org-latex-inactive-timestamp-format "%s"
#+BIND: org-latex-active-timestamp-format "%s"
#+BIND: org-export-filter-timestamp-functions (tmp-f-timestamp)
#+BEGIN_SRC emacs-lisp :exports results :results none
  (defun tmp-f-timestamp (s backend info)
    (cond
     ((org-export-derived-backend-p backend 'latex)
      (let ((ts (org-timestamp-format (org-timestamp-from-string s) "%Y-%m-%d")))
        (format "\\fbox{\\textbf{%s}} " ts)
      ))
     (t s)))
#+END_SRC

0
投票

一个有点迟到的答案,不过,到目前为止我们已经:

(setq org-html-metadata-timestamp-format "%Y-%m-%d %a %H:%M") 

您可以覆盖 .dir-locals.el 中的变量来管理每个项目的格式。

© www.soinside.com 2019 - 2024. All rights reserved.