Saya memiliki banyak dokumen sebagai file org yang memiliki properti CUSTOM_LABEL, seperti
* Introduction
:PROPERTIES:
:CUSTOM_LABEL: AP 1
:END:
Dalam hal ini, file perlu diekspor sebagai LaTeX, menerjemahkan masing CUSTOM_LABEL
- masing sebagai a \label{marker}
. Contoh di atas harus diterjemahkan ke \label{AP 1}
.
Saya sudah tahu cara memanggil fungsi kustom pada waktu ekspor, tetapi saya tidak cukup ahli untuk menulis defun untuk melakukan konversi tertentu, yaitu CUSTOM_LABEL
->\label{}
Bagaimana defun untuk menyuntikkan custom_label
seperti yang \label{}
ditulis
Saya akan menghargai bahkan hanya beberapa pseudo-code, atau beberapa pointer.
Saya mengajukan pertanyaan ini di sini alih-alih di tempat lain, karena ini lebih merupakan pertanyaan Emacs, karena saya mencari secara menyeluruh manual mode-org, dan fitur semacam itu saat ini tidak tersedia.
Fungsi generik untuk mengonversi PROPERTI yang diberikan saat mengekspor (LaTeX, HTML, atau format lainnya), akan lebih baik.
Terima kasih.
emacs-orgmode
daftar (antara lain, lists.gnu.org/archive/html/emacs-orgmode/2014-09/msg00498.html ). Saya mencoba kode itu, dan hanya pengaturanorg-latex-custom-id-as-label
. Ini berfungsi dengan baik dengan ekspor HTML, tetapi tidak memiliki efek dengan ekspor LaTeX. Saya berharap saya bisa hanya mengandalkanorg-mode
fungsi inti, masih saya suka jawaban @ malababrba, karena memungkinkan generalisasi yang bagus.\section{h}\label{sec-1}
saya menggunakanGNU 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
danOrg-mode version 8.2.6 (release_8.2.6-1 @ /Applications/Emacs.app/Contents/Resources/lisp/org/)
. Juga, untuk memastikan, saya mengganti nama .emacs.d saya, jadi itu berjalan tanpa hal-hal khusus.org-mode
menggunakan iniel-get
resep: github.com/dimitri/el-get/blob/master/recipes/org-mode.rcp , tapi aku masih mendapatkanOrg-mode version 8.2.6 (release_8.2.6-1 @ /Users/gsl/.emacs.d/el-get/org-mode/lisp/
bahasa Apakah Anda tahu bagaimana untuk men-tweak resep itu sehingga saya bisa menggunakannya untuk cabang-dev? Saya juga bisa menanyakan ini sebagai pertanyaan baru. Terima kasih banyak untuk menunjukkannya.Jawaban:
Saya telah menulis fungsi yang melakukan apa yang Anda inginkan dengan cara yang cukup panjang. Ia memeriksa tajuk mana yang berisi properti
CUSTOM_LABEL
(atau properti lain yang Anda konfigurasikan) dan memanggil fungsiendless/insert-org-label-latex
masing-masing dengan nilai properti sebagai argumen.Cuplikan contoh juga menunjukkan cara memperluasnya untuk html atau backend lainnya.
Konfigurasikan penggantian
Dengan variabel ini, Anda dapat mengonfigurasi properti yang Anda pedulikan dan fungsi mana yang dipanggil untuk menangani masing-masing properti.
Pekerja Berat
Fungsi ini adalah apa yang harus Anda tambahkan ke kait ekspor org. Ini mengurus memeriksa properti yang tercantum di atas, dan memanggil fungsi yang terkait dengan properti tersebut.
Fungsi yang Anda tetapkan
Ini adalah orang-orang yang melakukan penggantian yang sebenarnya. Di bawah ini adalah contoh untuk kasus lateks.
Hasil
Evaluasi semua kode ini di atas, lalu ekspor buffer org berikut ke lateks.
Buffer lateks yang dihasilkan harus seperti ini.
sumber
Catatan untuk cuplikan kode Anda harus menggunakan versi pengembangan saat ini
(org-version) => "8.3beta"
,.Silakan gunakan
CUSTOM_ID
dan tautan internal. Lihat(info "(org) Handling links")
.Dalam kebanyakan kasus, Anda tidak perlu khawatir tentang hasil penamaan internal yang diekspor di Org. Tautan ke angka dan tajuk berita, katakanlah, akan benar ketika diekspor. Lihat
(info "(org) Internal links")
.Untuk LaTeX coba:
Hasil:
Dalam eksportir seperti
ox-odt
danox-html
tajuk berisi id internal,ID
danCUSTOM_ID
. Tautan mana yang digunakan tergantung pada tautan:Hasil:
sumber
CUSTOM_ID
, sementara masih menggunakan @ malabarba untuk melewati properti org lainnya. Saya sebenarnya menggunakannya untuk melewatkan beberapa properti lainnya (seperti cite-keys, genre, venue, dll), di sampingCUSTOM_ID
.Saya tidak yakin, tetapi Anda mungkin perlu memberi saran atau bahkan menimpa fungsi eksportir. Dalam Org 8, itu
org-latex-export-headline
.Fungsi ini mendapatkan elemen tajuk, isi tajuk, dan daftar properti tambahan. Dalam fungsi eksportir, Anda bisa mendapatkan properti elemen (termasuk label khusus)
org-element-property
.sumber
org
eksportir baru tidak bekerja terlalu banyak dengan menasihati, tetapi satu menciptakanfilter
fungsi untuk dipanggil pada tahap tertentu dari proses ekspor, kira-kira seperti ini: `` `(eval-after -load 'ox-latex' (tambahkan-ke-daftar 'org-ekspor-filter-final-fungsi-fungsi' my-filter-function)) `` `(Saya tidak yakin mengapa sintaks back-tick tidak bekerja dalam komentar?)