\今天和语言(babel、xepersian)

\今天和语言(babel、xepersian)

我在我的文章中使用 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

首先要说两件事:

  1. 由于XePersian依赖XeTeX引擎,我建议使用polyglossia代替babel
  2. 文档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}

输出结果如下:

XePersian 输出


附注:设置\setdefaultlanguage[]{farsi},这对于 来说是正常做法polyglossia,但它不起作用,因为它与 冲突XePersian,因此这里将其注释掉,但欢迎您将其删除。

答案2

您所要做的就是查看xepersian文档。无需额外的软件包,不需要babelpolyglossia等等。

\documentclass{article}
\usepackage{xepersian}
\begin{document}
\today

\latintoday
\end{document}

相关内容