Biblatex | 参考书目列表不打印年份

Biblatex | 参考书目列表不打印年份

我正在用 LaTeX 撰写我的最终项目报告,并使用 XeTeX 来编译我的文件,因为所有报告都是希伯来语的。

问题是当我尝试打印参考书目(使用 BibLaTeX,以 BibTeX 作为后端)时,整个参考书目列表不包含年份字段。

一个例子

例如,您可以看到,在第一个参考文献中,第一行中名字 Geoff 后面是空括号,而不是带有参考年份的括号。

编译器:XeTeX 同时使用:BiDi、BibLaTeX、BibTeX 在 Windows 10 上运行,使用 TeXStudio。

注意:参考书目本身是英文的(在 LTR 环境中),但整个报告是希伯来语的)

文档.tex

    \documentclass{report}

% Add XeTeX Packages support for hebrew
\usepackage{polyglossia}
\usepackage{fontspec}
\usepackage{bidi}

% Set BibTeX
\usepackage[backend=bibtex,bibstyle=numeric]{biblatex}
\addbibresource{sources}

% Fonts Support
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\newfontfamily\hebrewfont[Script=Hebrew]{David}
\let\hebrewfonttt\ttfamily
\setmainfont{David}
\setmonofont{David}
\setsansfont{David}

\title{מסמך בדיקה}
\author{יוצר בדיקה}

\begin{document}
    \maketitle

    \tableofcontents


    % Some Text
    \chapter{בדיקה ראשונה}

    שלום עולם, מה שלום כולם ?
    \nocite{*}


    % References' List
        \begin{LTR}
            \begin{sloppypar}
                \printbibliography[title=Bibliography]
            \end{sloppypar}
        \end{LTR}
\end{document}

资料来源

@inproceedings{domingos2000mining,
  title={Mining high-speed data streams},
  author={Domingos, Pedro and Hulten, Geoff},
  booktitle={Proceedings of the sixth ACM SIGKDD international conference on Knowledge discovery and data mining},
  pages={71--80},
  year={2000},
  organization={ACM}
}

