![Комбинация полиглоссии + библатекса + csquotes, игнорирующая настройку автопункта](https://rvso.com/image/399808/%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%86%D0%B8%D1%8F%20%D0%BF%D0%BE%D0%BB%D0%B8%D0%B3%D0%BB%D0%BE%D1%81%D1%81%D0%B8%D0%B8%20%2B%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B0%D1%82%D0%B5%D0%BA%D1%81%D0%B0%20%2B%20csquotes%2C%20%D0%B8%D0%B3%D0%BD%D0%BE%D1%80%D0%B8%D1%80%D1%83%D1%8E%D1%89%D0%B0%D1%8F%20%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D1%83%20%D0%B0%D0%B2%D1%82%D0%BE%D0%BF%D1%83%D0%BD%D0%BA%D1%82%D0%B0.png)
У меня возникли проблемы с получением 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 version
of 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}
было бы в том, что он автоматически копировал бывсенастроек american
s 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}
Сопутствующий вопрос обсуждается вBiblatex-Chicago и неамериканский стиль цитирования?.Локализованная дата с библатексом и полиглоссией,\DeclareLanguageMappingSuffix, наследование и полиглоссия в biblatexиКак заставить языковые варианты Polyglossia работать с библиографиями Biblatex?решать проблемы совместимости между biblatex
и polyglossia
.
Некоторое время назад я бы однозначно рекомендовал отказаться от него polyglossia
, babel
если это вообще возможно, так как babel
он активно (снова) развивается и polyglossia
в значительной степени, казалось, бездействует. На практике babel
работает так же хорошо (если не лучше) polyglossia
для большинства (западно) европейских языков, но babel
также добивается прогресса в областях, где polyglossia
был традиционно сильнее (иврит, арабский, ...). СмотритеВыберите между Polyglossia и Babel для LuaLaTeX в 2019 году. Совсем недавно произошли некоторые изменения вpolyglossia
Страница GitHub, так что, возможно, проект снова набирает обороты. (Кстати, я думаю, что сообщество LaTeX выиграло бы, если бы эти два проекта были объединены в какой-то форме, а не продолжали бы разрабатываться независимо с похожей целью. Взлеты и падения в ходе разработки просто сбивают людей с толку относительно того, какой пакет выбрать.)