我正在使用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}
命令。
但即使如此,我仍然面临两个问题:
- 书目中缺少年份字段(仅限乌克兰语书籍,英语也可以)。
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.lbx
从https://github.com/plk/biblatex/commits/dev/tex/latex/biblatex/lbx/ukrainian.lbx尝试使用较旧的版本,看看是否适合您。由于您的系统太旧,日期处理方式在不久前就已更改,因此文件可能与您的旧系统不兼容,因此这种情况不太可能发生。
ukrainin.lbx
因此,你最后的办法是为你的过时的系统编写自己的代码。采用english.lbx
,german.lbx
或者russian.lbx
(你需要精确的版本,以便我们确保文件兼容,通常您可以使用kpsewhich russian.lbx
) 作为基础找到它们并根据需要进行修改。