扩展宏的多种方法

扩展宏的多种方法
\documentclass[12pt]{article}

\usepackage{fontspec}
\usepackage[american]{babel}
\usepackage{libertine}
\newfontfamily\arabicfont[Script=Arabic,Scale=2]{Amiri}
\usepackage[fullvoc]{arabluatex}

\newcommand{\tamarbuta}{t\={a} marb\={u}\d{t}ah\xspace}
%\newcommand{\tamarbuta}{\arb{tA'a marbU.taT}\xspace}


\begin{document}

 The principle feminine form is the \tamarbuta.

\end{document}

在上面的 MWE 中,假设我有数百个类似的宏要在文本中使用。进一步假设我还没有决定宏是否应该扩展为音译形式或原始阿拉伯语形式。我如何保留这两个选项,以便在选择时执行其中一个选项?

(显然,我正在寻找的解决方案是不要注释掉“另一半”,反之亦然,如果我碰巧选择一个选项的话。)

答案1

您的问题不太清楚,这里提供两个版本:

  • *取消注释:根据选择(使用)打印一个版本或另一个版本的命令
  • 注释:根据开关,仅定义一个版本。然后,您将始终只有一个文本可用(对于此版本,必须注释掉带星号的版本)。

代码:

\documentclass[12pt]{article}

\usepackage{fontspec}
\usepackage[american]{babel}
\usepackage{libertine}
\newfontfamily\arabicfont[Script=Arabic,Scale=2]{Amiri}
\usepackage[fullvoc]{arabluatex}

\usepackage{xspace}

\NewDocumentCommand{\tamarbuta}{s}
    {%
        \IfBooleanTF{#1}{%
            t\={a} marb\={u}\d{t}ah%
        }{%
            \arb{tA'a marbU.taT}%
        }%
        \xspace%
    }

%\newif\ifarabic
%\ifarabic
%   \newcommand{\tamarbuta}{\arb{tA'a marbU.taT}\xspace}
%\else
%   \newcommand{\tamarbuta}{t\={a} marb\={u}\d{t}ah\xspace}
%\fi


\begin{document}

 The principle feminine form is the \tamarbuta (\tamarbuta*).

\end{document}

相关内容