![将一个脚本中的字符替换为另一个脚本中的字符](https://linux22.com/image/315954/%E5%B0%86%E4%B8%80%E4%B8%AA%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%9A%84%E5%AD%97%E7%AC%A6%E6%9B%BF%E6%8D%A2%E4%B8%BA%E5%8F%A6%E4%B8%80%E4%B8%AA%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%9A%84%E5%AD%97%E7%AC%A6.png)
我正在使用 XeLaTeX + Memoir 工作,我有两个文档:一个用英语排版,另一个用阿拉伯语排版。由于这两个文档是相关的,我正在使用该包xr
在两者之间建立交叉引用。我的阿拉伯语文本使用东部阿拉伯语(所谓的阿拉伯-印度语)数字。当xr
将交叉引用的页码从阿拉伯语文档拉入我的英语文档时,显示的数字是阿拉伯-印度语 ١。
我希望将其显示为英语中使用的(常规)阿拉伯数字:1。显然,这是两个不同的字符,具有不同的字形。我使用的字体是 Khaled Hosny 的出色 Amiri,包含这两个字符(尽管在稍后阶段,英文文本将以不同的拉丁字体排版)。
因此,我的问题是,假设字体包含两个字符,我该如何用一个字符(1)替换另一个字符(١)?
以下是 MWE 文件(为了xr
使其工作,您必须先编译第一个,然后编译第二个,然后再次重新编译第一个):
minimalxr1.tex
\documentclass{memoir}
\usepackage{xr}
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage{arabic}
\setromanfont[Mapping=tex-text,Numbers=OldStyle,Ligatures=Common]{Amiri}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.2,WordSpace=1.66]{Amiri}
\externaldocument{minimalxr2}
\begin{document}
This is a test of cross-referencing to this page \pageref{test}.
\end{document}
minimalxr2.tex
\documentclass{memoir}
\usepackage{xr}
\usepackage{polyglossia}
\setmainlanguage[numerals=mashriq]{arabic}
\newfontfamily\arabicfont[Ligatures=TeX,Script=Arabic,Scale=1.2,WordSpace=1.66]{Amiri}
\externaldocument{minimalxr1}
\begin{document}
\begin{Arabic}
هذا أنموذج
\label{test}
\end{Arabic}
\end{document}
答案1
如果您不需要阿拉伯语minimalxr1.tex
,您可以\newunicodechar
按如下方式使用。可以添加语言测试。
minimalxr1.tex
\documentclass{memoir}
\usepackage{xr}
\usepackage{polyglossia}
\usepackage{newunicodechar}
\setmainlanguage{english}
\setotherlanguage{arabic}
\newunicodechar{١}{1}
\newunicodechar{٢}{2}
\newunicodechar{٣}{3}
\newunicodechar{٤}{4}
\newunicodechar{٥}{5}
\newunicodechar{٦}{6}
\newunicodechar{٧}{7}
\newunicodechar{٨}{8}
\newunicodechar{٩}{9}
\newunicodechar{٠}{0}
\setmainfont[Mapping=tex-text,Numbers=OldStyle,Ligatures=Common]{Amiri}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.2,WordSpace=1.66]{Amiri}
\externaldocument{minimalxr2}
\begin{document}
This is a test of cross-referencing to this page \pageref{test}.
Also \pageref{2},
\pageref{3},
\pageref{4},
\pageref{5},
\pageref{6},
\pageref{7},
\pageref{8},
\pageref{9},
\pageref{10}
\end{document}
minimalxr2.tex
\documentclass{memoir}
\usepackage{xr}
\usepackage{polyglossia}
\setmainlanguage[numerals=mashriq]{arabic}
\newfontfamily\arabicfont[Ligatures=TeX,Script=Arabic,Scale=1.2,WordSpace=1.66]{Amiri}
\externaldocument{minimalxr1}
\begin{document}
\begin{Arabic}
هذا أنموذج
\label{test}
\end{Arabic}
\newpage
x\label{2}
\newpage
x\label{3}
\newpage
x\label{4}
\newpage
x\label{5}
\newpage
x\label{6}
\newpage
x\label{7}
\newpage
x\label{8}
\newpage
x\label{9}
\newpage
x\label{10}
\end{document}