^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}