在 Cref 中定义新语言

在 Cref 中定义新语言

我正在准备一份主要语言为阿拉伯语的文档,我正在使用 babel+Lualatex,我遵循了为非英语语言重新定义 \cref

但是,它给出了一个错误,提示“未知选项阿拉伯语”,有没有办法为 Clever ref 和 Varioref ref 定义一种新语言?这是 MWE:

\documentclass[a4paper,12pt,twoside]{book}
\usepackage[a4paper,top=2.5cm,bottom=2.5cm,margin=2.5cm,bindingoffset=0.5cm]{geometry} % Set paper layout
%======================================================================================================
%Babel Package Settings%
%======================================================================================================
\usepackage[bidi=basic,layout=lists.tabular]{babel}
\babelprovide[import=ar,mapdigits,main]{arabic}
\babelprovide[import=en,language=Default]{english}
\babelfont{rm}{Latin Modern Roman}
\babelfont[arabic]{rm}{Simplified Arabic}

\usepackage [arabic]{varioref} %  add "on the preceding page", "on the following page", or on the page number to a reference

\usepackage[arabic,english]{cleveref}
%==================================================
%Start actual document %
%===================================================
\title{jhhjjhhj}
\author{}
\date{}

\begin{document}
\chapter{سييسسيبيسب}
بلبيللبيبلبي
\section{بيسيبلبيبلبيل}\label{بندددد}
البند رقم
\ref{بندددد} 
صفحة
\pageref{بندددد}
البند
~\vref{بندددد}

ب
\cref{بندددد}

\end{document}

答案1

varioref语言由(和)通过定义的选项支持cleveref。未以这种方式设置的语言不能作为包的“选项”提供,尽管您仍然可以在文档的序言中设置它们。

如果有人为我提供正确的文本字符串,我可以在包中添加“阿拉伯语”选项,即我需要将以下定义中的文本替换为阿拉伯语单词:

\DeclareOption{arabic}
  {\vref@addto\extrasarabic{%
    \def\reftextfaceafter {on the \reftextvario{facing}{next} page}%
    \def\reftextfacebefore{on the \reftextvario{facing}{preceding}
                           page}%
    \def\reftextafter     {on the \reftextvario{following}{next} page}%
    \def\reftextbefore    {on the \reftextvario{preceding}{previous} page}%
    \def\reftextcurrent   {on \reftextvario{this}{the current} page}%
    \def\reftextfaraway#1{on page~\pageref{#1}}%
    \def\reftextpagerange#1#2{on pages~\pageref{#1}--\pageref{#2}}%
    \def\reftextlabelrange#1#2{\ref{#1} to~\ref{#2}}%
  }}

之后\usepackage[arabic]{varioref}就可以了。

情况cleveref类似,但您需要与该软件包的开发人员沟通,以获得该语言的支持。

测试文档

根据评论的要求,这里有一个测试文档,我认为它适用于所有情况。

\documentclass[twoside]{article}

\usepackage{varioref}

\begin{document}

          \section{A} \label{A1} \section{A2} \label{A2}

\newpage  \section{B} \label{B1} \section{B2} \label{B2}

See \vref{A1} ; See \vref{A2} ; See \vrefrange{A1}{A2} 

See \vref{B1} ; See \vref{B2} ; See \vrefrange{B1}{B2}

Current page: \pageref{B1} ; \pageref{B2}

See \vref{C1} ; See \vref{C2} ; See \vrefrange{C1}{C2} 

See \vref{D1} ; See \vref{D2} ; See \vrefrange{D1}{D2} 

Longer ranges: \vrefrange{A1}{C1} ; \vpagerefrange{B1}{D2}

\newpage  \section{C} \label{C1} \section{C2} \label{C2}

\newpage  \section{D} \label{D1} \section{D2} \label{D2}

\end{document}

相关内容