Links externos no modo organizacional não funcionam quando exportados para HTML

8

Eu tenho 2 .orgarquivos:

// a.org contains the anchor
<<my_anchor>>

// b.org contains the link to my_anchor
[[file:a.org::my_anchor][My Link]]

Quando clico no link no modo organizacional, ele é vinculado corretamente à posição de my_anchorin a.org. Mas quando eu exporto esses 2 arquivos para HTML, o que eu espero é:

// b.html
<a href="a.html#my_anchor">My Link</a>

O que eu tenho é:

// b.html
<a href="a.html">My Link</a>

Gostaria de saber como escrever corretamente um link externo para que ele funcione tanto no modo organizacional quanto no HTML exportado.

vicch
fonte
O que recebo é <a id="orgtarget1"></a>dentro a.htmle <a href="a.html#MissingReference">My Link</a>fora b.html, o que é marginalmente melhor, mas não funcional. Esta versão da organização 8.3.3.
Andrew Swann
@AndrewSwann Obrigado pela informação, a minha é 8.2.5. Isso parece promissor, possivelmente requer uma maneira especial de escrever o link no modo organizacional, eu me pergunto como.
vicch
Parece mais um bug para mim - você já tentou denunciá-lo?
Andrew Swann
@AndrewSwann Não, eu não aprendi como relatar um bug. Na verdade, não tenho vontade de investir mais tempo nisso no momento. De qualquer forma, não parece uma questão importante.
vicch
@AndrewSwann É um erro de documentação. Você encontra mais detalhes sobre isso no final da minha resposta abaixo. Arquivei um relatório de bug.
Tobias

Respostas:

7

A corda atrás ::é realmente uma pesquisa . Nesse contexto, entende-se o comentário relevante no código fonte da função org-html-linkno arquivo da biblioteca ox-html.el(org 8.2.5). Diz:

  ;; Add search option, if any.  A search option can be
  ;; relative to a custom-id or a headline title.  Any other
  ;; option is ignored.

Portanto, você pode substituir my_anchorpor #my_anchorpara formar um ID personalizado ou usar um título de manchete começando com o caractere *. No segundo caso, não inclua espaços após o *caractere!

Vincular cabeçalhos de seção em outros arquivos só funciona quando você publica projetos no modo organizacional . Projetos em modo de organização são definidos como membros da variável org-publish-project-alist. Consulte a documentação desta variável e a Seção 13 Publicação do manual do modo organizacional para obter detalhes.

Exemplo: arquivo a.org:

* This is file a.org
  Some important notes.

* Second Section

* Section with a custom-id

  Some text before the custom-id

  <<#my-anchor>> Here we have the custom-id

  Some text behind the custom-id.

Texto no arquivo b.org:

* This is file b.org
  Some text.

* b.org contains the link to my_anchor
  [[file:a.org::#my_anchor][My Link to the custom-id]]

  [[file:a.org::*Second Section][My Link to the headline of the second section]]

Observação: o motivo pelo qual os links para cabeçalhos em outros arquivos funcionam apenas com a publicação é que eles são buscados org-publish-cachenos org-publish-resolve-external-fuzzy-linkquais é usado org-html-link.

Os links de cabeçalho de seção são na verdade links numerados, como sec-1, sec-2e os cabeçalhos de seção são traduzidos para os números 1,2, ... por meio de uma lista de associação na variável org-publish-cache.


Considero isso um erro de documentação. A exportação html de links de cabeçalhos de seção em outros arquivos não é mencionada na Seção 13.1.6 Links entre arquivos publicados do manual do modo organizacional. Também não consigo encontrar nenhuma observação da exportação de html de links para IDs personalizados entre arquivos no manual.

Acabei de descobrir essas coisas lendo o código-fonte.


Isto é o que recebi como resposta ao meu relatório de erros:

Thank you for the report.

Unfortunately, this feature is very experimental, and actually quite
buggy. It's not ready for prime time, and therefore not documented.
Tobias
fonte