Не-ASCII символы в Biblatex

Не-ASCII символы в Biblatex

Я использую 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 - проблема, с которой вы сталкиваетесь, - это ограничение inputencPDFLaTeX, который не понимает все 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запуск должен создать библиографию с прямыми греческими буквами.

Связанный контент