arabxetex 和脚注

arabxetex 和脚注

^s我在脚注中使用时遇到了一些问题arabxetex。音译和转换为阿拉伯文字在正文中工作正常,但在脚注中却不行。所有其他字母似乎都工作正常。

\documentclass{article}


\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX}
\setmainfont[Numbers=OldStyle]{Brill}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.3]{Scheherazade}
\usepackage{arabxetex}

\begin{document}

Here it works: \textarab[trans]{^s}

Here it doesn't:
\footnote{\textarab[trans]{^s}}
\end{document}

答案1

\textarab命令更改类别代码,因此不能将其用作另一个命令的参数。

有一种解决方法是使用\scantokens。可以使用regexpatch命令快速重新定义。

\documentclass{article}

\usepackage{fontspec}
\usepackage{arabxetex}
\usepackage{regexpatch}

\defaultfontfeatures{Ligatures=TeX}
\setmainfont{Brill}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.3]{Scheherazade}

\makeatletter
\xpatchcmd*{\text@arab}{#2}{\scantokens{#2\noexpand}}{}{}
\makeatother

\setlength{\textheight}{2cm} % just to have a smaller picture
\begin{document}


Here it works: \textarab[trans]{^s}X\textarab{^s}X

Here too\footnote{\textarab[trans]{^s}X\textarab{^s}X}
\end{document}

在此处输入图片描述

X添加的只是为了确保不会出现多余的空格。

如果您不能使用,这里是完整的重新定义regexpatch

\documentclass{article}

\usepackage{fontspec}
\usepackage{arabxetex}

\defaultfontfeatures{Ligatures=TeX}
\setmainfont{Brill}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.3]{Scheherazade}

\makeatletter
\renewcommand\text@arab[2][\ax@mode]{%
  \edef\@tempa{#1}%
  \def\ax@lang{arab}%
  \ax@ismode@defined{\@tempa}%
  \ifax@mode@defined
    \ifx\@tempa\ax@mode@trans
      {\ax@trans@style\addfontfeature{Mapping=arabtex-trans-\ax@trans@convention}\scantokens{#2\noexpand}}%
    \else
      \ifx\@tempa\ax@mode@utf
        \RL{\arabicfont\utf@fontfeature\scantokens{#2\noexpand}}%
      \else
        \RL{\arabicfont\addfontfeature{Mapping=arabtex-\ax@font@allah-\@tempa}\scantokens{#2\noexpand}}%
      \fi
    \fi
  \else
    \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \@ax@mode}%
    \RL{\arabicfont\addfontfeature{Mapping=arabtex-\ax@font@allah-\ax@mode}\scantokens{#2\noexpand}}%
  \fi
  \egroup}
\makeatother

\setlength{\textheight}{2cm} % just to have a smaller picture
\begin{document}


Here it works: \textarab[trans]{^s}X\textarab{^s}X

Here too\footnote{\textarab[trans]{^s}X\textarab{^s}X}
\end{document}

相关内容