使用 ReadTheOrg 将文学程序导出到 HTML 时保留源块的内容
Preserving content of source blocks when exporting literate program to HTML with ReadTheOrg
最小示例
我使用带有 :noweb 扩展名(?)的文学编程技术在组织模式下编写了一个程序。典型的代码片段如下所示:
* Section
In order to do foo with bar, we define a function ~do_foo~, which initializes object of a class ~BarParser~ with a value of parameter of the type ~bar_t~.
#+name: section_function_blockname
#+begin_src cpp
void do_foo
( bar_t bar
, <<additional_parameter_to_do_foo>>
) {
BarParser barParser(bar);
<<section_function_do_fooBody>>
}
#+end_src
The function will require additional parameter for the purposes of the /FizzBazz/ module. We will discuss them in a [[*Decoding FizzBazz messages][later_section]].
程序的全部内容存储在一个文件中,文件顶部有 #+SETUP: theme-readtheorg.setup
。安装文件不是问题,因为 HTML 生成正确,只是没有我想要的内容。
问题
为了生成代码,我使用 (org-babel-tangle)
。这会为所有带有 :tangle 参数的块生成我期望的所有文件。这些文件具有我希望它们具有的内容,并且代码可以按应有的方式编译和运行。
为了生成我想随代码发布的文档,我使用 (org-html-export-to-html)
。我期望发生的是:
<<tags>>
将被替换为他们的预期值,这不是理想的但至少可以接受,或者
- 在使用 Emacs 编辑 org 文件时,
<<tags>>
将保持原样。
然而 (org-html-export-to-html)
的输出完全不同且出乎意料 - 所有 <<tags>>
都被替换为换行符。这给我留下了所有具有不正确内容的代码块,如果不查看生成的代码或原始组织文件就无法理解,这完全违背了将文档放在单独文件中的目的。我不能强迫与我一起工作的每个人都切换到 Emacs 让他们浏览文档!
问题
如上所述,问题在于 (org-html-export-to-html)
中的某个调用正在处理 noweb <>。我对这个问题的疑问是:
如何强制 (org-html-export-to-html)
保留源块的内容,而不剥离 noweb <<tags>>
?
IIUC,你需要指定一个合适的:noweb
header。试试这个:
#+begin_src cpp :noweb no-export
并参考手册中的 noweb section 了解其他值和更多详细信息。
最小示例
我使用带有 :noweb 扩展名(?)的文学编程技术在组织模式下编写了一个程序。典型的代码片段如下所示:
* Section
In order to do foo with bar, we define a function ~do_foo~, which initializes object of a class ~BarParser~ with a value of parameter of the type ~bar_t~.
#+name: section_function_blockname
#+begin_src cpp
void do_foo
( bar_t bar
, <<additional_parameter_to_do_foo>>
) {
BarParser barParser(bar);
<<section_function_do_fooBody>>
}
#+end_src
The function will require additional parameter for the purposes of the /FizzBazz/ module. We will discuss them in a [[*Decoding FizzBazz messages][later_section]].
程序的全部内容存储在一个文件中,文件顶部有 #+SETUP: theme-readtheorg.setup
。安装文件不是问题,因为 HTML 生成正确,只是没有我想要的内容。
问题
为了生成代码,我使用 (org-babel-tangle)
。这会为所有带有 :tangle 参数的块生成我期望的所有文件。这些文件具有我希望它们具有的内容,并且代码可以按应有的方式编译和运行。
为了生成我想随代码发布的文档,我使用 (org-html-export-to-html)
。我期望发生的是:
<<tags>>
将被替换为他们的预期值,这不是理想的但至少可以接受,或者- 在使用 Emacs 编辑 org 文件时,
<<tags>>
将保持原样。
然而 (org-html-export-to-html)
的输出完全不同且出乎意料 - 所有 <<tags>>
都被替换为换行符。这给我留下了所有具有不正确内容的代码块,如果不查看生成的代码或原始组织文件就无法理解,这完全违背了将文档放在单独文件中的目的。我不能强迫与我一起工作的每个人都切换到 Emacs 让他们浏览文档!
问题
如上所述,问题在于 (org-html-export-to-html)
中的某个调用正在处理 noweb <>。我对这个问题的疑问是:
如何强制 (org-html-export-to-html)
保留源块的内容,而不剥离 noweb <<tags>>
?
IIUC,你需要指定一个合适的:noweb
header。试试这个:
#+begin_src cpp :noweb no-export
并参考手册中的 noweb section 了解其他值和更多详细信息。