请考虑以下 MWE:
MWE - 场景 1
\documentclass[demo]{scrartcl}
\usepackage{polyglossia}
\setmainlanguage[locale=mashriq,numerals=mashriq,abjadjimnotail=true]{arabic}
% \newfontfamily\arabicfont[Script=Arabic,Ligatures=TeX,Mapping=arabicdigits]{Simplified Arabic}
% \setsansfont[Script=Arabic,Ligatures=TeX,Mapping=arabicdigits]{Simplified Arabic}
\newfontfamily\arabicfont[Script=Arabic,Mapping=arabicdigits,Ligatures=TeX]{Simplified Arabic}
\setsansfont[Script=Arabic,Mapping=arabicdigits,Ligatures=TeX]{Simplified Arabic}
\usepackage[style=numeric,sorting=none,backend=biber]{biblatex}
\DefineBibliographyStrings{english}{%
references = {المراجع}}
\makeatletter
\def\abx@comma{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{،}}
\makeatother
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{ibnsina,
author = {{ابن سينا}},
year = {{١٤١٧}},
title = {السماع الطبيعى من كتاب الشفاء},
publisher = {دار المناهل},
location = {لبنان، بيروت}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
هنا نص بالعربية مع ارقام هندي ١، ٢، ٣، الخ ومع الواصلة، واحدة - واثنتان -- وثلاثة ---.
احد المراجع\parencite{ibnsina}.
\printbibliography
\end{document}
输出--场景 1
MWE——场景 2
\newfontfamily\arabicfont[Script=Arabic,Ligatures=TeX,Mapping=arabicdigits]{Simplified Arabic}
\setsansfont[Script=Arabic,Ligatures=TeX,Mapping=arabicdigits]{Simplified Arabic}
% \newfontfamily\arabicfont[Script=Arabic,Mapping=arabicdigits,Ligatures=TeX]{Simplified Arabic}
% \setsansfont[Script=Arabic,Mapping=arabicdigits,Ligatures=TeX]{Simplified Arabic}
输出--场景2
我得到这两种效果中的任一种,取决于在阿拉伯字体定义末尾传递哪个参数。在场景 1 中,最后一个参数是Ligatures=TeX
,而在场景 2 中,最后一个参数是Mapping=arabicdigits
。
问题
有什么方法可以同时保留印地语数字和 en dash 和 em dash 效果的 TeX 连字符?
笔记
- 由 xetex 编译
\textemdash
,\textendash
是显而易见的答案,但我不想在 Rt-to-Lt 文档中诉诸它们,因为它会产生混乱的文本脚本- 不需要的输出在屏幕截图中以黄色标记
答案1
您一次只能使用一个映射文件;因此解决方案是合并映射文件。
准备一个文件,texarabicdigits.map
包含
; TECkit mapping for TeX input conventions <-> Unicode characters
LHSName "TeX-text"
RHSName "UNICODE"
pass(Unicode)
; ligatures from Knuth's original CMR fonts
U+002D U+002D <> U+2013 ; -- -> en dash
U+002D U+002D U+002D <> U+2014 ; --- -> em dash
U+0027 <> U+2019 ; ' -> right single quote
U+0027 U+0027 <> U+201D ; '' -> right double quote
U+0022 > U+201D ; " -> right double quote
U+0060 <> U+2018 ; ` -> left single quote
U+0060 U+0060 <> U+201C ; `` -> left double quote
U+0021 U+0060 <> U+00A1 ; !` -> inverted exclam
U+003F U+0060 <> U+00BF ; ?` -> inverted question
; additions supported in T1 encoding
U+002C U+002C <> U+201E ; ,, -> DOUBLE LOW-9 QUOTATION MARK
U+003C U+003C <> U+00AB ; << -> LEFT POINTING GUILLEMET
U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET
; from arabicdigits.map
U+0030 <> U+0660 ;
U+0031 <> U+0661 ;
U+0032 <> U+0662 ;
U+0033 <> U+0663 ;
U+0034 <> U+0664 ;
U+0035 <> U+0665 ;
U+0036 <> U+0666 ;
U+0037 <> U+0667 ;
U+0038 <> U+0668 ;
U+0039 <> U+0669 ;
现在运行
teckit_compile texarabicdigits
这将生成一个文件texarabicdigits.tec
。将其保存在与主文件相同的目录中。现在以下测试文件
\documentclass[demo]{scrartcl}
\usepackage{polyglossia}
\setmainlanguage[locale=mashriq,numerals=mashriq,abjadjimnotail=true]{arabic}
\newfontfamily\arabicfont[Script=Arabic,Mapping=texarabicdigits]{Scheherazade}
\newfontfamily\arabicfontsf[Script=Arabic,Mapping=texarabicdigits]{Scheherazade}
\usepackage[style=numeric,sorting=none,backend=biber]{biblatex}
\DefineBibliographyStrings{english}{%
references = {المراجع}}
\makeatletter
\def\abx@comma{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{،}}
\makeatother
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{ibnsina,
author = {{ابن سينا}},
year = {{١٤١٧}},
title = {السماع الطبيعى من كتاب الشفاء},
publisher = {دار المناهل},
location = {لبنان، بيروت}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
هنا نص بالعربية مع ارقام هندي ١، ٢، ٣، الخ ومع الواصلة، واحدة - واثنتان -- وثلاثة ---.
احد المراجع\parencite{ibnsina}.
\printbibliography
\end{document}
将产生以下输出
然后可以将和.tec
文件.map
移动到本地 TeX 树中。