Я использую Biblatex-APA/Biber с LyX и файл Bibtex, созданный Mendeley. Я могу создавать библиографии без проблем, но я хотел бы изменить стиль ссылок для inproceedings/booktitle. На данный момент мои ссылки выглядят так:
Cole, R., Purao, S., Rossi, M. & Sein, M. (2005). Being proactive: Where action research meets design research. In Proceedings of the 26th international conference on information systems.
Из моего Bibtex-файла:
@inproceedings{Cole2005,
author = {Cole, Robert and Purao, Sandeep and Rossi, Matti and Sein, Maung},
booktitle = {Proceedings of the 26th International Conference on Information Systems},
title = {{Being proactive: Where action research meets design research}},
year = {2005}
}
Теперь я хочу сохранить заглавные буквы в названии моих трудов/книги, чтобы получить следующее:
Cole, R., Purao, S., Rossi, M. & Sein, M. (2005). Being proactive: Where action
research meets design research. In Proceedings of the 26th International Conference
on Information Systems.
Я экспериментировал со следующим, но безуспешно.
\DeclareFieldFormat[inproceedings]{booktitle}{#1}
Какие-либо предложения?
решение1
Из файла стиля библиографии apa.bbx
,
\DeclareFieldFormat[inproceedings]{booktitle}{#1}
не работает, так как booktitle
поле задано с помощью \printfield[apacase]{booktitle}
, где apacase
директива форматирования определена как
\DeclareFieldFormat{apacase}{\MakeSentenceCase*{#1}}
Чтобы сохранить исходный регистр для booktitle
поля в @inproceedings
типе записи, вы можете переопределить booktitle
макрос библиографии или apacase
директиву в преамбуле документа. Пример последнего подхода:
\DeclareFieldFormat{apacase}{%
\ifboolexpr{ test {\ifentrytype{inproceedings}}
and ( test {\ifcurrentfield{booktitle}}
or test {\ifcurrentfield{booksubtitle}} ) }
{#1}{\MakeSentenceCase*{#1}}}
Чтобы избежать использования регистра предложений во всех заголовках, кроме оригинальных ( origtitle
) и дополнений к заголовкам, используйте
\DeclareFieldFormat{apacase}{#1}
вместо этого. Поскольку biblatex-apa
полагается только на вариант со звездочкой, \MakeSentenceCase*
вы можете избежать всех изменений регистра предложений, добавив \DeclareCaseLangs{}
преамбулу и используя поле hyphenation
в вашем bib
файле.
Обратите внимание, что вы можете избежать защиты некоторых слов от понижения регистра с помощью поля subtitle
. Например:
title = {Being proactive},
subtitle = {Where action research meets design research},
решение2
Можно сохранить определенную заглавную букву, просто поместив букву вопроса в фигурные скобки. Так
@inproceedings{Cole2005,
author = {Cole, Robert and Purao, Sandeep and Rossi, Matti and Sein, Maung},
booktitle = {{Proceedings} of the 26th {International} {Conference} on {Information} {Systems}},
title = {{Being proactive: Where action research meets design research}},
year = {2005}
}
сделает свою работу. Но в большинстве случаев гораздо проще заключить всю строку в фигурные скобки, как это сделано с заголовком.
решение3
Поскольку я искал удобное решение, по крайней мере для меня, я написал небольшой скрипт на Python, который анализирует мой локальный файл bib, созданный Mendeley. Этот скрипт помещает названия книг в две фигурные скобки.
import re
import fileinput
library = 'path/to/file'
import re
def re_sub_verbose(pattern, replace, string):
def substitute(match):
return match.expand(replace)
result = re.sub(pattern, substitute, string)
return result
for line in fileinput.input(library, inplace=1):
print re_sub_verbose("booktitle = \{(.*)\},", "booktitle = {{\\1}},", line)