我得到什麼:
A. 作者,《某些文章標題? »。不管什麼雜誌。
B. Buthor,《一篇文章? »。另一本雜誌。
我想要什麼:
A. 作者,「某個文章標題?」。不管什麼雜誌。
B. Buthor,《一篇文章? »。另一本雜誌。
當然,連字符應該取決於語言。 ;)
autolang=other
不是一個選項,因為它會翻譯我不希望受到影響的參考書目的其他部分。
我偶然發現BibLaTeX langid 與 autolang=hyphen 使 csquotes 使用本地化引號舊的行為主要是我想要的(小一點是我不知道它如何處理像上面問號這樣的標點符號)。
MNWE:
\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}