未定义的控制序列 \bbljan

未定义的控制序列 \bbljan

我正在为俄语文章写参考书目。使用\bibliographystyle{plain}不是一个选项,因为它在列出作者时使用例如连词“and”。所以我坚持使用\bibliographystyle{ugost2008},但它一直抱怨\bbljan未定义。我认为\bbljan应该将英语扩展为“January”,将俄语扩展为“Январь”。但我babel显然对此一无所知\bbljan。我目前正在使用

\def\bbljan{Январь}

但这不是很糟糕吗?我该怎么办?

答案1

\bbljan设置在 中merlin.mbs,这是使用系统创建 BibTeX 样式的主文件custom-bib。因此,您\bbljan主要在.bst以此方式创建的文件中找到。据推测,的作者ugost2008使用了custom-bib但随后删除了设置\bbljan(的部分。ETC。) 出于某种原因。解决方法是自己定义这些,就像您所做的那样,但理想情况下.bst应该修复文件以正确定义宏或根本不使用它们。

答案2

我的序言包含以下定义

\usepackage{hyperref}
\usepackage{polyglossia}
\bibliographystyle{ugost2008ns}
\usepackage[numbers,square]{natbib}
\newfontfamily\russianfont{Times New Roman}
\setmainfont{Times New Roman}

\bbljan我对、、\bblfeb...函数也遇到同样的问题。

首先,我做了一些重写ugost2008ns,位于/usr/share/texlive/texmf-dist/bibtex/bst/gost/ugost2008ns.bst

我将所有\bbl*函数替换为另一个可立即执行的函数ugost2008ns

MACRO {jan} {"jan"}
MACRO {feb} {"feb"}
MACRO {mar} {"mar"}
MACRO {apr} {"apr"}
MACRO {may} {"may"}
MACRO {jun} {"jun"}
MACRO {jul} {"jul"}
MACRO {aug} {"aug"}
MACRO {sep} {"sep"}
MACRO {oct} {"oct"}
MACRO {nov} {"nov"}
MACRO {dec} {"dec"}

format.date这是实现这些的新功能\bbl*