@article{garcia2010pattern,
    title={Pattern classification with missing data: a review},
    author={Garc{\'\i}a-Laencina, Pedro J and Sancho-G{\'o}mez, Jos{\'e}-Luis and Figueiras-Vidal, An{\'\i}bal R},
    journal={Neural Computing and Applications},
    volume={19},
    number={2},
    pages={263--282},
    year={2010},
    publisher={Springer}
}

答案1

这可行,但我几乎肯定这不是实现该目标的方法。

\setmainfont\setsansfont并且\setmonofont需要指定英语字体,因为\normalfontlatin依赖于主文档字体是拉丁文字(Polyglossia 手册,6)。

\newfontfamily\hebrewfont[Script=Hebrew]{Noto Sans Hebrew}
\newfontfamily\hebrewfontsf[Script=Hebrew]{Noto Sans Hebrew}
\newfontfamily\hebrewfonttt[Script=Hebrew]{Noto Sans Hebrew}
\newfontfamily\englishfont[Ligatures=TeX]{Latin Modern Roman}
\setmainfont{Latin Modern Roman}
\setmonofont{Latin Modern Mono}
\setsansfont{Latin Modern Sans}

当然,如果您对英语和希伯来语使用同一种字体,那么这可能就没那么重要了。

您需要将参考书目的语言切换为英语。这对于条目来说相当容易 - 只需添加language=english到 Biblatex 的选项中即可。

\usepackage[backend=biber,bibstyle=numeric,language=english,autolang=langname]{biblatex}

但是如果您想要使用英文,您还需要确保章节标题也经过同样的处理。

\printbibliography[title={\textenglish{Bibliography}}]

我还使用以下方法将周围文档的语言切换为英语

\begin{english}
  ...
\end{english}

然而,我遇到的最大麻烦是参考书目中的数字标签,默认情况下这些标签是从希伯来语字体中获取的。在我的计算机上,这意味着它们只是方框。为了确保参考书目的字体一致,我添加了

\renewcommand\bibfont{\normalfontlatin}

这就是为什么它的表现是否符合预期如此重要。

我还将标准 TeX 连字添加到拉丁字体设置中,因为参考书目使用了诸如“”之类的东西,否则它将无法工作。

最后一个问题是,\MakeUppercase当你将语言切换为英语时, 就没有定义。我猜这是某个东西(多语?)的一个错误。无论如何,为了解决这个问题,我创建了一个新命令来恢复默认定义

\newcommand*\restoreuppercase{%
  \DeclareRobustCommand{\MakeUppercase}[1]{{% from base/latex.ltx
      \def\i{I}\def\j{J}%
      \def\reserved@a####1####2{\let####1####2\reserved@a}%
      \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
      \protected@edef\reserved@a{\uppercase{##1}}%
      \reserved@a
    }%
  }%
  \protected@edef\MakeUppercase##1{\MakeUppercase{##1}}%
}

\restoreuppercase并在启动english环境之后、执行之前添加\printbibliography

结果:

希伯来语文档中的英语书目

完整代码:

\begin{filecontents*}{\jobname.bib}
@inproceedings{domingos2000mining,
  title={Mining high-speed data streams},
  author={Domingos, Pedro and Hulten, Geoff},
  booktitle={Proceedings of the sixth ACM SIGKDD international conference on Knowledge discovery and data mining},
  pages={71--80},
  year={2000},
  organization={ACM}
}

@article{garcia2010pattern,
    title={Pattern classification with missing data: a review},
    author={Garc{\'\i}a-Laencina, Pedro J and Sancho-G{\'o}mez, Jos{\'e}-Luis and Figueiras-Vidal, An{\'\i}bal R},
    journal={Neural Computing and Applications},
    volume={19},
    number={2},
    pages={263--282},
    year={2010},
    publisher={Springer}
}
\end{filecontents*}
\documentclass{report}
% % Add XeTeX Packages support for hebrew
\usepackage{polyglossia}% will load fontspec and bidi automatically
% % Set BibTeX
\usepackage[backend=biber,bibstyle=numeric,language=english,autolang=langname]{biblatex}
\addbibresource{\jobname.bib}
% % Font Support
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\newfontfamily\hebrewfont[Script=Hebrew]{Noto Sans Hebrew}
\newfontfamily\hebrewfontsf[Script=Hebrew]{Noto Sans Hebrew}
\newfontfamily\hebrewfonttt[Script=Hebrew]{Noto Sans Hebrew}
\newfontfamily\englishfont[Ligatures=TeX]{Latin Modern Roman}
\setmainfont{Latin Modern Roman}
\setmonofont{Latin Modern Mono}
\setsansfont{Latin Modern Sans}
\renewcommand\bibfont{\normalfontlatin}
\makeatletter
\newcommand*\restoreuppercase{%
  \DeclareRobustCommand{\MakeUppercase}[1]{{% from base/latex.ltx
      \def\i{I}\def\j{J}%
      \def\reserved@a####1####2{\let####1####2\reserved@a}%
      \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
      \protected@edef\reserved@a{\uppercase{##1}}%
      \reserved@a
    }%
  }%
  \protected@edef\MakeUppercase##1{\MakeUppercase{##1}}%
}
\makeatother
\title{מסמך בדיקה}
\author{יוצר בדיקה}

\begin{document}
\maketitle
\tableofcontents
% Some Text
\chapter{בדיקה ראשונה}
שלום עולם, מה שלום כולם ?
\nocite{*}

% References' List
\begin{english}
  \restoreuppercase
  \printbibliography[title={\textenglish{Bibliography}}]
\end{english}
\end{document}

我使用了 Biber,但如果您真的不想使用 Biber,那么这可能与 BibTeX 作为后端一起工作。

相关内容