biblatex/biber 乌克兰语本地化中年份和期刊的问题

biblatex/biber 乌克兰语本地化中年份和期刊的问题

我正在使用biblatex-gost包、gost-numeric风格。

\documentclass[12pt,a4paper]{article}
\begin{filecontents}{\jobname.bib}
@book{samoylenko,
    title = {Диференціальні рівняння. Підручник},
    author = {А. М. Самойленко and М. О. Перестюк and І. О. Парасюк},
    location = {К.},
    publisher = {Либідь},
    year = {1994},
    pagetotal = {360},
}
@article{perestyuk,
    author = {Ю. М. Перестюк},
    title = {Розривні коливання в одній імпульсній системі},
    journal = {Нелінійні коливання},
    year = {2012},
    volume = {15},
    number = {4},
    pages = {494--503},
}
@book{hartman,
    langid = {english},
    title = {Ordinary Differential Equations},
    author = {P. Hartman},
    location = {Philadelphia},
    publisher = {Society for Industrial and Applied Mathematics},
    year = {2002},
    pagetotal = {612},
}
\end{filecontents}       
\usepackage[T2A]{fontenc}       
\usepackage[utf8]{inputenc}         
\usepackage[english,ukrainian]{babel} 
\usepackage[backend=biber,bibencoding=utf8,maxbibnames=999,style=gost-numeric,language=auto,autolang=other]{biblatex}
\addbibresource{\jobname.bib}

\DefineBibliographyStrings{ukrainian}{
and = {та},
number = {№},
page = {С\adddot},
pages = {С\adddot},
volume = {Т\addot},
%jourvol = {Т\addot},
}

\toggletrue{bbx:gostbibliography}
\usepackage[autostyle]{csquotes}

\begin{document}

\cite{samoylenko} \cite{perestyuk} \cite{hartman}

\printbibliography

\end{document}

由于没有乌克兰语 biblatex 本地化,因此基于答案,我添加了\DefineBibliographyStrings{ukrainian}命令。

但即使如此,我仍然面临两个问题:

  1. 书目中缺少年份字段(仅限乌克兰语书籍,英语也可以)。
  2. jourvol而不是所需的Т.(仅限于乌克兰语文章)。

我尝试添加jourvol = {Т\addot},但出​​现以下错误:

Undefined control sequence. \abx@sstr@jourvol

已更新两次:以下是仅显示问题 1(缺少年份字段)的 MWE。当语言设置为英语时,一切正常:

\documentclass[12pt,a4paper]{article}
\begin{filecontents}{\jobname.bib}
@book{samoylenko,
    title = {Диференціальні рівняння. Підручник},
    author = {А. М. Самойленко and М. О. Перестюк and І. О. Парасюк},
    location = {К.},
    publisher = {Либідь},
    year = {1994},
    pagetotal = {360},
}
\end{filecontents}       
\usepackage[T2A]{fontenc}       
\usepackage[utf8]{inputenc}         
\usepackage[english]{babel} 
\usepackage[backend=biber,bibencoding=utf8,maxbibnames=999,style=gost-numeric]{biblatex}
\addbibresource{\jobname.bib}

\toggletrue{bbx:gostbibliography}
\usepackage[autostyle]{csquotes}

\begin{document}

This was studied in \cite{samoylenko}.

\printbibliography

\end{document}

在此处输入图片描述

但我需要360 с.而不是360 pp.。所以我添加了乌克兰语\usepackage[english,ukrainian]{babel}。由于我的pdflatex有点过时, 中不包含文件ukrainian.lbx。所以我手动创建了一个空内容。现在我得到了

在此处输入图片描述

pages可以使用\DefineBibliographyStrings{ukrainian}命令翻译单词。但是年份1994已经消失了。

答案1

正如您所说,您的系统已经过时并且没有附带ukrainian.lbx(该文件自 3.8a 版本起可用biblatex)。

如果您只是创建一个空文件,那么ukrainian.lbx您将不会获得参考书目字符串(pages这是一个例子 - 它以粗体显示,表示缺少定义),但您也不会获得所谓的参考书目附加内容。除其他外,参考书目附加内容定义了日期格式。如果文件不包含日期定义,在某些情况下,日期可能会被默默吞掉,并且不会被打印。

理想情况下,你应该将过时的 TeX 系统更新为 TeX live 2018。在这种情况下,乌克兰语可以立即使用,一切都应该没问题。如果你不能这样做,或者你不想这样做,因为你快要到最后期限了,你必须找到一个解决办法。

您可以尝试ukrainian.lbxhttps://github.com/plk/biblatex/commits/dev/tex/latex/biblatex/lbx/ukrainian.lbx尝试使用较旧的版本,看看是否适合您。由于您的系统太旧,日期处理方式在不久前就已更改,因此文件可能与您的旧系统不兼容,因此这种情况不太可能发生。

ukrainin.lbx因此,你最后的办法是为你的过时的系统编写自己的代码。采用english.lbxgerman.lbx或者russian.lbx(你需要精确的版本,以便我们确保文件兼容,通常您可以使用kpsewhich russian.lbx) 作为基础找到它们并根据需要进行修改。

相关内容