Evite \ printbibliography sendo engolido pelos cabeçalhos do modo Org

9

Ao usar o modo Org e sua exportação LaTeX, o BibTeX ou o Biblatex são frequentemente usados para manipular referências. Nesse caso, o comando LaTeX \printbibliography é frequentemente incluído no arquivo org. \printbibliography é colocado no arquivo org onde o LaTeX deve escrever a lista de referências. O que \printbibliography faz é inserir um cabeçalho LaTeX junto com a lista de referências. Na maioria dos casos \printbibliography é colocado no final do arquivo org, simplesmente porque na maioria dos documentos a lista de referências deve ser colocada por último. Isso significa que \printbibliography será incluído no último cabeçalho do arquivo da organização, por exemplo,

* Heading

  \printbibliography

Isso também significa que quando esse título for dobrado, o \printbibliography será engolido:

* Heading...

Mas isso vai contra o significado de \printbibliography porque inclui seu próprio título na saída. Além disso, será confuso quando \printbibliography for engolido e um novo título for colocado depois, porque a lista de referências não aparecerá mais no documento.

Como posso fazer com que \printbibliography não seja engolido por seções no modo organizacional? Uma pergunta bônus: como posso fazer com que o modo Org não crie cabeçalhos após \printbibliography , a menos que C-Ret seja pressionado quando o cursor estiver após ele?

Ao procurar uma solução para esse problema, encontrei o link .

    
por N.N. 03.02.2012 в 21:18
fonte

5 respostas

1

O que se segue é pouco testado, mas funciona para mim usando a guia "Tab e Shift" para ocultar e exibir as coisas. Esses são os únicos comandos de esconder e mostrar que eu uso, então se você usar outros comandos, eles podem ter que ser avisados ou corrigidos de alguma outra forma.

É claro que você pode alterar org-footer-regexp para o que quiser. Eu estava esperando não ter que usar nenhum conselho, mas sem avisar org-end-of-subtree o último título nunca roda com tab porque ele acha que não está oculto, então ele o oculta e então org-cycle-hook o mostra. Ele chama org-end-of-subtree antes de executar org-pre-cycle-hook , o que também não é uma opção.

(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))))
    
por Ivan Andrus 16.02.2012 / 09:01
fonte
3

Uma solução alternativa para esse problema é fazer com que \printbibliography não retorne um cabeçalho LaTeX para que ele possa ser apropriadamente colocado sob um cabeçalho no modo Org.

Com o biblatex isso pode ser feito fornecendo \printbibliography com a opção heading=none e colocando-o em um cabeçalho apropriado. Aqui está um exemplo:

* Heading

* References

  \printbibliography[heading=none]

Desta forma, as referências podem ser mantidas em um título próprio e \printbibliography sendo engolido por um título não é um problema, porque está sendo engolido por seu próprio cabeçalho.

    
por N.N. 16.02.2012 / 11:55
fonte
1

Uma solução seria a seguinte:

#+macro: printbiblio        (add extra spaces here, but cannot add comment)

* Test 2
  This is a test

* {{{printbiblio}}}
  Test text
  \printbibliography
* 
  asdf

Assim você acaba com um título em branco na parte inferior do documento. A macro se expande para um bloco de texto em branco, então você acaba com

\section{Test 2}
\label{sec-1}

This is a test
\section{}

Test text
\printbibliography
\section{}

asdf

Isso também garante que você não possa adicionar manchetes acidentalmente após a sua bibliografia, já que é o título próprio (vazio). Pode ser (parece ser realmente) incluído no índice, o que é lamentável, mas suspeito que a solução seria, na pior das hipóteses, executar uma pós-exportação para remover o título vazio do arquivo (ou manualmente antes de converter para PDF).

    
por Jonathan Leech-Pepin 03.02.2012 / 23:07
fonte
0

Outra solução seria colocar a bibliografia sob um cabeçalho chamado "Referências" da seguinte forma:

* Heading
Some text
* References
\printbibliography

e remova o \section{References} do arquivo de latex resultante adicionando isto ao seu arquivo init do 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)

Observe que isso pressupõe que você tenha apenas um título chamado "Referências", pois substitui todas suas ocorrências. Ele também assume que as seções estão neste formato:

\section{References}
\label{<any_string>}
\printbibliography

Para outros formatos, você precisa alterar a expressão regular na função org-export-latex-remove-references-heading .

    
por david-hoze 27.11.2014 / 08:19
fonte
0
* References
  :PROPERTIES:
  :UNNUMBERED: t
  :END:

   \printbibliography[heading=none]

Existe uma maneira mais fácil de resolver isso. Basta adicionar uma propriedade "não numerada" ao título e ela será exportada sem numeração.

    
por X.Arthur 20.01.2017 / 19:18
fonte