Скомпилируйте текстовый файл XeLaTeX с latexmk

Как можно составить XeLaTeX текстовый документ с использованием latexmk в Mac OS X?

В настоящее время я бегу latexmk job.tex и получаю ошибку:

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

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

Первая строка моего текстового файла (как предлагается в этом посте):

% !TEX TS-program = xelatexmk

и я пробовал другие (например, программа =xelatex), но безрезультатно.

latexmk описывает его команды следующим образом:

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

Похоже, что нет никакого логического механизма выбора текстовой программы из командной строки, и из источника также не ясно, как это можно сделать.

Я также посмотрел на rubber, но, похоже, тоже не работает.

Я ценю любую информацию, которую вы можете предоставить.

Брайан

4 ответа

Решение

Это мое быстрое решение, так что latexmk работает с XeLaTeX:
добавлять

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

выше (или около) линии

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

,

Тогда вы можете позвонить latexmk -xelatex file.tex, Работает, но я не проверял это подробно. Должен работать аналогично lualatex,

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

я кладу

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

в моем файле.latexmkrc. Это обходной путь, конечно. Но это работает для меня, когда я звоню

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

Я бегу с командой:

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

что в основном совпадает с ответами от andre-r и Kay, но только из командной строки.

В версии: 4.65 (18 июня 2019 г.) есть разница между использованием -xelatex вариант и настройка -pdflatex как было предложено одним из комментариев.

Вариант 1: -xelatex

$ latexmk -xelatex file.tex

С -xelatex вариант, или -pdfxe вариант, текстовый файл сначала набирается в xdv(расширенный DVI) файл. Потом,xdvipdfmx вызывается для преобразования xdv файл в pdf файл.

В latexmk, $xelatex_default_switches установлен на -no-pdf (строка 395) иметь xelatex произвести xdv файл вместо файла PDF по умолчанию.

Следовательно -xelatex опция эквивалентна:

$ xelatex -no-pdf file.tex  # called one or more times to produce file.xdv
$ xdvipdfmx file.xdv        # called only once in the end

Вариант 2: -pdflatex=xelatex

Второй вариант - установить pdflatex следующим образом вместе с включением -pdf вариант:

# %O is a substitution for options and %S is for source file
$ latexmk -pdflatex='xelatex %O %S' -pdf file.tex

В этом подходе xelatexиспользуется для создания файла PDF напрямую, без создания промежуточного выходного файла. Обратите внимание, что сегодняxelatex первый генерирует xdv поток и внутренне направляет его в xdvipdfmx для создания файла PDF.

Следовательно, этот подход эквивалентен:

$ xelatex file.tex     # called one or more times to produce file.pdf

Обновлено 31.08.2019 от user36296комментарий.

latexmk --xelatex job.texТеперь аргумент сносен в этой простой форме.

Другие вопросы по тегам