Я собираюсь отправить статью в Journal Of Applied Physics (JAP). Поэтому я использую класс документа revtex4-1 \documentclass[aip,jap,reprint,superscriptaddress,amsmath,amssymb]{revtex4-1}
.
Во время подготовки своей статьи я использую файл .bib для генерации списка ссылок. Но сейчас, когда пришло время отправки, я хочу встроить ссылку в свой файл latex как \bibitems. Один из методов — скопировать содержимое файла .bbl, который автоматически генерируется файлом .bib во время обработки latex.
Как и прокомментировал Джон, содержимое файла .bbl контролируется documentclass. Но проблема в том, что я обнаружил, что файл .bbl, созданный стилем JAP documentclass, очень сложный, длинный и нечитаемый. Что-то вроде:
\begin{thebibliography}{2}%
\makeatletter
\providecommand \@ifxundefined [1]{%
\@ifx{#1\undefined}
}%
\providecommand \@ifnum [1]{%
\ifnum #1\expandafter \@firstoftwo
\else \expandafter \@secondoftwo
\fi
}%
\providecommand \@ifx [1]{%
\ifx #1\expandafter \@firstoftwo
\else \expandafter \@secondoftwo
\fi
}%
\providecommand \natexlab [1]{#1}%
\providecommand \enquote [1]{``#1''}%
\providecommand \bibnamefont [1]{#1}%
\providecommand \bibfnamefont [1]{#1}%
\providecommand \citenamefont [1]{#1}%
\providecommand \href@noop [0]{\@secondoftwo}%
\providecommand \href [0]{\begingroup \@sanitize@url \@href}%
\providecommand \@href[1]{\@@startlink{#1}\@@href}%
\providecommand \@@href[1]{\endgroup#1\@@endlink}%
\providecommand \@sanitize@url [0]{\catcode `\\12\catcode `\$12\catcode
`\&12\catcode `\#12\catcode `\^12\catcode `\_12\catcode `\%12\relax}%
\providecommand \@@startlink[1]{}%
\providecommand \@@endlink[0]{}%
\providecommand \url [0]{\begingroup\@sanitize@url \@url }%
\providecommand \@url [1]{\endgroup\@href {#1}{\urlprefix }}%
\providecommand \urlprefix [0]{URL }%
\providecommand \Eprint [0]{\href }%
\providecommand \doibase [0]{http://dx.doi.org/}%
\providecommand \selectlanguage [0]{\@gobble}%
\providecommand \bibinfo [0]{\@secondoftwo}%
\providecommand \bibfield [0]{\@secondoftwo}%
\providecommand \translation [1]{[#1]}%
\providecommand \BibitemOpen [0]{}%
\providecommand \bibitemStop [0]{}%
\providecommand \bibitemNoStop [0]{.\EOS\space}%
\providecommand \EOS [0]{\spacefactor3000\relax}%
\providecommand \BibitemShut [1]{\csname bibitem#1\endcsname}%
\let\auto@bib@innerbib\@empty
%</preamble>
\bibitem [{\citenamefont {Mazin}\ \emph {et~al.}(2008)\citenamefont {Mazin},
\citenamefont {Singh}, \citenamefont {Johannes},\ and\ \citenamefont
{Du}}]{10.1103/PhysRevLett.101.057003}%
\BibitemOpen
\bibfield {author} {\bibinfo {author} {\bibfnamefont {I.~I.}\ \bibnamefont
{Mazin}}, \bibinfo {author} {\bibfnamefont {D.~J.}\ \bibnamefont {Singh}},
\bibinfo {author} {\bibfnamefont {M.~D.}\ \bibnamefont {Johannes}}, \ and\
\bibinfo {author} {\bibfnamefont {M.~H.}\ \bibnamefont {Du}},\ }\href
{\doibase 10.1103/PhysRevLett.101.057003} {\bibfield {journal} {\bibinfo
{journal} {{Phys. Rev. Lett.}}\ }\textbf {\bibinfo {volume} {{101}}},\
\bibinfo {pages} {057003} (\bibinfo {year} {2008})}\BibitemShut {NoStop}%
\bibitem [{\citenamefont {Mazin}(2010)}]{10.1038/nature08914}%
\BibitemOpen
\bibfield {author} {\bibinfo {author} {\bibfnamefont {I.~I.}\ \bibnamefont
{Mazin}},\ }\href {\doibase 10.1038/nature08914} {\bibfield {journal}
{\bibinfo {journal} {{Nature}}\ }\textbf {\bibinfo {volume} {{464}}},\
\bibinfo {pages} {183} (\bibinfo {year} {2010})}\BibitemShut {NoStop}%
\end{thebibliography}%
внешний вид ссылки такой
Ну, вставка такого огромного блока данных в файл latex, конечно, работает. Но он нечитаем.
На самом деле, если мы используем модифицированный unsrt
стиль, упомянутый здесьМожно ли получить библиографию unsrt + abbrv?. Мы можем сгенерировать внешний вид ссылки, очень похожий на стиль JAP. Изменение сделано в unsrt.bst
файле. Так как имя автора в оригинале unsrt
не в стиле JAP. Поэтому, изменив ff~
на f.~ в FUNCTION {format.names}
, мы получили стиль имени автора JAP. Сгенерированный файл .bbl теперь намного понятнее, как показано ниже:
\begin{thebibliography}{1}
\bibitem{10.1103/PhysRevLett.101.057003}
I.~I. Mazin, D.~J. Singh, M.~D. Johannes, and M.~H. Du.
\newblock {\em {Phys. Rev. Lett.}}, {101}(5):057003, 2008.
\bibitem{10.1038/nature08914}
I.~I. Mazin.
\newblock {\em {Nature}}, {464}(7286):183--186, 2010.
\end{thebibliography}
Чтобы создать точный внешний вид ссылки JAP, мы можем просто сделать несколько текстовых замен, например:
- удалить \em
- удалить (5) и (7286)
- заменить ":" на ","
- добавьте круглые скобки к году.
- жирный 101 и 464
- изменить 183--186 на 183
вышеприведенный список операций можно легко выполнить с некоторыми знаниями о замене регулярных выражений. И в итоге мы получили следующие \biitems, которые производят точно такой же стиль ссылок JAP.
\begin{thebibliography}{1}
\bibitem{10.1103/PhysRevLett.101.057003}
I.~I. Mazin, D.~J. Singh, M.~D. Johannes, and M.~H. Du.
\newblock {{Phys. Rev. Lett.}} \textbf{101}, 057003 (2008).
\bibitem{10.1038/nature08914}
I.~I. Mazin.
\newblock {{Nature}} \textbf{464}, 183 (2010).
\end{thebibliography}
Точно так же, как изменение ff~
на f.~
in unsrt.bst
дает правильное имя автора в стиле JAP. Я считаю, что нам просто нужно внести несколько дополнительных изменений в unsrt.bst
файл, чтобы сгенерировать правильные и понятные \bibitems в стиле JAP за один шаг, поэтому мне не нужна никакая постобработка подстановки регулярных выражений.
решение1
Думаю, теперь я сам могу ответить на свой вопрос.
Ключом к решению этой проблемы является создание пользовательского bst-файла стиля библиографии.
Есть два способа сделать это.
- использовать инструмент makebst в пакетеиндивидуальный нагрудник
- использовать программное обеспечение на основе Javaнагрудник
makebst
это командная строка для генерации пользовательского .bst файла после того, как вы ответите на серию из около 70 вопросов, связанных с форматом нужного вам стиля ссылки. Для меня это не так дружелюбно, вы можете узнать, как использовать его шаг за шагом, прочитав эту статьюLaTeX, управление библиографией и стили.
С другой стороны, я обнаружил, что использовать bib-it
его гораздо проще (спасибо автору bib-it
). У него есть Bibtex style generator
, который является графическим. Теперь я покажу, как использовать его bib-it
для генерации файла .bst в стиле JAP всего за несколько минут.
Открыв bib-it
, нажмите "инструменты-->генератор стилей". Вы увидите графический интерфейс под названием Bibtex style generator
. Вам нужно выполнить 3 шага настройки, показанные на следующем рисунке:
- статья
- книга
- автор
Наконец, просто нажимаете «сгенерировать и сохранить», и получаете свой пользовательский bst-файл.
Внешний вид сгенерированной ссылки выглядит так
и файл .bbl, сгенерированный автоматически, вполне понятен
\begin{thebibliography}{}
\bibitem{10.1103/PhysRevLett.101.057003}
I.~I. Mazin, D.~J. Singh, M.~D. Johannes and M.~H. Du, {Phys. Rev. Lett.}
\textbf{{101}}, 057003 (2008).
\bibitem{10.1038/nature08914}
I.~I. Mazin, {Nature} \textbf{{464}}, 183--186 (2010).
\end{thebibliography}
Единственная ошибка - это "страницы", JAP нужна только начальная страница. Это можно исправить одной операцией замены с использованием регулярного выражения.
решение2
Вы можете вставить содержимое вашего bib-файла в начало преамбулы (после строки \documentclass
), используя filecontents
среду.
\usepackage{filecontents}
\begin{filecontents} {mwe.bib}
@online{tab:test,
author = {Doe, John},
Url = {http://www.example.com/images/image.jpg},
Urldate = {2014-02-25},
Timestamp = {2014.06.13},
Note = {Table \ref{tab1}}, %<== this should point to your table caption label
year = {2014}, %this is necessary for the in-text citation to work
}
\end{filecontents}