![biblatex 处理 \guillemotleft、\guillemotright](https://linux22.com/image/358800/biblatex%20%E5%A4%84%E7%90%86%20%5Cguillemotleft%E3%80%81%5Cguillemotright.png)
我有几个像这样的 .bib 条目:
@article{Guinet:Torp,
author={Louis Guinet},
title={Les toponymes normands \guillemotleft Torp(s)\guillemotright, \guillemotleft Torpt\guillemotright, \guillemotleft Tourp(s)\guillemotright, \guillemotleft Tour(s)\guillemotright},
journal={Annales de Normandie},
volume=30,
number=2,
pages="193--197",
year=1980,
}
但是 biblatex (或者可能是 biber) 在 .bbl 文件中将它们转换为数学模式:
\field{title}{{Les toponymes normands {$\guillemotleft$}Torp(s){$\guillemotright$}, {$\guillemotleft$}Torpt{$\guillemotright$}, {$\guillemotleft$}Tourp(s){$\guillemotright$}, {$\guillemotleft$}Tour(s){$\guillemotright$}}}
这是无效的,会导致输出错误的字符。我该如何修复这个问题?
梅威瑟:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[backend=biber]{biblatex}
\bibliography{place_names}
\begin{document}
\cite{Guinet:Torp}
\printbibliography
\end{document}
这使:
LaTeX 警告:命令 \guillemotleft 在输入行 7 的数学模式中无效。LaTeX 警告:命令 \guillemotright 在输入行 7 的数学模式中无效。!未定义的控制序列。...{$\guillemotright $},\guillemotlef \t {T}orpt{$\guillemotrigh...
它曾经在早期版本的 TexLive 上运行(我现在正在使用 Ubuntu 16 附带的版本)。
答案1
PLK 已修复该问题(https://github.com/plk/biber/issues/175) 在开发版本 Biber 2.8 中。s\guillemot
不再转换为数学模式。
另一个可能的解决方法是使用 UTF-8 编码,将海鸠转换成各自的 Unicode 字符。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[british]{babel}
\usepackage[style=authoryear]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{Guinet:Torp,
author={Louis Guinet},
title={Les toponymes normands \guillemotleft Torp(s)\guillemotright, \guillemotleft Torpt\guillemotright, \guillemotleft Tourp(s)\guillemotright, \guillemotleft Tour(s)\guillemotright},
journal={Annales de Normandie},
volume=30,
number=2,
pages="193--197",
year=1980,
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Les toponymes normands \guillemotleft Torp(s)\guillemotright, \guillemotleft Torpt\guillemotright, \guillemotleft Tourp(s)\guillemotright, \guillemotleft Tour(s)\guillemotright
\cite{Guinet:Torp}
\printbibliography
\end{document}
但我们在评论中指出,这会给你的ī
s 带来麻烦,请参阅从 Biber 1.9 升级到 Biber 2.1 后出现输入编码错误。
你可以ī
用以下方法修复这个问题
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite]{
\step[fieldsource=title,
match=\regexp{\x{0131}\x{0304}},
replace=\regexp{ī}]
}
}
}
答案2
即使在 Biber 2.7 (beta) 版的数学模式下,这些也能正常工作:
\usepackage{csquotes}
其次是
\flqq
代替\guillemotleft
和
\frqq
代替\guillemotright