Làm cách nào tôi có thể chuyển đổi giữa chuyển đổi pdflatex và xelatex trong Sublime Text 2?


9

Tôi thường chuyển đổi giữa biên dịch tài liệu LaTeX và XeTeX "cổ điển".

Sublime Text 2 có một gói gọi là LaTeXTools cho phép bạn xây dựng các tài liệu LaTeX thông qua một cách đơn giản CmdB. Khéo léo.

Tệp xây dựng LaTeX.sublime-buildrõ ràng tồn tại trong thư mục gói tiêu chuẩn và bạn có thể sao chép nó vào Userthư mục của mình để tùy chỉnh nó. Ở đây, nó cho phép bạn thay đổi các đối số được đưa ra latexmk, cụ thể là chuyển từ pdflatexsang xelatex, ví dụ như thế này:

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

Bây giờ, thật tẻ nhạt khi phải làm điều đó mỗi khi tôi mở một tài liệu khác - mở tùy chọn xây dựng của tôi, nhận xét một dòng, lưu, v.v.

Lý tưởng nhất, tôi muốn có thể chuyển đổi động cơ

  • Ví dụ, tự động - TextMate bằng cách nào đó thực hiện điều đó và tôi có thể biên dịch cả tài liệu LaTeX và tài liệu XeTeX một cách đơn giản CmdR, mặc dù cấu hình TextMate được đặt thành pdflatex. Có lẽ đó là một số latexmk.pl-fu, tôi không biết.

  • ... với một phím tắt đơn giản hoặc cài đặt - Có lẽ bức xúc CmdL, CmdXhoặc tương đương. Điều này sau đó sẽ chuyển đổi giữa pdflatexxelatexxây dựng.

Làm thế nào tôi có thể thiết lập nó?

Câu trả lời:


12

Lưu ý: LaTeXTools cho Sublime chữ bây giờ hỗ trợ phát hiện động cơ tự động nếu file của bạn bắt đầu với %!TEX program = <program>, nơi <program>là bất kỳ pdflatex, xelatexhoặc lualatex. Các hướng dẫn dưới đây chỉ cần thiết nếu bạn cần chuyển đổi thủ công động cơ vì bất kỳ lý do gì.


Lấy LaTeX.sublime-buildtệp trong LaTeXToolsthư mục bên dưới ~/Library/Application Support/Sublime Text 2/Packagesvà sao chép nó vào ~/Library/Application Support/Sublime Text 2/Packages/User/, nhưng thực hiện hai lần và đặt cho các tệp đó tên sau:

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

Thay đổi các tệp để sử dụng pdflatexLaTeX và xelatexđộng cơ cho XeTeX, tương ứng (như đã thấy trong câu hỏi).

Sau đó, tạo một plugin mới thông qua Công cụ »Plugin Mới (lưu nó switch.pyvào vị trí trên):

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)

Và tạo một lối tắt bàn phím cho nó trong Tùy chọn »Ràng buộc chính - Người dùng :

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

Bạn cũng có thể thêm phần này vào menu của mình bằng cách thêm Main.sublime-menutệp vào Usergói của bạn :

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

Bây giờ sẽ so sánh tệp bản dựng hiện đang hoạt động với các cài đặt bản dựng cần thiết cho XeTeX và LaTeX và chuyển đổi chúng nếu cần.

Điều này chắc chắn có thể sử dụng một số cải tiến, nhưng nó hoạt động vào lúc này.


Hoạt động như một bùa mê, ngoại trừ việc LaTeXTools dường như không được ưu tiên LaTeX.sublime-buildtrong thư mục gói người dùng của tôi. Khá kỳ lạ ...
fgb

Bạn có tạo một bản sao đầy đủ của mặc định LaTeX.sublime-build, sau đó bạn sửa đổi hoặc chỉ bao gồm các osxphần có liên quan ?
fgb

1
Trước hết cảm ơn các chỉnh sửa. Tôi đã làm một bản sao đầy đủ của tập tin mặc định và sửa đổi chúng cho phù hợp. Mặc dù vậy, điều tôi phát hiện ra là XeLaTeX biên dịch tất cả các nguồn LaTeX tốt, ít nhất là trên tất cả các tệp tôi đã kiểm tra. Có lẽ có một dự phòng ở đâu đó trong nền?
slhck

Sao chép và sửa đổi tập tin mặc định đầy đủ đã giải quyết vấn đề của tôi. Điều thú vị là chỉ sử dụng XeLaTeX là đủ cho cả hai. Tôi sẽ kiểm tra điều này trong tương lai vì nó chắc chắn sẽ tốt hơn là phải chuyển đổi trình biên dịch. Cảm ơn đã phản ứng kịp thời!
fgb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.