2010-06-26 11 views
17

Come è possibile compilare un documento tex XeLaTeX utilizzando latexmk su Mac OS X?Compilare il file tex XeLaTeX con latexmk

Attualmente sto facendo funzionare latexmk job.tex e ottenendo un errore:

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

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

La prima riga del mio file tex è (come suggerito da this post):

% !TEX TS-program = xelatexmk 

e ho provato altri (es. programma = xelatex), ma senza successo.

latexmk descrive i comandi come segue:

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

Non sembra bo essere qualsiasi meccanismo logico per la selezione di un programma tex dalla riga di comando, e non è chiaro dalla sorgente come si potrebbe fare questo , o.

Ho anche guardato rubber, ma non sembra funzionare neanche.

Apprezzo qualsiasi suggerimento che potresti essere in grado di fornire.

Brian

+0

Quale versione di latexmk stai usando? Besiede l'originale, c'è la versione Texshop di latexmk gestita da Herbert Schulz, o la versione di default di Texlive di John Collins? Guarda l'output di latexmk -v per vedere quale. Solo la versione di Texshop viene fornita con xelatexmk e riconosce le direttive! TEX; con la versione jcc dovrai scrivere un file RC per invocare xelatex e come gestire i file xdv. –

+0

@Charles - grazie per il post - è molto utile. Sto usando la versione di John Collins, da Texlive. –

risposta

10

Questo è il mio soluzione rapida, in modo che latexmk opere con XeLaTeX:
Aggiungi

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

sopra (o quasi) la linea

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

.

Quindi è possibile chiamare latexmk -xelatex file.tex. Funziona, ma non l'ho testato estensivamente. Dovrebbe funzionare allo stesso modo con lualatex.

+12

Aggiungerò un'opzione -xelatex a latexmk nella prossima versione (4.31). Funzionerà come la modifica qui riportata (eccetto per l'impostazione dell'anteprima da mostrare). –

+0

Grazie per averlo implementato! Interruttore molto utile! – Chris

+1

In particolare, dalla versione 4.24, è possibile ottenere lo stesso effetto facendo 'latexmk -pdflatex = 'xelatex% O% S' -pdf [...]' invece di modificare lo script latexmk. È un po 'prolisso, ma ha fatto il lavoro. Se/quando viene aggiunta una bandiera, preferirei che fosse basata su una variabile $ xelatex. In questo modo possiamo definire la variabile in ~/.latexmkrc per passare i flag ecc. Come facciamo ora con $ latex e $ pdflatex. –

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

ho messo

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

nel mio file .latexmkrc. Questa è una soluzione, ovviamente. Ma funziona per me, quando io chiamo

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

corro con il comando:

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

che è fondamentalmente lo stesso come le risposte da andre-r e Kay, ma solo a partire dal riga di comando.