Добавление нового стиля библиографии с R Markdown и TinyTex - PullRequest
2 голосов
/ 28 февраля 2020

Я пишу статью, используя R Markdown и TinyTex, используя Biblatex для ссылок. Он отлично работает со ссылочными стилями по умолчанию, но мне нужно добавить собственную библиографию и стиль цитирования для журнала, для которого я пишу.

Мне нужно следовать Единой таблице стилей для лингвистики, для которой есть Biblatex реализация доступна на Github здесь , содержащей файлы .bbx и .cbx.

Я пытался добавить эти файлы .bbx и .cbx в мою локальную копию TinyTex внутри Library/TinyTex/texmf-local/tex/latex/biblatex , Мой заголовок YAML включает:

output: 
  pdf_document:
    citation_package: biblatex
biblatexoptions: [bibstyle=biblatex-sp-unified, citestyle=sp-authoryear-comp]

Когда я вяжу документ, я получаю следующую ошибку:

tlmgr search --file --global '/biblatex-dm.cfg'
! Package keyval Error: bibstyle undefined.

У меня нет файла biblatex-dm.cfg (и при этом я на самом деле понять, что это будет). Я бы подумал, что файлов .bbx и .cbx будет достаточно, основываясь на регулярных инструкциях по установке в репозитории Github стиля.

Куда мне поместить файлы .bbx и .cbx, чтобы tlmgr мог их найти ? И / или какие дополнительные шаги мне нужно предпринять, чтобы использовать этот стиль в моей работе?

======================== =================================================

ОБНОВЛЕНИЕ : Похоже, проблема связана с шаблоном Pando c LaTeX, который использует R Markdown.

За исключением R Markdown, я создал меньший минимальный пример LaTeX:

  • main. tex
  • reference.bib

Где main.tex:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[bibstyle=biblatex-sp-unified,citestyle=sp-authoryear-comp]{biblatex}

\addbibresource{references.bib}

\begin{document}

Something something \citep{darwin_origin_1859}.

\printbibliography

\end{document}

И reference.bib:

@book{darwin_origin_1859,
    location = {London},
    title = {On the Origin of Species by Means of Natural Selection},
    publisher = {J. Murray},
    author = {Darwin, Charles},
    date = {1859}
}

I успешно скомпилировал этот пример, используя последовательность команд pdflatex, biber, pdflatex, pdflatex. Таким образом, кажется, что моя локальная установка TeX знает о файлах biblatex-sp-unified.bbx и sp-authoryear-comp.cbx, которые я добавил, и может использовать их очень хорошо.

Впоследствии я создал эквивалентный минимальный документ R Markdown с заголовком YAML:

title: "Untitled"
output:
  pdf_document:
    citation_package: biblatex
bibliography: references.bib
biblatexoptions: [bibstyle=biblatex-sp-unified, citestyle=sp-authoryear-comp]

и тело:

Something something [@darwin_origin_1859].

На этот раз я получил то же самое старое сообщение об ошибке:

tlmgr search --file --global '/biblatex-dm.cfg'
! Package keyval Error: bibstyle undefined.

Это может свидетельствовать о том, что проблема вызванный чем-то в шаблоне LaTeX Pando c, но я не знаю, что.

Просто чтобы подтвердить, что это определенно шаблон Pando c, а не моя собственная установка / настройка, я взял Файл .tex, который создается, когда я связал приведенный выше пример минимальной R Markdown и попытался скомпилировать его в Overleaf (с добавлением файлов biblatex-sp-unified.bbx и sp-authoryear-comp.cbx). Я воспроизвел ту же ошибку.

Хотя я думаю, что локализовал проблему, я все же очень хотел бы понять, что и где проблема в шаблоне Pando c. Я также хотел бы узнать, есть ли у кого-нибудь исправления (кроме использования другого шаблона или написания моего собственного).

1 Ответ

0 голосов
/ 01 марта 2020

ОБНОВЛЕНИЕ: похоже, это проблема с использованием устаревшей версии R Markdown и / или Pando c.

Я использовал пакет rmarkdown т.1. На момент написания статьи самая последняя версия - 2.1.

Я обновил все свои пакеты и обновил Rstudio (который в настоящее время поставляется с Pando c v2.3.1) и больше не испытывает проблем. Я также обновил R (с 3.5 до 3.6.2) и произвел переустановку крошечного крошечного sh, пока я был там, но я не уверен, повлияли ли эти вещи на эту конкретную проблему.

Теперь, когда я добавляю biblatexoptions: [bibstyle=biblatex-sp-unified, citestyle=sp-authoryear-comp] в мой заголовок YAML, он корректно преобразуется в команду LaTeX \usepackage[bibstyle=biblatex-sp-unified,citestyle=sp-authoryear-comp]{biblatex}, а не в команду \ExecuteBibliographyOptions, как описано ниже.

Первоначально Ральф Стубнер предложил Я проверяю свои версии R Markdown / Pando c в комментариях. Пожалуйста, дайте его комментарии, если вам они тоже пригодятся.


Резюме проблемы:

Я пишу документ в R Markdown и у меня есть особый стиль ссылок, который я хотел бы использовать с biblatex. У меня есть файлы .bbx и .cbx, определяющие стиль, доступные на Github (ссылка выше). Проблема в том, что документ не компилируется, говоря, что стили библиографии / цитирования не определены (даже когда файлы стилей находятся в самой папке проекта).

Я обнаружил, что проблема была вызвана тем, как я передавал варианты в biblatex. В моем заголовке YAML строка:

biblatexoptions: [bibstyle=biblatex-sp-unified, citestyle=sp-authoryear-comp]

преобразуется в латексную команду:

\ExecuteBibliographyOptions{bibstyle=biblatex-sp-unified,citestyle=sp-authoryear-comp}

Я не уверен почему, но когда эта команда включена, она выдает ошибки, которые я наблюдал.

Установка нового стиля Biblatex:

Я обнаружил, что TeX не знает о файлах .bbx и .cbx, когда они находятся в моем каталоге ~/Library/TinyTex/texmf-local/tex/latex/biblatex (именно туда я и положил их в соответствии с инструкциями по установке Github).

Чтобы стиль ссылок распознавался В систему я поместил файлы .bbx и .cbx внутри ~/Library/TinyTex/texmf-dist/tex/latex/biblatex/bbx и ~/Library/TinyTex/texmf-dist/tex/latex/biblatex/cbx соответственно. Затем в терминале я запустил sudo mktexlsr.

(в качестве альтернативы, для использования только с определенным документом, файлы .bbx и .cbx можно просто сохранить в каталоге проекта с помощью R Markdown. файл)

Оригинальный хакерский ответ (но см. обновление выше):

Вместо использования biblatexoptions в заголовке YAML документа R Markdown, я просто связал его с citation_package: biblatex (и без дополнительных опций). Я также добавил keep_tex: yes. Затем я открыл получившийся текстовый файл, нашел команду \usepackage{bibtex} и добавил нужные параметры, поэтому она прочитала \usepackage[bibstyle=biblatex-sp-unified,citestyle=sp-authoryear-comp]{biblatex}.

Наконец, я запустил pdflatex и biber для текстового файла в терминал. Очевидно, что это далеко от идеала, но технически это даст желаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...