Диагностика предупреждения о сборке пакета 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
Тогда вы можете скачать их здесь:
- https://www.ctan.org/tex-archive/fonts/inconsolata/?lang=en
- https://www.ctan.org/tex-archive/macros/latex/contrib/upquote?lang=en
Просто скопируйте их в соответствующую папку, и во многих случаях проблема будет решена (в моем случае тоже). Это должно работать для всех операционных систем.
... и еще одна причина в том, что вы еще не установили MikTex.
Загрузите MikTex отсюда и следуйте инструкциям по установке. Я нашел значения по умолчанию, чтобы быть разумным и работал хорошо для меня.
Попробуйте собрать свой пакет 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")