biber 进食 \langle 和 \rangle 命令

biber 进食 \langle 和 \rangle 命令

我的参考列表中有一些条目,其标题包含\langle\rangle符号,类似于以下 MWE 中的条目:

\begin{filecontents}{\jobname.bib}
@BOOK{test,
author = {A. Uthor},
title = {A title with some $\langle \Psi \rangle $ stuff},
year = {2014},
publisher = {A Company}
}
\end{filecontents}

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[backend=biber]{biblatex}
\addbibresource{\jobname.bib}

\begin{document}
    \nocite{*}
    \printbibliography
\end{document}

如果我处理这个 MWEpdflatex并且输出中缺少 s 和 s 并且 `pdflatex 日志biber文件\langle\rangle

包 inputenc 错误:Unicode 字符 \u8:⟨ 未设置为用于 LaTeX。

包 inputenc 错误:Unicode 字符 \u8:⟩ 未设置为用于 LaTeX。

在此处输入图片描述

我已经尝试过Revtex - 在脚注中使用数学没有任何成功。查看.bblbiber 生成的文件时发现,标题字段如下所示:

\field{title}{A title with some $⟨\Psi ⟩$ stuff}

因此显然 biber 本身已经分别用和替换了\langle\rangle命令,但这些命令与 不兼容。inputenc

根据biblatex手册,我可以设置safeinputenc包选项,指示biber尝试将所有 utf8 编码的内容转换为 ASCII。这可以解决上述问题,但它也会给我带来其他条目的新麻烦,因为一些转换biber 尝试导致错误的结果。

那么是否存在我没​​有看到的第三种方法,或者我可能遇到了错误,biber因为它的转换错误的?

答案1

我不确定这是否适用于所有情况 - 但对我使用的情况和上述情况确实有效。来自biber帮助页面:

--decodecharsset=[recode set name]
    The set of characters included in the conversion routine when
    decoding LaTeX macros into UTF-8 (which happens when
    --bblencoding|-E is set to UTF-8). Set to "full" to try harder with
    a much larger set or "base" to use a smaller basic set. Default is
    "base". You may want to try "full" if you have less common UTF-8
    characters in your data source. The recode sets are defined in the
    reencoding data file which can be customised. See the --recodedata
    option and the PDF manual.

然而,我不知道为什么这在这种情况下有效,但如果你运行

biber --decodecharsset=full <main[.bcf]>

而不是写作

\field{labeltitle}{A title with some $⟨\Psi ⟩$ stuff}
\field{title}{A title with some $⟨\Psi ⟩$ stuff}

它将main.bbl写入所需的

\field{labeltitle}{A title with some $\langle \Psi \rangle$ stuff}
\field{title}{A title with some $\langle \Psi \rangle$ stuff}

因此 latex 不会抱怨不认识字符。如果数据库中有几个未知字符,这可能会更有用。

答案2

看来 Biber 试图比 LaTeX 更聪明。;-) 也许有一种 BibLaTeX/Biber 方法,但解决方法很容易找到。我们只是定义inputenc不知道的字符。

\begin{filecontents}{\jobname.bib}
@BOOK{test,
  author = {A. Uthor},
  title = {A title with some $\langle \Psi \rangle $ stuff},
  year = {2014},
  publisher = {A Company},
}
\end{filecontents}

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{newunicodechar}
\newunicodechar{⟨}{\langle}
\newunicodechar{⟩}{\rangle}

\usepackage[backend=biber]{biblatex}
\addbibresource{\jobname.bib}

\begin{document}
    \nocite{*}
    \printbibliography
\end{document}

在此处输入图片描述

相关内容