4

Org-mode 有一个很棒的功能,可以包含这样的源代码:

#+begin_src java -n
    /**
     * @param foo
     */
    public static void doBar(Baz ba)
    {
        Collection<String> strings = ba.getStrings(true);
        return strings;
    }
#+end_src

-n选项显示行号。

可以+n选择从最后一个块继续编号。

有没有设置起始号码的选项?这对于您希望行号与完整文件相对应的源代码片段很有用。

4

3 回答 3

9

这已在 Org Mode 9 中添加。现在可以将数字传递给-n+n

因此,例如,您可以使用以下标题使示例从第 12 行开始:

#+begin_src java -n 12
...
#+end_src
于 2016-11-22T20:21:01.117 回答
3

我同意jco。该问题的长答案可能如下所示。但除了屏幕截图之外,它只是从手册中复制和粘贴。

如章节文字示例中所述,您可以将行号添加到源代码块和示例代码块:

在示例和 src 代码段中,您都可以在行-n尾添加一个开关BEGIN,以便为示例的行编号。接受一个可选的 -n数字参数,指定块的起始行号。如果您使用+n开关,则前一个编号片段中的编号将在当前片段中继续。+n 也可以采用数字参数。参数的值将添加到前一个块的最后一行以确定起始行号。

您还可以参考行号:

在文字示例中,Org 会将字符串解释(ref:name)为标签,并将它们用作特殊超链接[[(name)]] (例如,单括号中的引用名称)的目标。在 HTML 中,将鼠标悬停在这样的链接上会远程突出显示相应的代码行,这很酷。

演示这两个功能的示例是

#+BEGIN_SRC emacs-lisp -n -r
(save-excursion                  (ref:sc)
   (goto-char (point-min)))      (ref:jump)
#+END_SRC

In line [[(sc)]] we remember the current position.
[[(jump)][Line (jump)]] jumps to point-min.

它会产生

带有行号的引用代码的屏幕截图。

于 2019-07-11T08:21:06.630 回答
1

此答案已过时,请参阅其他答案

我所知道的没有实施的选项。

我刚刚测试的一个非常 hacky 的解决方案是定义自己的计数器组织用于 +n 工作。它去:

#+begin_src emacs-lisp :exports results
;; we need it not be a buffer-local value
(setq-default org-export-last-code-line-counter-value 42)
#+end_src

由于是一个肮脏的黑客,它只能在第一个块中工作一次,但我不确定 ±n 的行为如何。在对任何其他块进行编号之前对其进行评估(因为 :exports 结果,在我尝试时没有实际导出任何内容),因此它可以位于缓冲区中的任何位置。

我想这不会很难实现,或者真正了解 elisp 的人可以做得更好,但我希望它会有所帮助。

于 2012-09-10T03:28:13.770 回答