Я использую biblatex
и backend=biber
следующий .bib
файл:
@article{concellon_synthesis_2006,
title = {Synthesis of Enantiopure ({αS,βS)-} or ({αR,βS)-β-Amino} Alcohols by Complete Regioselective Opening of Aminoepoxides by Organolithium Reagents {LiAlH4} or {LiAlD4}},
volume = {71},
number = {17},
journal = {J. Org. Chem.},
author = {Concellón, José M. and Bernad, Pablo L. and del Solar, Virginia and Suárez, José Ramón and García-Granda, Santiago and Díaz, M. Rosario},
month = aug,
year = {2006},
pages = {6420--6426},
}
Я могу успешно скомпилировать это с помощью biber
, но затем pdflatex
команда терпит неудачу из-за α
и β
в .bbl
файле. Я поражен тем фактом, что, похоже, нет элегантного решения для этой проблемы, хотя это, кажется, повседневный сценарий, по крайней мере в научной литературе.
Какие есть варианты решения этой проблемы?
решение1
Вам нужно назначить значение символам Unicode, которые вы используете и которые не установлены по умолчанию. Вот способ.
\begin{filecontents*}{\jobname.bib}
@article{concellon_synthesis_2006,
title = {Synthesis of Enantiopure ({αS,βS)-} or ({αR,βS)-β-Amino} Alcohols by Complete Regioselective Opening of Aminoepoxides by Organolithium Reagents {LiAlH4} or {LiAlD4}},
volume = {71},
number = {17},
journal = {J. Org. Chem.},
author = {Concellón, José M. and Bernad, Pablo L. and del Solar, Virginia and Suárez, José Ramón and García-Granda, Santiago and Díaz, M. Rosario},
month = aug,
year = {2006},
pages = {6420--6426},
}
\end{filecontents*}
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{newunicodechar}
\newunicodechar{α}{\ensuremath{\alpha}}
\newunicodechar{β}{\ensuremath{\beta}}
\usepackage{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
\cite{concellon_synthesis_2006}
\printbibliography
\end{document}
Использование filecontents
только для получения автономного MWE.
Другим решением является использование \textgreek
пакета, который также экономит от, newunicodechar
поскольку он определяет значение греческих букв Unicode как эквивалентное их \text...
аналогу. Так что α
становится \textalpha
.
\begin{filecontents*}{\jobname.bib}
@article{concellon_synthesis_2006,
title = {Synthesis of Enantiopure ({αS,βS)-} or ({αR,βS)-β-Amino} Alcohols by Complete Regioselective Opening of Aminoepoxides by Organolithium Reagents {LiAlH4} or {LiAlD4}},
volume = {71},
number = {17},
journal = {J. Org. Chem.},
author = {Concellón, José M. and Bernad, Pablo L. and del Solar, Virginia and Suárez, José Ramón and García-Granda, Santiago and Díaz, M. Rosario},
month = aug,
year = {2006},
pages = {6420--6426},
}
\end{filecontents*}
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textgreek}
\usepackage{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
\cite{concellon_synthesis_2006}
\printbibliography
\end{document}
Результатом является
решение2
biber разработан для того, чтобы иметь возможность автоматически перекодировать в макросы TeX именно в этой ситуации. Это объясняется в руководстве biber - проблема, с которой вы сталкиваетесь, - это ограничение inputenc
PDFLaTeX, который не понимает все UTF-8. Загрузите biblatex с опцией safeinputenc
, а затем вызовите biber с --output_safecharsset=full
опцией. Это сделает все автоматически для вас.
Чтобы переключиться на варианты textgreek, это довольно просто, у вас должен быть пользовательский файл данных преобразования UTF-8<->TeX macro XML (biber поставляется с файлом по умолчанию, который подходит для большинства случаев). Чтобы использовать варианты textgreek, получите этот файл:
https://www.dropbox.com/s/ln3ht1xd9mmgu9w/recode.xml
Затем позвоните Биберу так:
biber --recodedata=<path to file downloaded above>
Затем просто убедитесь, что \usepackage{textgreek}
в вашем документе LaTeX есть safeinputenc
опция biblatex.
Гораздо более простой способ справиться с этим — просто переключиться на LuaLaTeX, поскольку biber без проблем справляется с UTF-8. Тогда нет необходимости в специальной опции biber или safeintputenc
опции biblatex.
решение3
Если вы хотите использовать Unicode, вам следует рассмотреть возможность использованияспецификация шрифтавместе со шрифтом Unicode с греческими буквами (которые есть практически во всех шрифтах Unicode). Здесь я использовал Linux Libertine.
\documentclass{article}
\usepackage{filecontents,fontspec,biblatex}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\begin{filecontents}{\jobname.bib}
@article{concellon_synthesis_2006,
title = {Synthesis of Enantiopure ({αS,βS)-} or ({αR,βS)-β-Amino} Alcohols by Complete Regioselective Opening of Aminoepoxides by Organolithium Reagents {LiAlH4} or {LiAlD4}},
volume = {71},
number = {17},
journal = {J. Org. Chem.},
author = {Concellón, José M. and Bernad, Pablo L. and del Solar, Virginia and Suárez, José Ramón and García-Granda, Santiago and Díaz, M. Rosario},
month = aug,
year = {2006},
pages = {6420--6426}}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cite{concellon_synthesis_2006}
\printbibliography
\end{document}
решение4
Благодаря PLK и cgnieder мне удалось найти решение, которым я доволен. Оно основано на ответе PLK, но также обеспечивает вертикальное расположение греческих букв.
\begin{filecontents*}{\jobname.bib}
@article{concellon_synthesis_2006,
title = {Synthesis of Enantiopure ({αS,βS)-} or ({αR,βS)-β-Amino} Alcohols by Complete Regioselective Opening of Aminoepoxides by Organolithium Reagents {LiAlH4} or {LiAlD4}},
volume = {71},
number = {17},
journal = {J. Org. Chem.},
author = {Concellón, José M. and Bernad, Pablo L. and del Solar, Virginia and Suárez, José Ramón and García-Granda, Santiago and Díaz, M. Rosario},
month = aug,
year = {2006},
pages = {6420--6426},
}
\end{filecontents*}
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textgreek}
\usepackage[backend=biber, safeinputenc]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
\cite{concellon_synthesis_2006}
\printbibliography
\end{document}
Теперь файл макроса (находится наБибер CTAN /biblatex-biber-1.5/lib/Biber/LaTeX/recode_data.xml
) необходимо отредактировать. Это:
<maps type="greek" set="full">
<map><from>alpha</from> <to hex="3B1">α</to></map>
<map><from>beta</from> <to hex="3B2">β</to></map>
...
<map><from>Omega</from> <to hex="3A9">Ω</to></map>
</maps>
Необходимо изменить на это:
<maps type="wordmacros" set="base,full">
<map><from>textalpha</from> <to hex="3B1">α</to></map>
<map><from>textbeta</from> <to hex="3B2">β</to></map>
...
<map><from>textOmega</from> <to hex="3A9">Ω</to></map>
</maps>
и сохранены в вашем рабочем каталоге. Пакет textgreek
предоставляет \textalpha
команду, которая приводит к вертикальному α
.
Запустите Biber
со следующими параметрами:
--recodedata=recode_data.xml
А следующий pdflatex
запуск должен создать библиографию с прямыми греческими буквами.