2010-06-26 51 views
17

Làm cách nào để biên dịch tài liệu tex XeLaTeX bằng cách sử dụng latexmk trên Mac OS X?Biên dịch tệp XeLaTeX tex với latexmk

hiện tại tôi đang chạy latexmk job.tex và nhận được một lỗi tại:

! 
******************************************** 
* XeTeX is required to compile this document. 
* Sorry! 
********************************************. 
\RequireXeTeX ...********************************} 
                \endgroup \fi 
l.18 \RequireXeTeX 

? ^D 
! Emergency stop. 
\RequireXeTeX ...********************************} 
                \endgroup \fi 
l.18 \RequireXeTeX 

Dòng đầu tiên của file tex của tôi là (theo đề nghị của this post):

% !TEX TS-program = xelatexmk 

và tôi đã cố gắng khác (ví dụ: program = xelatex), nhưng không có kết quả.

latexmk mô tả các lệnh của nó như sau:

$ latexmk -commands xelatex job 
Commands used by latexmk: 
    To run latex, I use "latex %O %S" 
    To run pdflatex, I use "pdflatex %O %S" 
    ... 

Dường như không bo được bất kỳ cơ chế hợp lý cho việc lựa chọn một chương trình tex từ dòng lệnh, và nó không phải là rõ ràng từ các nguồn như thế nào ai có thể làm điều này , hoặc.

Tôi cũng đã xem rubber, nhưng dường như không hoạt động.

Tôi đánh giá cao bất kỳ thông tin chi tiết nào bạn có thể cung cấp.

Brian

+0

Bạn đang sử dụng phiên bản latexmk nào? Bên cạnh bản gốc, có phiên bản Texshop của latexmk được duy trì bởi Herbert Schulz, hoặc phiên bản mặc định của Texlive bởi John Collins? Nhìn vào đầu ra để latexmk -v để xem cái nào. Chỉ có phiên bản Texshop được đóng gói với xelatexmk và nhận ra các chỉ thị TEX; với phiên bản jcc, bạn sẽ phải viết một tệp RC để gọi xelatex và cách xử lý các tệp xdv. –

+0

@Charles - cảm ơn bạn đã đăng bài - điều đó khá hữu ích. Tôi đang sử dụng phiên bản của John Collins, từ Texlive. –

Trả lời

10

Đó là tôi nhanh chóng sửa chữa, do đó latexmk làm việc với XeLaTeX:
Thêm

`elsif (/^-xelatex$/) { $pdf_mode = 1; $pdflatex = 'xelatex %O %S'; $pdf_previewer = 
'start evince %O %S';}` 

trên (hoặc gần) dòng

`elsif (/^-pdf$/) { $pdf_mode = 1; }` 

.

Sau đó, bạn có thể gọi latexmk -xelatex file.tex. Hoạt động, nhưng tôi đã không kiểm tra nó rộng rãi. Nên hoạt động tương tự với lualatex.

+12

Tôi sẽ thêm tùy chọn -xelatex vào latexmk trong phiên bản tiếp theo (4.31). Điều này sẽ hoạt động giống như sửa đổi được đưa ra ở đây (ngoại trừ cài đặt của trình xem trước để hiển thị). –

+0

Cảm ơn bạn đã thực hiện điều đó! Chuyển đổi rất hữu ích! – Chris

+1

Đáng chú ý, kể từ phiên bản 4.24, bạn có thể có được hiệu ứng tương tự bằng cách thực hiện 'latexmk -pdflatex = 'xelatex% O% S' -pdf [...]' thay vì sửa đổi kịch bản lệnh latexmk. Đó là một chút tiết, nhưng nó được thực hiện công việc. Nếu/khi một lá cờ được thêm vào, tôi muốn nó nếu được dựa trên một biến $ xelatex. Bằng cách đó chúng ta có thể định nghĩa biến trong ~/.latexmkrc để truyền cờ vv như chúng ta làm bây giờ với $ latex và $ pdflatex. –

16
latexmk -v 
Latexmk, John Collins, 16 January 2010. Version 4.13a 

tôi đặt

$pdflatex = 'xelatex --shell-escape %O %S'; 

trong tập tin .latexmkrc tôi. Đây là một cách giải quyết, tất nhiên. Nhưng nó làm việc cho tôi khi tôi gọi

latexmk -pvc -pdf MyXetexFile 
8
$ latexmk -v 
Latexmk, John Collins, 27 July 2010. Version 4.18 

tôi chạy bằng lệnh:

latexmk -pdf -e '$pdflatex=q/xelatex %O %S/' foo.tex 

mà về cơ bản là giống như câu trả lời từ andre-r và Kay, nhưng chỉ từ dòng lệnh.

Các vấn đề liên quan