table 的代码块结果为 属性 值
Code block result as property value for a table
我正在用 Org→Latex 写论文。除了单独的章节文件外,我还在一个单独的文件中跟踪整体结构和进度。我关注并必须报告的一件事是所写页数与预期长度的对比。
我可以使用 pdfinfo
获取各个章节中的物理页数,并使用代码块将其放入大纲中。我可以生成一个 "columnview" table 自动从大纲中的章节信息更新。我想知道如何将两者放在一起。
例子
希望这显示了我正在尝试做的事情。真人的话,明显多了十几章。
#+TITLE: Thesis Outline
#+COLUMNS: %2ID %35ITEM %Target_Pages{+}
#+NAME: count-pdf-pages
#+BEGIN_SRC elisp :exports none :var pdf-file=""
(let
((pdf-file-info (shell-command-to-string (concat "pdfinfo " pdf-file))))
(string-match "Pages:[[:blank:]]+\([0-9]+\)" pdf-file-info)
(match-string 1 pdf-file-info)
)
#+END_SRC
* Chapter outlines
:PROPERTIES:
:ID: outlines
:END:
** 1. Introduction
:PROPERTIES:
:Target_Pages: 5
:END:
This is the introduction of the thesis. It currently has this many pages:
#+NAME: intro-page-count
#+CALL: count-pdf-pages("latex/intro-chapter.pdf")
* Page Allocation and Completion
#+BEGIN: columnview :hlines 1 :id outlines
| ID | ITEM | Target_Pages |
|----------+--------------------+--------------|
| outlines | * Chapter outlines | 5 |
| | ** 1. Introduction | 5 |
#+END
问题
我想做的是能够在末尾的大纲 table 中为每个章节使用 CALL
块的 return 值。但是,在阅读了手册的相关部分几次后,我看不出是否可以将标题的 属性(比如 Written_Pages
)设置为代码块的结果。
显然,我也愿意接受其他组织方法来解决从多个代码调用的结果中生成 table 的问题。
可以使用 org-set-properties
通过 elisp 设置 Org 模式属性。例如,(org-set-properties "Written_Pages" "5")
(注意属性值必须是字符串。所以只需添加一个额外的源代码块:
#+BEGIN_SRC elisp :export none :results none :var p=intro-page-count
(org-set-property "Written_Pages" p)
#+END_SRC
我正在用 Org→Latex 写论文。除了单独的章节文件外,我还在一个单独的文件中跟踪整体结构和进度。我关注并必须报告的一件事是所写页数与预期长度的对比。
我可以使用 pdfinfo
获取各个章节中的物理页数,并使用代码块将其放入大纲中。我可以生成一个 "columnview" table 自动从大纲中的章节信息更新。我想知道如何将两者放在一起。
例子
希望这显示了我正在尝试做的事情。真人的话,明显多了十几章。
#+TITLE: Thesis Outline
#+COLUMNS: %2ID %35ITEM %Target_Pages{+}
#+NAME: count-pdf-pages
#+BEGIN_SRC elisp :exports none :var pdf-file=""
(let
((pdf-file-info (shell-command-to-string (concat "pdfinfo " pdf-file))))
(string-match "Pages:[[:blank:]]+\([0-9]+\)" pdf-file-info)
(match-string 1 pdf-file-info)
)
#+END_SRC
* Chapter outlines
:PROPERTIES:
:ID: outlines
:END:
** 1. Introduction
:PROPERTIES:
:Target_Pages: 5
:END:
This is the introduction of the thesis. It currently has this many pages:
#+NAME: intro-page-count
#+CALL: count-pdf-pages("latex/intro-chapter.pdf")
* Page Allocation and Completion
#+BEGIN: columnview :hlines 1 :id outlines
| ID | ITEM | Target_Pages |
|----------+--------------------+--------------|
| outlines | * Chapter outlines | 5 |
| | ** 1. Introduction | 5 |
#+END
问题
我想做的是能够在末尾的大纲 table 中为每个章节使用 CALL
块的 return 值。但是,在阅读了手册的相关部分几次后,我看不出是否可以将标题的 属性(比如 Written_Pages
)设置为代码块的结果。
显然,我也愿意接受其他组织方法来解决从多个代码调用的结果中生成 table 的问题。
可以使用 org-set-properties
通过 elisp 设置 Org 模式属性。例如,(org-set-properties "Written_Pages" "5")
(注意属性值必须是字符串。所以只需添加一个额外的源代码块:
#+BEGIN_SRC elisp :export none :results none :var p=intro-page-count
(org-set-property "Written_Pages" p)
#+END_SRC