J'ai de nombreux documents en tant que fichiers org qui ont une propriété CUSTOM_LABEL, comme
* Introduction
:PROPERTIES:
:CUSTOM_LABEL: AP 1
:END:
Dans ce cas, les fichiers doivent être exportés en tant que LaTeX, traduisant chacun CUSTOM_LABEL
en a \label{marker}
. L'exemple ci-dessus devrait se traduire par \label{AP 1}
.
Je sais déjà comment appeler des fonctions personnalisées au moment de l'exportation, mais je ne suis pas assez expert pour écrire un defun pour faire cette conversion particulière, c'est CUSTOM_LABEL
-à- dire ->\label{}
Comment le defun pour injecter un custom_label
tel \label{}
peut-il être écrit?
J'apprécierais même juste un pseudo-code ou des pointeurs.
Je pose cette question ici à la place d'autres endroits, car il s'agit plus d'une question Emacs, car j'ai cherché à fond dans le manuel du mode org, et ce type de fonctionnalité n'est actuellement pas disponible.
Une fonction générique pour convertir une PROPRIÉTÉ donnée lors de l'exportation (LaTeX, HTML ou tout autre format), serait encore mieux.
Je vous remercie.
emacs-orgmode
liste (entre autres, lists.gnu.org/archive/html/emacs-orgmode/2014-09/msg00498.html ). J'ai essayé ce code, et juste le réglageorg-latex-custom-id-as-label
. Cela fonctionne très bien avec l'exportation HTML, mais cela n'a aucun effet avec l'exportation LaTeX. Je souhaite pouvoir compter uniquement surorg-mode
les fonctions de base, j'aime toujours la réponse de @ malababrba, car elle permet une belle généralisation.\section{h}\label{sec-1}
j'utiliseGNU 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
etOrg-mode version 8.2.6 (release_8.2.6-1 @ /Applications/Emacs.app/Contents/Resources/lisp/org/)
. De plus, pour m'assurer que j'ai renommé mon .emacs.d, il a donc fonctionné sans aucun élément personnalisé.org-mode
utilisant cetteel-get
recette: github.com/dimitri/el-get/blob/master/recipes/org-mode.rcp , mais j'obtiens toujours SavezOrg-mode version 8.2.6 (release_8.2.6-1 @ /Users/gsl/.emacs.d/el-get/org-mode/lisp/
-vous comment modifier cette recette afin de pouvoir l'utiliser pour le dev-branch? Je pourrais aussi poser cette question comme nouvelle question. Merci beaucoup d'avoir souligné cela.Réponses:
J'ai écrit une fonction qui fait ce que vous voulez d'une manière assez extensible. Il vérifie quels titres contiennent la propriété
CUSTOM_LABEL
(ou une autre propriété que vous configurez) et appelle la fonctionendless/insert-org-label-latex
sur chacun d'eux avec la valeur de la propriété comme argument.L'extrait d'exemple montre également comment l'étendre pour le HTML ou d'autres backends.
Configurer les remplacements
Avec cette variable, vous pouvez configurer les propriétés qui vous intéressent et quelles fonctions sont appelées pour gérer chaque propriété.
Le travailleur lourd
Cette fonction est ce que vous devez ajouter au hook d'exportation de l'organisation. Il prend soin de vérifier les propriétés répertoriées ci-dessus et d'appeler les fonctions associées à ces propriétés.
Les fonctions que vous définissez
Ce sont eux qui effectuent le remplacement réel. Voici un exemple pour le boîtier en latex.
Résultat
Évaluez tout ce code ci-dessus, puis exportez le tampon d'organisation suivant vers latex.
Le tampon en latex résultant devrait ressembler à ceci.
la source
Note pour les extraits de code , vous devez utiliser le courant de développement version,
(org-version) => "8.3beta"
.Veuillez utiliser
CUSTOM_ID
et lien interne. Tu vois(info "(org) Handling links")
.Dans la plupart des cas, vous ne devez pas vous inquiéter du résultat exporté de la dénomination interne dans Org. Les liens vers les chiffres et les titres, par exemple, seront corrects lors de l'exportation. Tu vois
(info "(org) Internal links")
.Pour LaTeX, essayez:
Résultat:
Dans les exportateurs tels que
ox-odt
et lesox-html
titres contiennent à la fois l'ID interneID
etCUSTOM_ID
. Le lien utilisé dépend du lien:Résultat:
la source
CUSTOM_ID
, tout en utilisant @ malabarba pour passer toute autre propriété organisationnelle. Je l'utilise en fait de cette façon pour passer quelques autres propriétés (comme les touches de citation, le genre, le lieu, etc.), à côtéCUSTOM_ID
.Je ne suis pas sûr, mais vous devrez probablement conseiller ou même remplacer la fonction d'exportateur. Dans Org 8, c'est
org-latex-export-headline
.La fonction obtient l'élément de titre, le contenu du titre et une liste de propriétés supplémentaires. Dans la fonction d'exportation, vous pouvez obtenir les propriétés des éléments (y compris votre étiquette personnalisée) avec
org-element-property
.la source
org
exportateur ne travaille pas trop avec le conseil, mais plutôt on crée desfilter
fonctions à appeler à une certaine étape du processus d'exportation, à peu près comme ceci: `` (eval-after -load 'ox-latex' (add-to-list 'org-export-filter-final-output-functions' my-filter-function)) `` (Je ne sais pas pourquoi la syntaxe de retour à zéro ne fonctionne pas dans les commentaires?)