
Я цитирую две статьи и хочу изменить стиль библиографии, то есть изменить стиль одной статьи и оставить другую неизменной.
\documentclass[12pt,a4paper]{article}
\usepackage[round]{natbib}
\begin{document}
My citation \citep{desmet2015geography}
another citation \citep{roberts2012evaluating}
\medskip
\bibliographystyle{plainnat}
\bibliography{citation}
\end{document}
Библиографический файл (citation.bib)
@article{roberts2012evaluating,
Author = {Roberts, Mark and Deichmann, Uwe and Fingleton, Bernard and Shi, Tuo},
Journal = {Regional Science and Urban Economics},
Number = {4},
Pages = {580--594},
Publisher = {Elsevier},
Title = {Evaluating China's road to prosperity: A new economic geography approach},
Volume = {42},
Year = {2012}}
@techreport{desmet2015geography,
Author = {Desmet, Klaus and Nagy, D{\'a}vid Kriszti{\'a}n and Rossi-Hansberg, Esteban},
Date-Added = {2016-09-03 13:29:14 +0000},
Date-Modified = {2016-09-03 13:29:14 +0000},
Institution = {National Bureau of Economic Research},
Title = {The geography of development: Evaluating migration restrictions and coastal flooding},
Year = {2015}}
IDE:Texpad 1.731
Двигатель: Xelatex, BibTex
решение1
Единственная информация, которая передается между LaTeX и BibTeX, — это ключ cite. Так что если вы хотите различать записи, которые должны использовать "and", и те, которые должны использовать "&", то, похоже, вам следует передавать эту информацию с ключом cite. Вот мое решение, которое это делает.
Записи, которые должны использовать "&", получат ключ цитирования, заканчивающийся на "&". В приведенном выше примере это файл библиографии:
@article{roberts2012evaluating&, Author = {Roberts, Mark and Deichmann, Uwe and Fingleton, Bernard and Shi, Tuo}, Journal = {Regional Science and Urban Economics}, Number = 4, Pages = {580--594}, Publisher = {Elsevier}, Title = {Evaluating {China}'s road to prosperity: A new economic geography approach}, Volume = 42, Year = 2012}
и команда цитирования становится
\citep{roberts2012evaluating&}
(Интересно, что голый вариант &
разрешен.)
- Теперь нам нужно изменить стиль библиографии, чтобы сгенерировать макрос
\AND
вместо "and". Поэтому мы делаем копиюplainnat.bst
и вызываем ееmyplainnat.bst
. Различия таковы (замените первую строку второй):
л. 232 и 325
{ " and " * t * }
{ " \AND{} " * t * }
л. 1111
{ " and " * s #2 "{vv~}{ll}" format.name$ * }
{ " \AND{} " * s #2 "{vv~}{ll}" format.name$ * }
- Теперь используйте
\bibliographystyle{myplainnat}
вместоplainnat
одного. И нам придется переписать,\bibitem
чтобы проверить, заканчивается ли ключ cite на&
, а затем определить\AND
как&
если бы так, и какand
в противном случае.
Итак, вот адаптированный MWE:
\documentclass[12pt,a4paper]{article}
\usepackage[round]{natbib}
\usepackage{ifthen}
\newcommand\AND{and}
\let\origbibitem\bibitem
\renewcommand\bibitem[2][]{%
\bibitemcheckkey{#2}\origbibitem[#1]{#2}}
\newcommand\bibitemcheckkey[1]{%
\bibitemampcheck#1&\relax}
\def\bibitemampcheck#1\relax{%
\ifthenelse{\equal{#2}{&}}{\def\AND{\&}}{\def\AND{and}}}
\begin{document}
My citation \citep{desmet2015geography}
another citation \citep{roberts2012evaluating&}
\medskip
\bibliographystyle{myplainnat}
\bibliography{citation}
\end{document}