ฉันจะสลับระหว่างการแปลง pdflatex และ xelatex ใน Sublime Text 2 ได้อย่างไร


9

ฉันมักจะสลับไปมาระหว่างการรวบรวมเอกสาร "คลาสสิค" LaTeX และ XeTeX

Sublime Text 2 มีแพคเกจที่เรียกว่าLaTeXToolsCmdBที่ช่วยให้คุณสามารถสร้างเอกสารน้ำยางผ่านง่ายๆ เรียบร้อย

ไฟล์LaTeX.sublime-buildบิลด์มีอยู่อย่างชัดเจนในโฟลเดอร์แพ็คเกจมาตรฐานและคุณสามารถคัดลอกไปยังUserโฟลเดอร์เพื่อปรับแต่ง ที่นี่จะช่วยให้คุณสามารถเปลี่ยนอาร์กิวเมนต์ที่กำหนดให้latexmkคือเปลี่ยนจากpdflatexเป็นxelatexตัวอย่างเช่น:

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

ตอนนี้น่าเบื่อมากที่ต้องทำเช่นนั้นทุกครั้งที่ฉันเปิดเอกสารอื่น - เปิดการตั้งค่าการสร้างของฉันแสดงความคิดเห็นในบรรทัดเดียวบันทึก ฯลฯ

เป็นการดีที่ฉันต้องการที่จะสามารถเปลี่ยนเครื่องยนต์

  • ... โดยอัตโนมัติ - TextMate เช่นอย่างใดไม่ว่าและผมสามารถรวบรวมเอกสารทั้งน้ำยางและเอกสาร XeTeX กับง่ายCmdRแม้ว่าการกำหนดค่า TextMate pdflatexมีการตั้งค่า บางทีมันอาจเป็นบางสิ่งบางอย่างlatexmk.plฉันไม่รู้

  • ... ที่มีแป้นพิมพ์ลัดง่ายหรือการตั้งค่า - บางทีกดCmdL, CmdXหรือคล้ายกัน สิ่งนี้จะสลับระหว่างpdflatexและxelatexอาคาร

ฉันจะตั้งค่าอย่างไร

คำตอบ:


12

หมายเหตุ: LaTeXTools สำหรับ Sublime ข้อความในขณะนี้สนับสนุนการตรวจสอบเครื่องยนต์อัตโนมัติถ้าไฟล์ของคุณเริ่มต้นด้วยการ%!TEX program = <program>ที่<program>เป็นใด ๆpdflatex, หรือxelatex lualatexคำแนะนำด้านล่างมีความจำเป็นเฉพาะในกรณีที่คุณต้องการสลับเครื่องยนต์ด้วยตนเองไม่ว่าด้วยเหตุผลใด


นำLaTeX.sublime-buildไฟล์ในLaTeXToolsโฟลเดอร์ภายใต้~/Library/Application Support/Sublime Text 2/Packagesและคัดลอกไปยัง~/Library/Application Support/Sublime Text 2/Packages/User/แต่ทำสองครั้งและตั้งชื่อไฟล์ต่อไปนี้:

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

เปลี่ยนไฟล์เพื่อใช้pdflatexสำหรับ LaTeX และเอ็นxelatexจิ้นสำหรับ XeTeX ตามลำดับ (ตามที่เห็นในคำถาม)

จากนั้นสร้างปลั๊กอินใหม่ผ่านเครื่องมือ»ปลั๊กอินใหม่… (บันทึกเป็นswitch.pyตำแหน่งด้านบน):

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)

และสร้างแป้นพิมพ์ลัดสำหรับมันในการตั้งค่า»การโยงคีย์ - ผู้ใช้ :

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

คุณสามารถเพิ่มสิ่งนี้ลงในเมนูของคุณโดยเพิ่มMain.sublime-menuไฟล์ลงในUserแพ็คเกจของคุณ:

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

ตอนนี้จะเปรียบเทียบไฟล์บิลด์ที่แอ็คทีฟในปัจจุบันกับการตั้งค่าบิลด์ที่จำเป็นสำหรับ XeTeX และ LaTeX และสลับไฟล์หากจำเป็น

สิ่งนี้สามารถใช้การปรับปรุงได้ แต่ก็ใช้งานได้ในขณะนี้


ทำงานได้อย่างมีเสน่ห์ยกเว้น LaTeXTools ดูเหมือนจะไม่ให้ความสำคัญLaTeX.sublime-buildในโฟลเดอร์แพ็คเกจผู้ใช้ของฉัน ค่อนข้างแปลก ...
fgb

คุณทำสำเนาเริ่มต้นเต็มรูปแบบLaTeX.sublime-buildซึ่งคุณปรับเปลี่ยนหรือรวมosxส่วนที่เกี่ยวข้องหรือไม่
fgb

1
ก่อนอื่นขอขอบคุณสำหรับการแก้ไข ฉันทำสำเนาเต็มของไฟล์เริ่มต้นและแก้ไขตามนั้น สิ่งที่ฉันค้นพบก็คือ XeLaTeX รวบรวมแหล่ง LaTeX ทั้งหมดอย่างดีอย่างน้อยในไฟล์ทั้งหมดที่ฉันทดสอบ อาจจะมีทางเลือกอื่นที่อยู่เบื้องหลัง
slhck

การคัดลอกและแก้ไขไฟล์เริ่มต้นเต็มช่วยแก้ปัญหาของฉัน น่าสนใจว่าการใช้เพียง XeLaTeX นั้นเพียงพอสำหรับทั้งคู่ ฉันจะตรวจสอบเรื่องนี้ในอนาคตเพราะมันจะดีกว่าการเปลี่ยนคอมไพเลอร์ ขอบคุณสำหรับการตอบสนองที่รวดเร็ว!
fgb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.