Bagaimana saya bisa beralih antara konversi pdflatex dan xelatex di Sublime Text 2?

9

Saya sering beralih di antara kompilasi dokumen "klasik" LaTeX dan XeTeX.

Sublime Text 2 memiliki paket yang disebut LaTeXTools yang memungkinkan Anda membuat dokumen LaTeX melalui cara yang sederhana CmdB. Rapi.

File build LaTeX.sublime-buildjelas ada di folder paket standar, dan Anda dapat menyalinnya ke Userfolder Anda untuk menyesuaikannya. Di sini, ini memungkinkan Anda untuk mengubah argumen yang diberikan latexmk, yaitu untuk beralih dari pdflatexke xelatex, misalnya seperti ini:

"cmd": ["latexmk", "-cd",
  //"-e", "\\$pdflatex = 'pdflatex %O -interaction=nonstopmode -synctex=1 %S'",
  "-e", "\\$pdflatex = 'xelatex %O -interaction=nonstopmode -synctex=1 %S'",
  //"-silent",
  "-f", "-pdf"],

Sekarang, sangat membosankan harus melakukan itu setiap kali saya membuka dokumen lain - buka preferensi bangunan saya, komentar satu baris, simpan, dll.

Idealnya, saya ingin bisa mengganti mesin

  • ... secara otomatis - TextMate misalnya melakukan hal itu, dan saya dapat mengkompilasi dokumen LaTeX dan dokumen XeTeX dengan sederhana CmdR, meskipun konfigurasi TextMate diatur ke pdflatex. Mungkin itu latexmk.pl-fu, saya tidak tahu.

  • ... dengan pintasan atau pengaturan keyboard sederhana - Mungkin menekan CmdL, CmdXatau serupa. Ini kemudian akan beralih antara pdflatexdan xelatexmembangun.

Bagaimana saya bisa mengaturnya?

slhck
sumber

Jawaban:

12

Catatan: LaTeXTools untuk Sublime Text sekarang mendukung deteksi mesin otomatis jika file Anda mulai dengan %!TEX program = <program>, di mana <program>ada pdflatex, xelatexatau lualatex. Petunjuk di bawah ini hanya diperlukan jika Anda perlu mengganti mesin secara manual untuk alasan apa pun.


Ambil LaTeX.sublime-buildfile dalam LaTeXToolsfolder di bawah ~/Library/Application Support/Sublime Text 2/Packagesdan salin ke ~/Library/Application Support/Sublime Text 2/Packages/User/, tetapi lakukan dua kali dan berikan file itu nama berikut:

  • LaTeX.sublime-build.latex
  • LaTeX.sublime-build.xetex

Ubah file untuk menggunakan pdflatexuntuk LaTeX dan xelatexmesin untuk XeTeX, masing-masing (seperti yang terlihat dalam pertanyaan).

Kemudian, buat plugin baru melalui Alat »Plugin Baru ... (simpan switch.pyke lokasi di atas):

import sublime, sublime_plugin, os, shutil, filecmp

class SwitchCommand(sublime_plugin.ApplicationCommand):
  def run(self):
    folder = os.path.expanduser( \
        '~/Library/Application Support/Sublime Text 2/Packages/User/')
    latex_src = folder + 'LaTeX.sublime-build.latex'
    xetex_src = folder + 'LaTeX.sublime-build.xetex'
    dest = folder + 'LaTeX.sublime-build'

    if filecmp.cmp(dest, latex_src):
      sublime.status_message("Switching to XeTeX")
      shutil.copy(xetex_src, dest)
    else:
      sublime.status_message("Switching to LaTeX")
      shutil.copy(latex_src, dest)

Dan buat pintasan keyboard untuknya di Preferensi »Binding Kunci - Pengguna :

[ {
  "keys": ["super+shift+x"], "command": "switch"
} ]

Anda juga dapat menambahkan ini ke menu Anda dengan menambahkan Main.sublime-menufile ke Userpaket Anda :

[ {
    "id":"tools", "children":
    [ {
        "command": "switch",
        "caption": "Switch between LaTeX/XeTeX"
      }
    ]
} ]

Ini sekarang akan membandingkan file build yang sedang aktif dengan pengaturan build yang diperlukan untuk XeTeX dan LaTeX dan mengubahnya jika perlu.

Ini pasti bisa menggunakan beberapa perbaikan, tetapi itu bekerja untuk saat ini.

slhck
sumber
Bekerja seperti pesona, kecuali bahwa LaTeXTools tampaknya tidak memberikan prioritas LaTeX.sublime-buildpada folder paket pengguna saya. Cukup aneh ...
fgb
Apakah Anda membuat salinan lengkap dari default LaTeX.sublime-build, yang kemudian Anda modifikasi, atau hanya menyertakan bagian yang relevan osx?
fgb
1
Pertama-tama, terima kasih atas suntingannya. Saya melakukan salinan lengkap dari file default dan memodifikasinya. Apa yang saya temukan adalah bahwa XeLaTeX mengkompilasi semua sumber LaTeX dengan baik, setidaknya pada semua file yang saya uji. Mungkin ada fallback di suatu tempat di latar belakang?
slhck
Menyalin dan memodifikasi file default lengkap menyelesaikan masalah saya. Menarik bahwa menggunakan XeLaTeX saja sudah cukup untuk keduanya. Saya akan memeriksa ini di masa depan karena pasti akan lebih baik daripada harus mengganti kompiler. Terima kasih atas tanggapan yang cepat!
fgb