Диагностика предупреждения о сборке пакета R: "Ошибки LaTeX при создании PDF-версии"

При создании пакета я получил следующее предупреждение:

* checking PDF version of manual ... WARNING
LaTeX errors when creating PDF version.
This typically indicates Rd problems.

Я понятия не имею, как даже начать диагностировать это. Есть ли инструмент, который говорит мне, в каком файле.Rd проблема?

Я не получаю предупреждений ни о одном из моих Rd-файлов на этапе проверки документации....

8 ответов

Решение

Пытаться R CMD Rd2pdf mypackage создать руководство, и, возможно, также установить --no-clean Возможность сохранить временные файлы. Это должно позволить вам отладить код LaTeX, вызывающий ошибку.

Хотя ответ @Dirk также помог мне решить проблему, я хотел бы добавить кое-что, что может особенно помочь недавним обновлениям. То есть люди, которые еще не сталкивались с другими проблемами LaTeX / R после обновления до 3.1.3. Проблема немного более общая, чем просто строительство. Для меня на OS X проблема была в том, что R CMD Rd2pdf так же хорошо как R CMD CHECK ожидаемый texi2dvi Быть в /usr/local/bin пока это было в /usr/bin, Символическая ссылка помогла решить проблему. По типу терминала:

# to check whether the same issue exists for you
which texi2dvi
# if so
cd /usr/local/bin
ln -s /usr/bin/texi2dvi

Конечно, если первая строка возвращает что-то еще, вам нужно адаптировать символическую ссылку здесь.

Исходя из комментариев и из моего собственного опыта, проблема часто заключается в том, что некоторые шрифты TeX отсутствуют, чаще всего

  • inconsolata.sty а также
  • upquote.sty

Сначала вы должны найти правильный каталог, в котором хранятся шрифты TeX - в моем случае это:

C:\Program Files\R\R-3.3.0\share\texmf\tex\latex

Тогда вы можете скачать их здесь:

Просто скопируйте их в соответствующую папку, и во многих случаях проблема будет решена (в моем случае тоже). Это должно работать для всех операционных систем.

... и еще одна причина в том, что вы еще не установили MikTex.

  1. Загрузите MikTex отсюда и следуйте инструкциям по установке. Я нашел значения по умолчанию, чтобы быть разумным и работал хорошо для меня.

  2. Попробуйте собрать свой пакет R снова. Теперь все должно быть в порядке.

В моем случае у меня не было ошибок при запускеdevtools::check()ниdevtools::document()но при бегеR CMD check mypackage_version.tar.gzЯ получил ошибку:

      * checking PDF version of manual ... WARNING
LaTeX errors when creating PDF version.
This typically indicates Rd problems.
LaTeX errors found:
* checking PDF version of manual without hyperrefs or index ... ERROR

В этом вопросе в RStudio Community указывают на проблему с установкой LATEX. У меня есть установка LATEX, предложенная в кулинарной книге R markdown : TinyTex. Я исправил проблему, запустив в консоли R

      tinytex::latexmk(file = "../mypackage.Rcheck/mypackage-manual.tex")

Эта команда автоматически обновила мою установку LATEX, поэтому был создан выходной файл mypackage-manual.pdf. После этого я не получал никаких других ошибок, связанных с PDF, при запускеR CMD check:

      * checking PDF version of manual ... OK
* DONE

Если вы используете Ubuntu, просто установите Tex Live с помощью этой команды:apt-get install texlive и перезапустите Rstudo, если вы его используете.

Часто эта ошибка возникает из-за символов Unicode в пакете. В этом случае сообщение об ошибке может выглядеть следующим образом.

      See the inputenc package documentation for explanation.
Type  H <return>  for immediate help.
! Package inputenc Error: Unicode character  (U+009D)
(inputenc)                not set up for use with LaTeX.

Вы можете найти любые символы Unicode в вашем пакете, используяtools::showNonASCIIfile(). Вот простой способ проверить наличие этих символов в ваших функциях и документации:

      # functions
functions <- list.files(path = './R', all.files = T, recursive = T, full.names = T)
lapply(X=functions, FUN = tools::showNonASCIIfile)

# documentation
docs <- list.files(path = './man', all.files = T, recursive = T, full.names = T)
lapply(X=docs, FUN = tools::showNonASCIIfile)

Во-первых, подход @dirk-eddelbuettel в текущем вопросе определил отсутствующий пакет tex (в моем случае это был «makeindex»).

      system("R CMD Rd2pdf --no-preview --output=./documentation-peek.pdf ." )

# ... <omitted pages of output> ...
# Warning in sys2(makeindex, shQuote(idxfile)) : '"makeindex"' not found
# Error in texi2dvi(file = file, pdf = TRUE, clean = clean, quiet = quiet,  : 
#    unable to run 'makeindex' on 'Rd2.idx'
# Error in running tools::texi2pdf()

Тогда ответ @pedro-lima в /questions/59607562/devtoolsbuildmanual-oshibka-ne-udalos-sozdat-rukovodstvo/61523610#61523610 сработал для моего конкретного случая.

      tinytex::tlmgr_install("makeindex")
Другие вопросы по тегам