我在我的文章中使用 xepersian,但在一个页面中我需要添加公历日期。所以我添加:
\usepackage[british]{babel}
然后我想要日期的地方:
\selectlanguage{british}
{\large \today}
但是,今天我使用的任何地方都用公历而不是波斯语(仍然是波斯语,但使用公历),并且图形标题文本(如图)是用英语而不是波斯语。
编辑:
\documentclass[14pt,a4paper]{article}
%\usepackage[british]{babel}
\usepackage{enumerate}
\usepackage{xepersian}
\settextfont{XB Niloofar}
\begin{document}
\today
\end{document}
像这样,印刷的日期来自波斯历法(读作 1393 年霍尔达德月 16 日):
但是当我取消注释该行时,它将变成波斯语中的英语,如下所示(读取 2014 年 6 月 6 日):
答案1
首先要说两件事:
- 由于
XePersian
依赖XeTeX
引擎,我建议使用polyglossia
代替babel
。 - 文档
article
类不能使用该14pt
选项;有关更多信息,请查看这个答案。
你的情况的问题是,XePersian
显然改变了一切西方数字(123)进入真正的阿拉伯数字(١٢٣),即使XB Niloofar
字体包含两者。因此,您需要指定XeTeX
使用XePersian
与不同的字体\settextfont
。如果您不指定不同的字体,XePersian
将使用 进行排版,这当然会替换数字。
首先,当然,您需要告知XeTeX
除波斯语外还有其他语言。您应该使用polyglossia
进行设置:\setotherlanguage[]{english}
。然后您必须使用 告知polyglossia
对所有英语文本使用不同的字体\newfontfamily\englishfont{XB Niloofar}
。这当然可以是与您的 完全相同的字体XePersian
\settextfont
,但这次,它不会通过XePersian
,因此使用正确的数字形式。在文档中,使用\textenglish{}
或\begin{english}
切换到英语环境。
使用上述建议将产生以下 MWE:
\documentclass[12pt,a4paper]{article}
\usepackage{polyglossia}
%\setdefaultlanguage[]{farsi}
\setotherlanguage[]{english}
\newfontfamily\englishfont{XB Niloofar}
\usepackage{enumerate}
\usepackage{xepersian}
\settextfont{XB Niloofar}
\begin{document}
\today
\textenglish{\today}
\end{document}
输出结果如下:
附注:设置\setdefaultlanguage[]{farsi}
,这对于 来说是正常做法polyglossia
,但它不起作用,因为它与 冲突XePersian
,因此这里将其注释掉,但欢迎您将其删除。
答案2
您所要做的就是查看xepersian
文档。无需额外的软件包,不需要babel
,polyglossia
等等。
\documentclass{article}
\usepackage{xepersian}
\begin{document}
\today
\latintoday
\end{document}