Подтвердить что ты не робот

Компиляция файла tex XeLaTeX с помощью латексма

Как скомпилировать документ XeLaTeX tex с помощью 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 (как предложено этот пост):

% !TEX TS-program = xelatexmk

и я пробовал другие (например, program = 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"
   ...

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

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

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

Брайан

4b9b3361

Ответ 1

Это мое быстрое решение , так что 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.

Ответ 2

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

Я положил

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

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

latexmk -pvc -pdf MyXetexFile

Ответ 3

$ 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

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

Ответ 5

В версии: 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

Обновлено 2019.08.31 из комментария user36296.