Избегайте printbibliography поглощается заголовками Org-mode
при использовании Org-mode и его экспорта LaTeX BibTeX или Biblatex часто используется для обработки ссылок. В этом случае команда LaTeX printbibliography
часто включается в файл org. printbibliography
помещается в файл организации, где LaTeX должен записать список ссылок. Что?!--2--> does-вставить заголовок LaTeX вместе со списком ссылок. В большинстве случаев printbibliography
находится в конце файла org просто потому, что в большинстве документов список литературы должен быть помещен последним. Это средство это printbibliography
будет включен под последним заголовком в файл организации, например
* Heading
printbibliography
это также означает, что когда этот заголовок сложен printbibliography
будет проглатывании:
* Heading...
но это противоречит смыслу printbibliography
потому что он включает свой собственный заголовок в выводе. Кроме того, это будет запутанным, когда printbibliography
проглатывается, и после него помещается новый заголовок, потому что тогда список ссылок больше не будет отображаться последним в документ.
как я могу сделать так, чтобы printbibliography
не проглатывается разделами в Org-mode? Бонусный вопрос: как я могу сделать так, чтобы Org-mode не создавал заголовки после printbibliography
Если C-Ret нажата, когда курсор находится после него?
в поисках решения этой проблемы я нашел http://comments.gmane.org/gmane.emacs.orgmode/49545.
5 ответов
следующее слегка протестировано, но работает для меня с помощью tab и shift-tab, чтобы скрыть и отобразить вещи. Это единственные команды, которые я использую, чтобы скрыть и показать, поэтому, если вы используете другие команды, их, возможно, придется посоветовать или исправить каким-то другим способом.
вы можете, конечно, изменить org-footer-regexp
все, что вы хотите. Я надеялся не использовать никаких советов, но без советов org-end-of-subtree
последний заголовок никогда не циклически с вкладкой, потому что он думает, что он не скрыт, поэтому он скрывает его и тогда org-cycle-hook
отобразить его. Он зовет org-end-of-subtree
перед org-pre-cycle-hook
так что это не вариант.
(defvar org-footer-regexp "^\\printbibliography\[.*\]$"
"Regexp to match the whole line of the first line of the footer which should always be shown.")
(defun show-org-footer (&rest ignore)
(save-excursion
(goto-char (point-max))
(when (re-search-backward org-footer-regexp nil t)
(outline-flag-region (1- (point)) (point-max) nil))))
(add-hook 'org-cycle-hook 'show-org-footer)
(add-hook 'org-occur-hook 'show-org-footer)
(defadvice org-end-of-subtree (after always-show-org-footer
()
activate)
(when (>= (point) (1- (point-max)))
(re-search-backward org-footer-regexp nil t)
(setq ad-return-value (point))))
обходной путь для этой проблемы-сделать \printbibliography
не возвращайте заголовок LaTeX, чтобы его можно было поместить под заголовком Org-mode.
С biblatex это можно сделать, поставляя \printbibliography
с параметром heading=none
и поместить его под соответствующим заголовком. Вот пример:
* Heading
* References
\printbibliography[heading=none]
таким образом, ссылки могут храниться в собственном заголовке и \printbibliography
быть поглощенным заголовком не проблема, потому что это поглотил собственный курс.
одно решение будет следующим:
#+macro: printbiblio (add extra spaces here, but cannot add comment)
* Test 2
This is a test
* {{{printbiblio}}}
Test text
\printbibliography
*
asdf
Как это вы в конечном итоге с пустой заголовок в нижней части документа. Макрос расширяется до пустого блока текста, поэтому вы получаете
\section{Test 2}
\label{sec-1}
This is a test
\section{}
Test text
\printbibliography
\section{}
asdf
Это также гарантирует, что вы не можете случайно добавлять заголовки после вашей библиографии, так как это собственный (пустой) заголовок. Это может быть (кажется, на самом деле) включено в оглавление, что вызывает сожаление, но я подозреваю, что решение будет в худшее запустить post-export, чтобы удалить пустой заголовок из файла (или вручную сделать это перед преобразованием в PDF).
другим решением было бы поместить библиографию под заголовком "ссылки", например:
* Heading
Some text
* References
\printbibliography
и удалить \section{References}
из полученного файла latex, добавив это в файл инициализации emacs
(defun org-export-latex-remove-references-heading (contents backend info)
(if (not (eq backend 'latex))
contents
(replace-regexp-in-string "\\section\*?{References}\s-*\\label{.*?}" "" contents)
))
(add-hook 'org-export-filter-final-output-functions 'org-export-latex-remove-references-heading)
обратите внимание, что это предполагает, что у вас есть только один заголовок с именем "ссылки", поскольку он заменяет все вхождений. Он также предполагает, что разделы находятся в этом формате:
\section{References}
\label{<any_string>}
\printbibliography
для других форматов необходимо поменять регулярное выражение в
* References
:PROPERTIES:
:UNNUMBERED: t
:END:
\printbibliography[heading=none]
существует более простой способ решить эту проблему. Просто добавьте" ненумерованные " свойства в заголовок, и он будет экспортирован без нумерации.