2010-06-26 4 views
17

Wie kann man ein XeLaTeX Tex-Dokument mit latexmk unter Mac OS X kompilieren?XeLaTeX-Tex-Datei mit Latexmk kompilieren

Derzeit Ich betreiben latexmk job.tex und erhalte eine Fehlermeldung:

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

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

Die erste Zeile meiner tex-Datei (wie von this post vorgeschlagen):

% !TEX TS-program = xelatexmk 

und ich habe andere versucht (zB program = xelatex), aber ohne Erfolg.

latexmk beschreibt seine Befehle wie folgt:

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

Es nicht bo jeder logischer Mechanismus zur Auswahl eines tex-Programms von der Kommandozeile erscheint, und es ist nicht klar, von der Quelle, wie man dies tun würde , entweder.

Ich habe auch rubber angesehen, aber es scheint auch nicht zu funktionieren.

Ich freue mich über jeden Einblick, den Sie möglicherweise bieten können.

Brian

+0

Welche Version von Latexmk verwenden Sie? Besiegt das Original, gibt es die Texshop-Version von Latexmk von Herbert Schulz gepflegt, oder die Texlive-Standard-Version von John Collins? Sehen Sie sich die Ausgabe von latexmk -v an, um zu sehen, welche. Nur die Texshop-Version wird mit xelatexmk ausgeliefert und erkennt! TEX-Anweisungen; Mit der jcc-Version müssen Sie eine RC-Datei schreiben, um xelatex aufzurufen und wie Sie mit xdv-Dateien umgehen. –

+0

@Charles - danke für die Post - das ist sehr hilfreich. Ich benutze John Collins 'Version von Texlive. –

Antwort

10

Das ist meine schnelle Lösung ist, so dass latexmk Arbeiten mit XeLaTeX:

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

hinzufügen oben (oder in der Nähe), um die Linie

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

.

Dann können Sie latexmk -xelatex file.tex anrufen. Funktioniert, aber ich habe es nicht ausgiebig getestet. Sollte ähnlich funktionieren mit lualatex.

+12

Ich werde Latexmax in der nächsten Version (4.31) eine Option -xelatex hinzufügen. Dies funktioniert wie die hier angegebene Änderung (außer für die Einstellung des Previewers). –

+0

Danke für die Umsetzung! Sehr hilfreicher Schalter! – Chris

+1

Bemerkenswerterweise können Sie ab Version 4.24 denselben Effekt erhalten, indem Sie 'Latexmk -pdflatex = 'xelatex% O% S' -pdf [...]' anstelle des Latexmk-Skripts ändern. Es ist ein bisschen ausführlich, aber es macht die Arbeit erledigt. Wenn/wenn ein Flag hinzugefügt wird, würde ich es bevorzugen, wenn es auf einer Variablen $ xelatex basiert. Auf diese Weise können wir die Variable in ~/.latexmkrc definieren, um Flags usw. zu übergeben, wie wir es jetzt mit $ latex und $ pdflatex machen. –

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

Ich habe

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

in meiner .latexmkrc Datei. Dies ist natürlich ein Workaround. Aber es funktioniert für mich, wenn ich rufe

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

ich mit dem Befehl:

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

, die im Grunde die gleichen wie die Antworten von andre-r und Kay, sondern nur von der Befehlszeile.