Mam wiele dokumentów jako pliki organizacji, które mają właściwość CUSTOM_LABEL, na przykład
* Introduction
:PROPERTIES:
:CUSTOM_LABEL: AP 1
:END:
W takim przypadku pliki należy wyeksportować jako LaTeX, tłumacząc każdy CUSTOM_LABEL
jako \label{marker}
. Powyższy przykład powinien zostać przetłumaczony na \label{AP 1}
.
Wiem już, jak wywoływać funkcje niestandardowe w czasie eksportu, ale nie jestem wystarczająco ekspertem, aby napisać defun, aby wykonać tę konkretną konwersję, tj. CUSTOM_LABEL
->\label{}
Jak odmówić wstrzyknięcia, custom_label
jak \label{}
napisano?
Byłbym wdzięczny nawet za jakiś pseudo-kod lub jakieś wskazówki.
Zadaję to pytanie tutaj, a nie w innych miejscach, ponieważ jest to bardziej pytanie Emacsa, ponieważ dokładnie przeszukałem instrukcję trybu org, a tego rodzaju funkcja jest obecnie niedostępna.
Ogólna funkcja do konwersji danego PROPERTY podczas eksportowania (LaTeX, HTML lub dowolny inny format) byłaby jeszcze lepsza.
Dziękuję Ci.
emacs-orgmode
liście (między innymi lists.gnu.org/archive/html/emacs-orgmode/2014-09/msg00498.html ). Próbowałem tego kodu i właśnie ustawiałemorg-latex-custom-id-as-label
. Działa dobrze z eksportem HTML, ale nie ma żadnego wpływu na eksport LaTeX. Chciałbym móc polegać tylko naorg-mode
podstawowych funkcjach, ale podoba mi się odpowiedź @ malababrba, ponieważ pozwala to na miłe uogólnienie.\section{h}\label{sec-1}
używamGNU 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
iOrg-mode version 8.2.6 (release_8.2.6-1 @ /Applications/Emacs.app/Contents/Resources/lisp/org/)
. Ponadto, aby się upewnić, zmieniłem nazwę pliku .emacs.d, więc działał bez żadnych niestandardowych plików.org-mode
przy użyciu tegoel-get
przepisu: github.com/dimitri/el-get/blob/master/recipes/org-mode.rcp , ale wciąż otrzymujęOrg-mode version 8.2.6 (release_8.2.6-1 @ /Users/gsl/.emacs.d/el-get/org-mode/lisp/
Czy wiesz, jak dostosować ten przepis, aby móc go użyć do oddział deweloperów? Mógłbym również zadać to jako nowe pytanie. Dziękuję bardzo za zwrócenie na to uwagi.Odpowiedzi:
Napisałem funkcję, która robi to, co chcesz w dość rozszerzalny sposób. Sprawdza, które nagłówki zawierają właściwość
CUSTOM_LABEL
(lub inną skonfigurowaną właściwość) i wywołuje funkcjęendless/insert-org-label-latex
na każdej z nich z wartością właściwości jako argumentem.Przykładowy fragment pokazuje również, jak go rozszerzyć dla html lub innych backendów.
Skonfiguruj zamienniki
Za pomocą tej zmiennej możesz konfigurować właściwości, na których Ci zależy, i które funkcje są wywoływane do obsługi każdej właściwości.
Ciężki pracownik
Tę funkcję należy dodać do haka eksportu organizacji. Zajmuje się sprawdzaniem właściwości wymienionych powyżej i wywoływaniem funkcji powiązanych z tymi właściwościami.
Funkcje, które definiujesz
Są to te, które faktycznie zastępują. Poniżej znajduje się przykład przypadku lateksu.
Wynik
Oceń cały ten kod powyżej, a następnie wyeksportuj następujący bufor organizacji do lateksu.
Powstały bufor lateksowy powinien być mniej więcej taki.
źródło
Uwaga dla fragmentów kodu należy użyć bieżącej rozwojowych wersji
(org-version) => "8.3beta"
.Proszę używać
CUSTOM_ID
i wewnętrznego linkowania. Zobaczyć(info "(org) Handling links")
.W większości przypadków nie powinieneś się przejmować wyeksportowanym wynikiem wewnętrznego nazewnictwa w organizacji. Na przykład linki do rycin i nagłówków będą poprawne po wyeksportowaniu. Zobaczyć
(info "(org) Internal links")
.W przypadku LaTeX spróbuj:
Wynik:
W eksporterach takich jak
ox-odt
iox-html
nagłówki zawierają zarówno wewnętrzny identyfikator, jakID
iCUSTOM_ID
. To, który link zostanie użyty, zależy od linku:Wynik:
źródło
CUSTOM_ID
, przy jednoczesnym użyciu @ malabarba do przekazywania dowolnej innej właściwości org. Właściwie używam go w ten sposób, aby przekazać kilka innych właściwości (takich jak klawisze cytowania, gatunek, miejsce itp.)CUSTOM_ID
.Nie jestem pewien, ale prawdopodobnie musisz doradzić lub nawet zastąpić funkcję eksportera. To znaczy w Org 8
org-latex-export-headline
.Funkcja pobiera element nagłówka, treść nagłówka i dodatkową listę właściwości. W ramach funkcji eksportera możesz uzyskać właściwości elementu (w tym własną etykietę) za pomocą
org-element-property
.źródło
org
eksporter nie pracuje zbyt wiele z doradztwem, ale raczej tworzyfilter
funkcje, które można wywołać na pewnym etapie procesu eksportu, mniej więcej tak: `` (eval-after -load 'ox-latex' (add-to-list 'org-export-filter-final-output-functions' my-filter-function)) `` (Nie jestem pewien, dlaczego składnia zaznaczania wstecznego nie działa w komentarzach?)