将“阿拉伯语”选项传递给翻译器而不是 babel

将“阿拉伯语”选项传递给翻译器而不是 babel

这个问题是对如何添加和使用阿拉伯语词典翻译定理,例如,

beamer-rl我有一个基于beamer从右到左语言创建演示文稿的课程,以下是它的第一行

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{beamer-rl}
[2019/10/04 v1.3 LaTeX class to patch beamer for right to left presentation with babel]

\RequirePackage{kvoptions}
\RequirePackage{kvsetkeys}

\SetupKeyvalOptions{
    family=beamer-rl,
    prefix=beamer-rl@,
    setkeys=\kvsetkeys,
}

% babel options:
\define@key{beamer-rl}{babel}{%
    \PassOptionsToPackage{#1}{babel}%
}

\DeclareVoidOption{arab}{%
            \PassOptionsToPackage{arabic}{translator}%
}

\DeclareDefaultOption{%
    \PassOptionsToClass{\CurrentOption}{beamer}%
}

\ProcessKeyvalOptions*\relax

\RequirePackage{ifluatex}

\ifluatex
\else
\ClassError{beamer-rl}{beamer-rl require luatex}
\fi

\LoadClass[hyperref={unicode}]{beamer}

\RequirePackage[nil,bidi=basic-r]{babel}

我需要写入doocumentclass[arabic]{beamer-rl}以将选项传递arabic给包翻译器,而不将其传递给 babel,因为 babel 会因过时的 8 位 .ldf 文件而中断。

我使用了arab选项,但我希望使用 arabic选项来保持在 beamer 中调用语言的相同格式。

所以我的问题是如何定义arabic选项而不将其传递给babel包?

答案1

未经测试,下面的操作应该会从全局选项列表中删除一个选项。再次强调,我真的建议不要使用这个!

\@expandtwoargs\@removeelement\CurrentOption\@classoptionslist\@classoptionslist

\@expandtwoargs和都\@removeelement包含在 LaTeX2e 内核中。

相关内容