Мне было интересно, как включить файл стиля bib в пользовательский пакет, чтобы его не приходилось отдельно оговаривать в тексте каждого документа.
В частности, я в настоящее время используюnatbib
и позвоните поsp.bst
поместив \bibliographystyle{C:/Users/Miztli/Documents/BibTeX/sp}
before \bibliography{C:/Users/Miztli/Documents/BibTeX/references}
в конце моих документов.
решение1
Мне кажется неправильным пытаться встроить такие вещи в файл .sty
. Даже делая скидку на некоторую гибкость/слабость с файлами личных стилей, кажется сомнительной практикой заставлять их содержать жестко закодированные пути к другим источникам данных. Кроме того, как вы указали, есть очевидные трудности сделать это для библиографии из-за того, куда она хочет быть загружена.
Я бы предпочел (в примерном порядке):
Используйте редактор, который может вставлять фрагмент. Например, в Emacs с помощью yasnippet можно легко определить что-то, чтобы оно соответствующим образом расширялось. Тогда каждый созданный вами файл будет прозрачен относительно того, какие ресурсы он использует. Вы экономите на наборе текста, но каждый созданный вами файл остается достаточно самодостаточным. Это хорошо в долгосрочной перспективе. Хотя этокажетсяНапример, хорошая идея иметь файл стилей, но вы попадете в адскую неразбериху, если в какой-то момент в будущем потеряете его или измените и забудете, как, почему или когда вы его изменили.
Поместите определения библиографии в отдельный файл, который вы просто
\input
в подходящем месте. Но на самом деле ... какой смысл. Вы действительно сэкономите несколько нажатий клавиш.Если вам действительно нужно поместить это в
.sty
файл, сделайте это, определив подходящую собственную команду (\makemybibliography
или что-то еще), которая будет расширяться до нужных вам команд, желательно с подходящими предварительными проверками того, что нужные вам файлы существуют там, где вы ожидаете, и подходящими ошибками, если их там нет. Правильное выполнение этого, вероятно,многобольше работы, чем написать отрывок для редактора.
решение2
Команда \bibliographystyle может быть где угодно, насколько мне известно. Она не обязательно должна быть в конце перед командой \bibliography. Так что вы можете поместить ее в свой пакет или класс.
решение3
.bst
Да, вы можете включить в свой пакет дополнительный файл (внедрить код в файл каким-либо осмысленным образом невозможно, .sty
поскольку он написан на другом языке).
Вам нужно записать его как .dtx
файл стандартным способом для распространяемых пакетов, чтобы, когда пользователь установит его, он распаковал ваш .sty
файл.ифайл .bst
, который вы включили (и другие файлы, если необходимо). Затем пользователь должен поместить эти файлы в «нужное место», что объясняетсяздесь, точно так же, как и для любого другого пакета, установленного вручную.
НО...(очень большое НО), если файл стиля BiBTeX уже является стандартным пакетом на CTAN (я не могу его там найти), то включение частной копии в ваш пакет — действительно Очень Плохая Идея. Пользователь должен установить его из CTAN обычным способом (если он использует дистрибутив TeX с установкой на лету, это может быть сделано для него автоматически).
Это sp.bst
тот, изСемантика и прагматика? Если так, вам следует побудить их правильно упаковать его и сделать доступным через CTAN, если они могут, что облегчит жизнь всем. В любом случае вы, конечно, можете добавить его в свой .dtx
файл, но для этого вам понадобится разрешение автора или владельца авторских прав, а также официальное соглашение на обновление и перезапись.
Пол Стэнлиделает некоторые хорошие замечания, но
- ИМХО этоявляетсяхорошая идея сделать формальный пакет (
.sty
файл пакета ( ), но только если он записан как.dtx
файл с надлежащей документацией, чтобы его можно было установить, поддерживать и ссылаться на него; - Я не уверен, что понимаю, почему.2вообще полезно;
- Помимо Emacs, я не знаю ни одного редактора LaTeX, который бы поддерживал фрагменты, и не стоит заставлять авторов использовать редактор, отличный от того, которым они обычно пользуются.
Рассмотрите возможность перехода с BiBTeX на biblatex (но если этот sp.bst
файл принадлежит S&P, то вам придется убедить их сделать это).