Сохранение содержимого исходных блоков при экспорте грамотной программы в HTML с помощью ReadTheOrg - PullRequest
0 голосов
/ 27 мая 2020

Минимальный пример

Я написал программу в режиме org, используя грамотную технику программирования с расширением: 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. У файлов есть содержимое, которое я ожидаю от них, и код компилируется и запускается должным образом.

Чтобы сгенерировать документацию, я хотел бы опубликовать sh вместе с кодом, я использую (org-html-export-to-html). Я ожидал, что либо:

  1. <<tags>> будет заменено их ожидаемым значением, что не было бы идеальным, но, по крайней мере, приемлемым, либо
  2. <<tags>> останется нетронутым в том виде, в каком они представлены, при редактировании org-файла с помощью Emacs.

Однако вывод (org-html-export-to-html) совершенно другой и неожиданный - все <<tags>> заменяются с символом новой строки. Это оставляет мне все блоки кода с неправильным содержанием, которое невозможно понять, не глядя на сгенерированный код или исходный org-файл, что полностью противоречит цели документации, находящейся в отдельном файле. Я не могу заставить всех, с кем я работаю, переключиться на Emacs, чтобы они могли просматривать документацию!

Вопрос

Как указано выше, проблема в том, что noweb <> обрабатывается каким-то вызовом внутри (org-html-export-to-html). В связи с этой проблемой у меня возникает следующий вопрос:

Как я могу заставить (org-html-export-to-html) оставить содержимое исходных блоков таким, как оно есть, не удаляя noweb <<tags>>?

1 Ответ

1 голос
/ 29 мая 2020

IIU C, нужно указать соответствующий заголовок :noweb. Попробуйте следующее:

#+begin_src cpp :noweb no-export

и обратитесь к разделу noweb в руководстве, чтобы узнать о других значениях и более подробной информации.

...