Mengurangi kekacauan LATEX_HEADER di bagian atas file org saya


13

Saya sering menulis catatan dalam mode org dan mengekspornya ke lateks. Namun, karena beberapa dokumen rumit saya perlu menyertakan banyak paket lateks di bagian atas seperti:

#+LATEX_HEADER: \usepackage[margin=1.15in]{geometry}
#+LATEX_HEADER: \usepackage{parskip}
#+LATEX_HEADER_EXTRA: \usepackage{graphicx}
#+LATEX_HEADER_EXTRA: \usepackage{mdframed}
#+LATEX_HEADER_EXTRA: \usepackage{needspace}
#+LATEX_HEADER_EXTRA: \usepackage{hyperref}         
#+LATEX_HEADER_EXTRA: \usepackage{titling}
#+LATEX_HEADER_EXTRA: \usepackage{enumitem}
#+LATEX_HEADER_EXTRA: \usepackage{etoolbox}                             
#+LATEX_HEADER_EXTRA: \usepackage{color}                             
#+LATEX_HEADER_EXTRA: \usepackage{underscore}...

Apakah mungkin untuk menyimpan semua perintah header lateks (\ usepackage, definisi makro, dll.) Dalam file tex yang terpisah sehingga saya dapat memiliki satu baris saja di bagian atas file org? Ini akan mengurangi banyak kekacauan dan membuatnya lebih mudah bagi saya untuk menambahkan paket.

Jawaban:


14

Anda dapat menggunakan a #+SETUPFILE:

Masukkan semua pengaturan ini dalam file, misalnya ./setup/setupfile.org, dan kemudian sertakan dalam dokumen Anda

#+SETUPFILE: ./setup/setupfile.org

Dalam file ini, Anda juga dapat mencakup #+OPTIONS:, #+AUTHOR, dan mirip dalam-penyangga pengaturan. Apa yang lebih bermanfaat, adalah bahwa jika Anda memuat yang #+SETUPFILE:pertama, Anda kemudian dapat menimpa beberapa konfigurasi ini dengan pengaturan lokal.

Lihat juga manual org tentang ekspor.

Solusi lain adalah dengan memanfaatkan #+INCLUDE: "./setup/more-settings.org" src org(perhatikan ") yang hanya menyertakan konten file sebagai sumber org. Ini sedikit lebih fleksibel, karena bisa ada lebih dari satu di #+INCLUDEmana hanya ada satu #+SETUPFILE.

Terakhir, untuk menyembunyikan kekacauan secara visual, Anda juga dapat meletakkan semua pengaturan lokal ini di dalam laci (yaitu, antara garis dengan :DRAWER:dan garis dengan :END:), dan cukup menyembunyikannya dengan tab.


3
Dalam pengalaman praktis saya, solusi laci adalah cara paling nyaman dan tercepat untuk bekerja dengan header.
Dieter.Wilhelm

4

Solusi alternatif adalah memeriksa / menyesuaikan variabel org-latex-packages-alist- tambahkan semua yang Anda butuhkan \usepackage{...}.

Variabel ini dideklarasikan dan digunakan oleh ox-latex, jadi konfigurasi org Anda harus memiliki deklarasi (require 'os-latex). Dengan cara ini tidak ada baris untuk ditambahkan ke dokumen org, kecuali judulnya.

Sedangkan untuk makro, tempat biasa untuk menyimpan adalah paket yasnippet, jika Anda menggunakannya.


3

Solusi alternatif adalah dengan menggunakan tajuk yang tidak diekspor untuk membungkus konfigurasi:

* Configuration :ignoreheading:
#+AUTHOR:   
#+STARTUP: showall
...

Keuntungan dari solusi vs laci ini adalah Anda dapat dengan mudah memasukkan konfigurasi yang canggih, seperti blok LaTeX

#+BEGIN_EXPORT LATEX
...
#+END_EXPORT

yang tidak dibaca (secara default) saat di laci.

Keuntungan dari solusi ini vs file konfigurasi (setupfile atau termasuk) adalah Anda dapat dengan mudah mengubah konfigurasi karena termasuk dalam file saat ini.

Terakhir, jika Anda ingin tajuk ini tetap tertutup secara default saat membuka file org Anda, Anda dapat menggunakan sintaks berikut:

* Configuration :ignoreheading:
  :PROPERTIES:
  :VISIBILITY: folded
  :END:

Saya hanya memiliki satu upvote untuk diberikan - tetapi ini baru saja menjadi default baru saya! Semua jawaban ini harus masuk ke manual-org seperti praktik terbaik yang disarankan untuk ekspor lateks, sebagai pengaturan yang berfokus pada dokumen vs menempatkan sebagian besar pengaturan dalam konfigurasi emacs.
Glallen

1

Daripada menggunakan #+SETUPFILE:sesuai jawaban yang diterima, jika Anda hanya tertarik pada output LaTeX, maka Anda bisa menambahkan yang berikut:

#+LATEX_HEADER: \input{header.tex}

Dalam header.tex(atau apa pun yang Anda ingin menyebutnya), Anda dapat meletakkan semua pembukaan LaTeX Anda tanpa perlu banyak #+LATEX_HEADER:argumen. Untuk menjadi super meta, Anda juga bisa memiliki #+LATEX_HEADERopsi ini di #+SETUPFILE.


Mengedit jawaban saya untuk menjawab pertanyaan ini.
jdtonkin
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.