FUNCTION {format.date}
{ year empty$
    { month empty$
        { "" }
        { "there's a month but no year in " cite$ * warning$
          month
        }
      if$}
    { curlanguage "russian" =
         { month empty$
            { year }
            { month "jan" =
                { year "\cyrya\cyrn\cyrv." }
            { month "feb" =
                { year "\cyrf\cyre\cyrv\cyrr." }
            { month "mar" =
                { year "\cyrm\cyra\cyrr\cyrt" }
            { month "apr" =
                { year "\cyra\cyrp\cyrr." }
            { month "may" =
                { year "\cyrm\cyra\cyrishrt" }
            { month "jun" =
                { year "\cyri\cyryu\cyrn\cyrsftsn" }
            { month "jul" =
                { year "\cyri\cyryu\cyrl\cyrsftsn" }
            { month "aug" =
                { year \cyra\cyrv\cyrg\. }
            { month "sep" =
                { year "\cyrs\cyre\cyn\cyrt." }
            { month "oct" =
                { year "\cyro\cyrk\cyrt." }
            { month "nov" =
                { year "\cyrn\cyro\cyrya\cyrb." }
            { month "dec" =
                { year "\cyrd\cyre\cyrk." }
            { year "Nomember" }
            if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
         { month empty$
            { year }
            { month "jan" =
               { year "Jan." }
            { month "feb" =
               { year "Feb." }
            { month "mar" =
               { year "Mar." }
            { month "apr" =
               { year "Apr." }
            { month "may" =
               { year "May" }
            { month "jun" =
               { year "June" }
            { month "jul" =
               { year "July" }
            { month "aug" =
               { year "Aug." }
            { month "sep" =
               { year "Sept." }
            { month "oct" =
               { year "Oct" }
            { month "nov" =
               { year "Nov." }
            { month "dec" =
               { year "Dec." }
            { year "Nomember" }
            if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
         if$}
    if$}
  extra.label * % new in v.1.2
}

按照GOST 7.12-93和完成的月份缩写GOST 7.11-2004 (ISO 832:1994)

此后,我收到新的错误 - “命令\cyra, \cyrb, ... 在编码 EU1 中不可用”。此问题由软件包引起hyperref。为了解决此问题,我将下一个代码放在 之前\begin{document}

\newcommand{\cyr}[0]{}
\renewcommand{\cyra}[0]{а}
\renewcommand{\cyrb}[0]{б}
\renewcommand{\cyrv}[0]{в}
\renewcommand{\cyrg}[0]{г}
\renewcommand{\cyrd}[0]{д}
\renewcommand{\cyre}[0]{е}
\renewcommand{\cyryo}[0]{ё}
\renewcommand{\cyrzh}[0]{ж}
\renewcommand{\cyrz}[0]{з}
\renewcommand{\cyri}[0]{и}
\renewcommand{\cyrishrt}[0]{й}
\renewcommand{\cyrk}[0]{к}
\renewcommand{\cyrl}[0]{л}
\renewcommand{\cyrm}[0]{м}
\renewcommand{\cyrn}[0]{н}
\renewcommand{\cyro}[0]{о}
\renewcommand{\cyrp}[0]{п}
\renewcommand{\cyrr}[0]{р}
\renewcommand{\cyrs}[0]{с}
\renewcommand{\cyrt}[0]{т}
\renewcommand{\cyru}[0]{у}
\renewcommand{\cyrf}[0]{ф}
\renewcommand{\cyrh}[0]{х}
\renewcommand{\cyrc}[0]{ц}
\renewcommand{\cyrch}[0]{ч}
\renewcommand{\cyrsh}[0]{ш}
\renewcommand{\cyrshch}[0]{щ}
\renewcommand{\cyrsftsn}[0]{ь}
\renewcommand{\cyrery}[0]{ы}
\renewcommand{\cyrhrdsn}[0]{ъ}
\renewcommand{\cyrerev}[0]{э}
\renewcommand{\cyryu}[0]{ю}
\renewcommand{\cyrya}[0]{я}

\renewcommand{\CYRA}[0]{А}
\renewcommand{\CYRB}[0]{Б}
\renewcommand{\CYRV}[0]{В}
\renewcommand{\CYRG}[0]{Г}
\renewcommand{\CYRD}[0]{Д}
\renewcommand{\CYRE}[0]{Е}
\renewcommand{\CYRYO}[0]{Ё}
\renewcommand{\CYRZH}[0]{Ж}
\renewcommand{\CYRZ}[0]{З}
\renewcommand{\CYRI}[0]{И}
\renewcommand{\CYRY}[0]{Й}
\renewcommand{\CYRK}[0]{К}
\renewcommand{\CYRL}[0]{Л}
\renewcommand{\CYRM}[0]{М}
\renewcommand{\CYRN}[0]{Н}
\renewcommand{\CYRO}[0]{О}
\renewcommand{\CYRP}[0]{П}
\renewcommand{\CYRR}[0]{Р}
\renewcommand{\CYRS}[0]{С}
\renewcommand{\CYRT}[0]{Т}
\renewcommand{\CYRU}[0]{У}
\renewcommand{\CYRF}[0]{Ф}
\renewcommand{\CYRH}[0]{Х}
\renewcommand{\CYRC}[0]{Ц}
\renewcommand{\CYRCH}[0]{Ч}
\renewcommand{\CYRSH}[0]{Ш}
\renewcommand{\CYRSHCH}[0]{Щ}
\renewcommand{\CYRSFTSN}[0]{Ь}
\renewcommand{\CYRERY}[0]{Ы}
\renewcommand{\CYRHRDSN}[0]{Ъ}
\renewcommand{\CYREREV}[0]{Э}
\renewcommand{\CYRYU}[0]{Ю}
\renewcommand{\CYRYA}[0]{Я}

我使用:linux、kile、XeLaTeX 进行编译,并使用 Zotero 导入 BiBtex(也被我破解了,因为它不提供原生的俄语支持)。

也许这可以进行优化或变得更容易,但我使用这些东西还不到一个月。

希望这有帮助。

相关内容