如何将日历与周数对齐作为月间文本

9
当我使用Emacs calendar/diary和org-mode(然而我不认为这是问题的原因)时,遇到了以下问题。
默认日历长这样: calendar 我添加以下代码以显示周数:
(copy-face font-lock-constant-face 'calendar-iso-week-face)
(set-face-attribute 'calendar-iso-week-face nil
                    :height 1)

(setq calendar-intermonth-text
      '(propertize
        (format "%2d"
                (car
                 (calendar-iso-from-absolute
                  (calendar-absolute-from-gregorian (list month day year)))))
        'font-lock-face 'calendar-iso-week-face))

; Title for week number
(copy-face 'default 'calendar-iso-week-header-face)
(set-face-attribute 'calendar-iso-week-header-face nil
                    :height 0.7)
(setq calendar-intermonth-header
      (propertize "Wk"                  ; or e.g. "KW" in Germany
                  'font-lock-face 'calendar-iso-week-header-face))

在插入这些代码之后,周数可以显示。然而,对齐方式有点奇怪,如下所示: 日历的最后一行没有对齐。如何解决这个问题?
谢谢。

将ISO周面的高度和字体与日历中其余部分使用的相同高度和字体进行添加,这样做怎么样?-- 这样做后,它就不会再变小了,但我认为它可以解决你的问题。我认为试图保持它小并与较大的对齐可能会有问题,但是通过考虑类似于linum模式的一些附加编码,这是可行的。 - lawlist
1个回答

6
你的“height”设置导致了问题。你可以尝试调整其他变量,例如:“calendar-left-margin”,“calendar-column-width”,“calendar-day-header-width”,“calendar-day-digit-width”,“calendar-intermonth-header”,“calendar-intermonth-text”。
注意:如果有人想知道如何将周六突出显示而不是周一,则函数“calendar-generate-month”有一行代码包含“(if (memq i '(0 6))”——如果将“calendar-week-start-day”从“0”更改为“1”,则需要将上述代码从“0 6”更改为“5 6”。或者,可以通过添加一周中每天的新关键字来覆盖字体锁定设置。
(setq calendar-week-start-day 1)

(setq calendar-intermonth-text
      '(propertize
        (format "%2d"
                (car
                 (calendar-iso-from-absolute
                  (calendar-absolute-from-gregorian (list month day year)))))
        'font-lock-face 'font-lock-warning-face))

(setq calendar-intermonth-header
      (propertize "Wk"                  ; or e.g. "KW" in Germany
                  'font-lock-face 'font-lock-keyword-face))

示例
(来源:lawlist.com

这是一个日历的示例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接