Что я получаю:
A. Автор, «Какое-то название статьи ?». Какой-то журнал.
Б. Бутор, «Un article ?». Другой журнал.
Что бы я хотел:
А. Автор, «Какое-то название статьи?». Какой-то журнал.
Б. Бутор, «Un article ?». Другой журнал.
И расстановка переносов, конечно же, должна зависеть от языка. ;)
autolang=other
это не вариант, так как это приведет к переводу некоторых других частей библиографии, которые я не хочу затрагивать.
Я наткнулся наBibLaTeX langid с autolang=hyphen заставляет csquotes использовать локализованные кавычкии старое поведение в основном соответствует тому, что мне нужно (с небольшим замечанием, что я не знаю, как оно вело себя в отношении знаков препинания, таких как вопросительные знаки выше).
МНВЭ:
\documentclass{scrartcl}
\usepackage[british,french]{babel}
\usepackage[autostyle=true]{csquotes}
\usepackage[autolang=hyphen]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{eng,
author = {Author, A.},
title = {Some article title?},
journal = {Whatever Journal},
year = {2019},
langid = {british},
}
@article{fra,
author = {Buthor, B.},
title = {Un article ?},
journal = {Another Journal},
year = {2019},
langid = {french},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
решение1
Вы можете попробовать следующее.
Замечание по поводу знаков препинания. В вашем примере их два типа:
Знаки препинания в полях, например, вопросительный знак в заголовке:
{Some article title?}
,Знаки препинания, созданные макросами из biblatex, например, двоеточие после
In:
.
Первый тип трудно адаптировать к языку с pdflatex, так как catcodes уже заморожены. С lualatex это работает.
\documentclass{scrartcl}
\usepackage{ifluatex}
\ifluatex\else
\usepackage[T1]{fontenc} %with pdflatex
\fi
\usepackage[british,french]{babel}
\usepackage[autostyle=true]{csquotes}
\usepackage[autolang=hyphen]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{eng,
author = {Author, A.},
title = {Some article title?},
journal = {Whatever Journal},
year = {2019},
langid = {british},
editor={D. Editor}
}
@article{fra,
author = {Buthor, B.},
title = {Un article?},
journal = {Another Journal},
year = {2019},
langid = {french},
editor={D. Editor}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\makeatletter
\def\blx@hook@initlang{%
\csq@reset=0 \csq@setstyle{\abx@field@langid}%
%optional for the colon after "In":
\ifdefstring{\abx@field@langid}{french}{}
{\def\FDP@colonspace{}%
\def\FDP@thinspace{}}%
}
\makeatletter
\begin{document}
\nocite{*}
\printbibliography
\end{document}
Вывод с lualatex:
Вывод с помощью pdflatex
решение2
Использование autolang=other
(и загрузка T1
кодировки шрифта) решает эту задачу:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[british,french]{babel}
\usepackage[autostyle=true]{csquotes}
\usepackage[autolang=other]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{eng,
author = {Author, A.},
title = {Some article title?},
journal = {Whatever Journal},
year = {2019},
langid = {british},
}
@article{fra,
author = {Buthor, B.},
title = {Un article ?},
journal = {Another Journal},
year = {2019},
langid = {french},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}