Комбинация полиглоссии + библатекса + csquotes, игнорирующая настройку автопункта

Комбинация полиглоссии + библатекса + csquotes, игнорирующая настройку автопункта

У меня возникли проблемы с получением biblatexвозможности autopunctпакета csquotesпри использовании polyglossia. Я хочу распечатать свои ссылки как

В трудах. «Название работы». В: 2019.

не как

В трудах. «Название работы». В: 2019.

(Обратите внимание на расположение предлога .«до» ).

В следующем MWE это достигается, когда я использую Babel, нонеткогда я использую polyglossia.

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
  @inproceedings{example,
    author = {Proceedings, I. N.},
    year = {2019},
    title = {Title of the Work},
  }
\end{filecontents}

\newif\ifusepolyglossia
\usepolyglossiatrue
%\usepolyglossiafalse
\ifusepolyglossia
  \usepackage{polyglossia}
  \setdefaultlanguage[variant=usmax]{english}
\else
 \usepackage[american]{babel}
\fi
\usepackage[autopunct]{csquotes}
\usepackage[backend=biber]{biblatex}
\addbibresource{\jobname.bib}

\begin{document}
\cite{example}

\printbibliography
\end{document}

Я что-то делаю не так или просто столкнулся с ошибкой в ​​одном из этих пакетов? Я компилирую свой документ с помощью LuaLaTeX.

решение1

Это результат несовместимости между biblatexи polyglossiaязыковым интерфейсом. With polyglossia biblatexможет определить только основной язык ( englishв данном случае), а не вариант языка ( american). Часто эта проблема остается незамеченной, но она может вызвать некоторые нежелательные эффекты в определенных крайних случаях, таких как этот. Вот почему next versionof biblatexвыдаст предупреждение, если он будет использован with polyglossiaснова:https://github.com/plk/biblatex/issues/845.


Полная американская схема пунктуации для цитирования включается только при biblatexобнаружении американского английского ( american), а не при общем английском ( english), который в остальном идентичен американскому английскому. С polyglossiaмы всегда обнаруживаем только english, поэтому американская схема пунктуации не включается. (Просто для ясности: перемещение знаков препинания вокруг кавычек, производимых biblatexв библиографии, контролируется исключительно biblatexи его командами \uspunctuationи \stdpunctuation. csquotes' autopunctопция не имеет в этом никакого значения.)

Следующая строка включит правила кавычек и пунктуации США даже с обычным текстомenglish

\DefineBibliographyExtras{english}{\uspunctuation}

В качестве альтернативы вы можете сопоставить englishс americanпомощью

\DeclareLanguageMapping{english}{american}

но обратите внимание, что это явно не рекомендуется в biblatexдокументации. Преимущество этого подхода над конкретным \DefineBibliographyExtras{english}{\uspunctuation}было бы в том, что он автоматически копировал бывсенастроек americans englishи не только \uspunctuation.

\documentclass{article}

\newif\ifusepolyglossia
\usepolyglossiatrue
%\usepolyglossiafalse
\ifusepolyglossia
  \usepackage{polyglossia}
  \setdefaultlanguage[variant=usmax]{english}
\else
 \usepackage[american]{babel}
\fi
\usepackage[autopunct]{csquotes}
\usepackage[backend=biber]{biblatex}

\DefineBibliographyExtras{english}{\uspunctuation}

\addbibresource{biblatex-examples.bib}

\begin{document}
\cite{sigfridsson}

\printbibliography
\end{document}

Эмма Сигфридссон и Ульф Райд. «Сравнение методов получения атомных зарядов из электростатического потенциала и моментов». В: Журнал вычислительной химии 19.4 (1998), стр. 377–395. doi: 10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P.

Сопутствующий вопрос обсуждается вBiblatex-Chicago и неамериканский стиль цитирования?.Локализованная дата с библатексом и полиглоссией,\DeclareLanguageMappingSuffix, наследование и полиглоссия в biblatexиКак заставить языковые варианты Polyglossia работать с библиографиями Biblatex?решать проблемы совместимости между biblatexи polyglossia.


Некоторое время назад я бы однозначно рекомендовал отказаться от него polyglossia, babelесли это вообще возможно, так как babelон активно (снова) развивается и polyglossiaв значительной степени, казалось, бездействует. На практике babelработает так же хорошо (если не лучше) polyglossiaдля большинства (западно) европейских языков, но babelтакже добивается прогресса в областях, где polyglossiaбыл традиционно сильнее (иврит, арабский, ...). СмотритеВыберите между Polyglossia и Babel для LuaLaTeX в 2019 году. Совсем недавно произошли некоторые изменения вpolyglossiaСтраница GitHub, так что, возможно, проект снова набирает обороты. (Кстати, я думаю, что сообщество LaTeX выиграло бы, если бы эти два проекта были объединены в какой-то форме, а не продолжали бы разрабатываться независимо с похожей целью. Взлеты и падения в ходе разработки просто сбивают людей с толку относительно того, какой пакет выбрать.)

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