使 hyperref 的 \autoref 输出为保加利亚语

使 hyperref 的 \autoref 输出为保加利亚语

我尝试将其用作hyperref参考,但默认情况下它会以英文输出,如“第 2 章”。根据Hyperref 忽略 polyglossia 中的 \setdefaultlanguage, 正在做

\usepackage[bulgarian]{hyperref}

应该可以解决问题,但这给了我一个神秘的错误:

! Package xkeyval Error: `bulgarian' undefined in families `Hyp'.

See the xkeyval package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.4319 \ProcessKeyvalOptions{Hyp}

请注意,它适用于german。这是我的样式:

\ProvidesPackage{style}

\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{DejaVu Serif}
\setsansfont[Ligatures=TeX]{DejaVu Sans}
\setmonofont[Ligatures=TeX]{DejaVu Sans Mono}
% \newfontfamily{\TelSubstFont}[Ligatures=TeX]{Cantarell}

\usepackage{polyglossia}
\setmainlanguage{bulgarian}
\setdefaultlanguage{bulgarian}

\usepackage{minted}

\usepackage[bulgarian]{hyperref}
\hypersetup{pdflang=bg}

\usepackage[numbers]{natbib}

PS 我对 LaTeX 还不熟悉,使用 XeLaTeX 来编译文档。

答案1

由于保加利亚语尚不受支持,您可以hyperref通过自己定义所需的关键字来说服它合作:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{FreeSerif}

\usepackage{polyglossia}
\setmainlanguage{bulgarian}
\setotherlanguage{english}

\usepackage{hyperref}

\makeatletter
\ifdefined\HyLang@bulgarian\else
\appto\blockextras@bulgarian{%
  \def\equationautorefname{Equation}%
  \def\footnoteautorefname{footnote}%
  \def\itemautorefname{item}%
  \def\figureautorefname{Figure}%
  \def\tableautorefname{Таблица}%
  \def\partautorefname{Part}%
  \def\appendixautorefname{Appendix}%
  \def\chapterautorefname{chapter}%
  \def\sectionautorefname{section}%
  \def\subsectionautorefname{subsection}%
  \def\subsubsectionautorefname{subsubsection}%
  \def\paragraphautorefname{paragraph}%
  \def\subparagraphautorefname{subparagraph}%
  \def\FancyVerbLineautorefname{line}%
  \def\theoremautorefname{Theorem}%
  \def\pageautorefname{page}%
}
% \inlineextras@bulgarian is empty, so we simply set it
% equal to \blockextras@bulgarian
\let\inlineextras@bulgarian\blockextras@bulgarian
\fi
\makeatother

\begin{document}
\begin{table}
\caption{A table}\label{A}
\end{table}
\autoref{A}

\end{document}

这里我仅修改了与“Table”对应的英文关键字。结果图:

在此处输入图片描述

包装\ifdefined...\fi器意味着当hyperref支持保加利亚语时,中间的部分将不再被读取。

答案2

包 尚不支持保加利亚语hyperref,因为作为 的维护者hyperref,我不熟悉该语言,而且没有人向我发送\autoref名称的保加利亚语名称。如果有人可以将保加利亚语翻译发送给我,那么我可以将它们添加到。和/或 的hyperref定义可以用作翻译的起点。我更喜欢 中的西里尔字符形的 LaTeX 名称,因为应该适用于许多输入编码和 TeX 编译器。UTF-8 也应该没问题,然后我可以自己尝试转换。\HyLang@english\HyLang@russian\HyLang@russianhyperref

名称\autoref也可以重新定义:

\renewcommand*{\sectionautorefname}{New section name}

hyperref请参阅其中还包含语言包示例的手册babel

保加利亚名字

在...的帮助下谷歌翻译,比较lshort-Englishlshort-保加利亚语以及 gloss-bulgarian.ldf 的多语我管理了下表。(字体设置取自egreg的文件):

\documentclass{article}
\usepackage{fontspec}
\setmainfont{FreeSerif}

\usepackage{polyglossia}
\setmainlanguage{bulgarian}
\setotherlanguage{english}

\begin{document}
\centering
\begin{tabular}{lll}
EN & BG/UTF-8 & source \\
\hline
Equation & уравнение \\
footnote & бележка под линия /  забележка под линия & / lshort \\
item & точка \\
Figure & Фигура / фигура & lshort\\
Table & Таблица / таблица & lshort \\
Part & част \\
Appendix & апендикс / Приложение & / polyglossia \\
chapter & глава & lshort \\
section & Раздел / раздел & lshort \\
subsection & подраздел\\
subsubsection & подраздел / подподраздел ? \\
paragraph & параграф \\
subparagraph & подпараграф ? \\
line & редица \\
Theorem & теорема \\
page & страница / стp.  & lshort\\
\end{tabular}
\end{document}

结果

当然,还有很多可以修改的地方:

  • 哪些名称的第一个字符应为大写字母。如果引用章节、图表、页面等内容,保加利亚语中的惯例是什么?

  • 翻译正确吗?哪一个是最好的版本?

  • 关于什么部分,部分,以及段落?

相关内容