Tenho muitos documentos como arquivos org que possuem uma propriedade CUSTOM_LABEL, como
* Introduction
:PROPERTIES:
:CUSTOM_LABEL: AP 1
:END:
Nesse caso, os arquivos precisam ser exportados como LaTeX, traduzindo cada CUSTOM_LABEL
um como a \label{marker}
. O exemplo acima deve ser traduzido para \label{AP 1}
.
Eu já sei como chamar funções personalizadas no momento da exportação, mas não sou especialista o suficiente para escrever um resumo para fazer essa conversão específica, ou seja, CUSTOM_LABEL
->\label{}
Como o desafiador para injetar um custom_label
como \label{}
está escrito?
Eu apreciaria mesmo apenas alguns pseudo-códigos ou alguns indicadores.
Estou fazendo essa pergunta aqui, em vez de outros lugares, porque essa é mais uma pergunta do Emacs, já que pesquisei minuciosamente o manual do modo organizacional e esse tipo de recurso não está disponível no momento.
Uma função genérica para converter uma determinada PROPRIEDADE ao exportar (LaTeX, HTML ou qualquer outro formato) seria ainda melhor.
Obrigado.
fonte
emacs-orgmode
lista (entre outras, lists.gnu.org/archive/html/emacs-orgmode/2014-09/msg00498.html ). Eu tentei esse código, e apenas definindoorg-latex-custom-id-as-label
. Funciona bem com a exportação de HTML, mas não tem nenhum efeito com a exportação do LaTeX. Eu gostaria de poder confiar apenas nasorg-mode
funções principais, ainda assim como a resposta de @ malababrba, pois permite uma boa generalização.\section{h}\label{sec-1}
que estou usandoGNU Emacs 24.3.94.1 (x86_64-apple-darwin13.4.0, NS apple-appkit-1265.21) of 2014-10-04 on builder10-9.porkrind.org
eOrg-mode version 8.2.6 (release_8.2.6-1 @ /Applications/Emacs.app/Contents/Resources/lisp/org/)
. Também, para ter certeza, renomei meu arquivo .emacs.d, para que ele funcionasse sem itens personalizados.org-mode
usando estael-get
receita: github.com/dimitri/el-get/blob/master/recipes/org-mode.rcp , mas ainda receboOrg-mode version 8.2.6 (release_8.2.6-1 @ /Users/gsl/.emacs.d/el-get/org-mode/lisp/
Você sabe como ajustar essa receita para que eu possa usá-la no dev-branch? Eu também poderia fazer isso como nova pergunta. Muito obrigado por apontar isso.Respostas:
Eu escrevi uma função que faz o que você deseja de uma maneira bastante extensível. Ele verifica quais títulos contêm a propriedade
CUSTOM_LABEL
(ou alguma outra propriedade configurada) e chama a funçãoendless/insert-org-label-latex
em cada uma delas com o valor da propriedade como argumento.O trecho de exemplo também mostra como estendê-lo para html ou outros back-ends.
Configure as substituições
Com essa variável, você pode configurar as propriedades importantes e quais funções são chamadas para lidar com cada propriedade.
O trabalhador pesado
Esta função é o que você deve adicionar ao gancho de exportação organizacional. Ele cuida da verificação das propriedades listadas acima e da chamada das funções associadas a essas propriedades.
As funções que você define
Estes são os que fazem a substituição real. Abaixo está um exemplo para o caso de látex.
Resultado
Avalie todo esse código acima e exporte o seguinte buffer organizacional para o látex.
O buffer de látex resultante deve ser algo assim.
fonte
Nota para os trechos de código, você deve usar a versão de desenvolvimento atual
(org-version) => "8.3beta"
,.Por favor, use
CUSTOM_ID
e link interno. Veja(info "(org) Handling links")
.Na maioria dos casos, você não deve se preocupar com o resultado exportado da nomeação interna na organização. Os links para figuras e manchetes, digamos, estarão corretos quando exportados. Veja
(info "(org) Internal links")
.Para o LaTeX, tente:
Resultado:
Nos exportadores, como
ox-odt
e asox-html
manchetes, contêm os IDs internosID
eCUSTOM_ID
. Qual link é usado depende do link:Resultado:
fonte
CUSTOM_ID
, enquanto ainda estiver usando @ malabarba's para passar qualquer outra propriedade organizacional. Na verdade, estou usando dessa maneira para passar algumas outras propriedades (como cite-keys, gênero, local etc.) ao ladoCUSTOM_ID
.Não tenho certeza, mas você provavelmente precisará aconselhar ou mesmo substituir a função exportador. Na Org 8, é isso
org-latex-export-headline
.A função obtém o elemento do título, o conteúdo do título e uma lista de propriedades adicionais. Na função exportador, você pode obter propriedades do elemento (incluindo seu rótulo personalizado) com
org-element-property
.fonte
org
exportador não trabalha muito com aconselhamento, mas criafilter
funções para serem chamadas em um determinado estágio do processo de exportação, mais ou menos assim: `` (eval-after -load 'ox-latex' (adicionar à lista 'funções org-export-filter-final-output-functions' my-filter-function)) `` `(Não sei por que a sintaxe do back-tick não funciona nos comentários?)