Автоматически создавать библиографию из bibtex в pandoc/markdown без встроенных ссылок
Как я могу автоматически создать список цитат из файла bibtex, желательно в формате уценки (точнее, pandoc)?
Я занимаюсь созданием своего личного академического веб-сайта. Как и большинство личных, академических сайтов, я включаю страницу, в которой перечислены мои публикации. Тем не менее, я действительно не хочу писать каждую цитату вручную, поэтому я пытаюсь найти автоматизированный метод создания цитат из одного или нескольких файлов bibtex.
В идеале был бы инструмент, с которым я мог бы просто передать файл bibtex, содержащий мои публикации, и он выплевывал бы уценку (я использую pandoc + makefile для создания сайта). В настоящее время я не знаю о таком инструменте.
Дальнейшее усложнение моих потребностей - тот факт, что простого плоского списка публикаций недостаточно. Мне нужно иметь возможность перечислить различные публикации по разным категориям (экспертные оценки и независимые экспертные оценки по крайней мере). Хотя если бы такой инструмент, как я хотел, был выше, я мог бы легко поддерживать несколько файлов с библейским файлом и использовать некоторые bash -fu для выполнения этого.
Ответы
Ответ 1
Мне хотелось сделать то же самое по той же причине (создание веб-сайта с использованием Hakyll), и я нашел "проблему": CSL файл.
Pandoc, на самом деле эта работа отлично и решение, предоставленное MacFarlane является правильным, но в нем отсутствует объяснение правила файла CSL - это то, что определяет, будете ли вы иметь нумерованную ссылку в среднем тексте со списком публикаций в конце или нет.
Julien Tanguy создал стиль CSL, который помещает публикацию упрощенная информация от BibTeX в том месте, где цитируется ссылка, полученная из чикагского стиля. Конечно, вы можете использовать его (он лицензируется в соответствии с Creative Commons Attribution-Share Alike 3.0), но вы также можете создать свой.
Итак, теперь (спустя долгое время после того, как вы разместили вопрос), я надеюсь, что у вас есть полный ответ.
Ответ 2
Для этого вы можете использовать поддержку цитирования pandoc. Создайте файл разметки в следующих строках:
# Peer-reviewed papers
1. [@me2001]
2. [@me2002]
# Non-peer-reviewed papers
1. [@me1999]
2. [@me1998]
где me1999
и т.д. - это ключи в файле bibtex. Затем найдите или создайте CSL файл, который форматирует цитаты так, как вам хотелось бы, и обработайте с помощью pandoc:
pandoc --bibliography mybiblio.bib --csl mycsl.csl -o citations.html -s citations.txt
Или вы можете добавить -t markdown
и получить версию уценки, если хотите.
Если вы не хотите вручную создавать файл разметки ввода, вы можете написать script, чтобы сгенерировать его из вашего файла bibtex, если он содержит достаточные метаданные, чтобы отличать рецензирование от независимых экспертов документы.
Ответ 3
Как указывали другие, самый простой способ сделать это - использовать соответствующий CSL файл. Kieran Healy предоставляет такой файл в своем репозитории pandoc-templates, размещенном на GitHub.
Файл chicago-syllabus.csl делает небольшое изменение стандартного Chicago Notes CSL файл, чтобы вы могли использовать его для вывода цитаты информация в основном тексте документа. Это делает его полезным для списки ссылок в резюме и курсовых программах.
Просто скачайте файл и передайте параметр --csl==<link to CSL-file>
на pandoc (где <link to CSL-file>
- это путь к тому, где вы сохранили загруженный файл.
Ответ 4
Я использую bibtexbrowser для своего личного сайта. Это PHP скрипт, который легко интегрируется в другие веб-сайты (до тех пор, пока сервер поддерживает PHP). Это решение, к сожалению, не создает уценку, но оно довольно гибкое и имеет преимущество в том, что непосредственно считывает файл bibtex.
В качестве альтернативы вы можете использовать bibtex2html (или аналогичный инструмент) для генерации HTML. Pandoc объединяет несколько входных файлов, и вы можете использовать raw html в Markdown, поэтому его следует включать в любое место, где вам нужно. Вы также можете использовать Pandoc для преобразования HTML в Markdown, если Markdown должен быть вашим окончательным результатом.