如何使用Emacs日历在Lisp中实现24节气

如何使用Emacs日历在Lisp中实现24节气,emacs,calendar,lisp,elisp,Emacs,Calendar,Lisp,Elisp,我试图学习Emacs源代码中cal-china.el中的代码,发现以下代码: ;;;###holiday-autoload (defun holiday-chinese-winter-solstice () "Date of Chinese winter solstice, if visible in calendar. Returns (((MONTH DAY YEAR) TEXT)), where the date is Gregorian." (when (memq display

我试图学习Emacs源代码中cal-china.el中的代码,发现以下代码:

;;;###holiday-autoload
(defun holiday-chinese-winter-solstice ()
  "Date of Chinese winter solstice, if visible in calendar.
Returns (((MONTH DAY YEAR) TEXT)), where the date is Gregorian."
  (when (memq displayed-month '(11 12 1)) ; is December visible?
    (list (list (calendar-gregorian-from-absolute
             (calendar-chinese-zodiac-sign-on-or-after
              (calendar-absolute-from-gregorian
               (list 12 15 (if (eq displayed-month 1)
                               (1- displayed-year)
                             displayed-year)))))
            "Winter Solstice Festival"))))
此代码用于计算该值。我也知道这24个是计算所需要的。所以我想知道如何用Lisp计算所有24个节气


谢谢。

任何对中国日历感兴趣的人,请参阅本回购协议了解详细信息

安装
cal-china-x

###自动加载
(德芬假日节气)
节气日的假日。
有关节气名称列表,请参见“cal-china-x-solar-term-name”
(cal-china-x-sync-solar-term显示年份)
(let)((术语cal-china-x-solar-term-alist)
(日期)
(而
(setq i(汽车术语)
条款(cdr条款))
(当(字符串=(cdr i)节气)
(让((m(caar i))
(y(cl caddar i)))
;;显示年份、显示月份对于中心月份是准确的
;仅限。跨年度视图:“(11 12 1),”(12 12)
(何时(或(和)(cal-china-x-cross-year-view-p)
(或)(和(=第12个月显示)
(=m1)
(=y(1+显示年份)))
(和(=第1个月显示)
(=m 12)
(=y(1-显示年份()))
(=y显示年份))
(setq术语“()
日期(第一辆车(()())))
(假日固定(汽车日期)(cadr日期)str)