biblatex 处理 \guillemotleft、\guillemotright

biblatex 处理 \guillemotleft、\guillemotright

我有几个像这样的 .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

相关内容