我想在org mode中计算子树(标题)中的字符数。目前我已经知道如何计算单个段落中的字符数,但是不知道如何计算多个段落的字符数。我首先定义一个源代码块:
然后我在指定的段落上使用它:
这个功能很好,但是 #+NAME: 只覆盖了一个段落。我尝试使用标题作为参数,但是我无法使其正常工作。
编辑:根据评论,我想到了以下解决方案:
它作为调用时几乎实现了我想要的功能。
但是它存在一个问题,即将源代码块(包括其本身)以及文本一起计算。我想要仅计算文本(不包括标题)。
#+NAME: countChars
#+BEGIN_SRC sh :var X="" :results output
echo "$X" | wc --chars
#+END_SRC
然后我在指定的段落上使用它:
#+NAME: paragraph
This is the paragraph
#+CALL: countChars(paragraph)
这个功能很好,但是 #+NAME: 只覆盖了一个段落。我尝试使用标题作为参数,但是我无法使其正常工作。
编辑:根据评论,我想到了以下解决方案:
#+NAME: countChars
#+BEGIN_SRC emacs-lisp :results output :eval no-export :exports results
(interactive)
(save-excursion
(org-mark-subtree)
(setq a (- (mark) (point)))
(deactivate-mark)
(prin1 'Count= )
(prin1 a))
#+END_SRC
它作为调用时几乎实现了我想要的功能。
#+CALL: countChars()
但是它存在一个问题,即将源代码块(包括其本身)以及文本一起计算。我想要仅计算文本(不包括标题)。
(org-mark-subtree)
之后加上(forward-line 1)
。此外,您可以省略(interactive)
。这只是将defuns转换为M-x命令的方式。另外,如果子树内容包含其他子树,我不知道您想要发生什么。 - scbagley