Previous: 生成纵轴标注列, Up: print-Y-axis 函数   [Contents][Index]


C.2.4 print-Y-axis 的接近最终版 ¶

由 Y-axis-column 构造的列表会被传给 print-Y-axis 函数,由它将列表以列的形式插入。

(defun print-Y-axis (height full-Y-label-width)
  "使用 HEIGHT 和 FULL-Y-LABEL-WIDTH 插入纵轴。
高度应为图表的最大高度。
总宽度为最高标注元素的宽度。"
;; height 和 full-Y-label-width 的值
;; 由 print-graph 传入。
  (let ((start (point)))
    (insert-rectangle
     (Y-axis-column height full-Y-label-width))
    ;; 将光标定位到适合插入图表主体的位置。
    (goto-char start)
    ;; 将光标向前移动 full-Y-label-width 宽度
    (forward-char full-Y-label-width)))

print-Y-axis 使用 insert-rectangle 函数插入由 Y-axis-column 创建的纵轴标注。此外,它还会将光标放到正确位置,以便打印图表主体。

你可以测试 print-Y-axis:

  1. 安装
    Y-axis-label-spacing
    Y-axis-tic
    Y-axis-element
    Y-axis-column
    print-Y-axis
    
  2. 复制下面的表达式:
    (print-Y-axis 12 5)
    
  3. 切换到 *scratch* 缓冲区,将光标放到希望轴标注开始的位置。
  4. 输入 M-:(eval-expression)。
  5. 用 C-y(yank)将 graph-body-print 表达式粘贴到小缓冲。
  6. 按下 RET 求值。

Emacs 会纵向打印标注,最上方一条是 ‘10 - ’。(print-graph 函数会传入 height-of-top-line,在本例中最终为 15,从而消除看似 bug 的表现。)