如何设置LibreOffice使用波斯/阿拉伯文/印地文页码?


17

我希望在LibreOffice Impress中使用页码为波斯语。意思是۰۱۲۳۴۵۶۷۸۹,而不是0123456789。


您是否已将波斯语配置为该应用程序的默认语言?您可以添加屏幕截图吗?
Lucio

Answers:


22

这些设置适用于所有LibreOffice应用程序和文档,因此您可以从任何一组应用程序进行更改。

变更地区

您可以将波斯语设置为所有文档或仅将当前文档的默认值。

在菜单栏中,工具>>选项,然后展开语言设置并单击语言。

在此处输入图片说明

语言环境更改为波斯语。(请注意,这与上面的用户界面设置无关。)

CTL更改为Default-Farsi。这还将自动在下面选中复杂文本布局(CTL)的启用。CTL处理从右到左的语言。

根据您的喜好检查当前文档

更改全局数字样式

单击对话框左侧的“ 复杂文本布局 ”,然后将数字更改为Hindi。(此屏幕快照中未显示)

使用“ 插入>>页码”显示“页眉/页脚”对话框,以便将页码添加到幻灯片中。

在“语言设置中将数字设置为印地语后,您无需使用Ibus等输入法编辑器即可使用“阿拉伯”数字。在这种情况下,当然,阿拉伯语数字是1,2,3 ...

是否可以在幻灯片页脚页码功能中使用印地语数字而无需将每个数字都更改为印地语?

简短的答案:不通过GUI设置。除了全局编号样式设置外,似乎没有任何方法可以修改插入页码的功能。

有趣的是,页脚使您可以轻松地将日期更改为波斯语。我相信页码不能以类似的方式更改,因为页码似乎是从要与打印机一起使用的功能中绘制的。

解决方案是完全不使用内置的页脚页码,而是将自己的文本形状插入到您想要的方式设置了相同文本的区域中。对于少量的幻灯片,这还不错。但只有少数几个是不可行的。

解决问题的方法是使用LibreOffice Basic宏为您插入页码。有关LibreOffice宏以及如何在文档中使用它们的简短概述,请参见此答案

这是宏代码:

Sub AddPersianPageNumbers

    Dim Doc as Object
    Set Doc = ThisComponent

    'Get the collection of DrawingPages
    Dim DrwPages as Object
    Set DrwPages = Doc.getDrawPages()

    Dim DrwPg as Object
    Dim TxtShp as Object
    Dim TxtPoint as New com.sun.star.awt.Point

    Dim i as Long
    Dim k as Long

    Dim strNum as string
    Dim strI as string
    Dim idx as long
    Dim uni as string

    'Each slide has it's own Drawpage, so go through the collection
    For i = 0 to DrwPages.getCount() - 1

        'Get the Drawing Page and create a TextShape    
        Set DrwPg = DrwPages.getByIndex(i)
        Set TxtShp = Doc.createInstance("com.sun.star.drawing.TextShape")

        'Add it to the Drawing Page (must do first)
        DrwPg.Add(TxtShp)   

        TxtPoint.X = DrwPg.Width * 0.9
        TxtPoint.Y = DrwPg.Height * 0.9

        TxtShp.Position = TxtPoint  
        TxtShp.TextAutoGrowWidth = true
        TxtShp.TextAutoGrowHeight = true

        'Just changing the font is not enough since it will still show as Arabic
        'You can change the locale and ComplexText props for just this para
        'but I couldn't find a way to set the para to be seen as ComplexText
        'That would have been elegant, but instead just convert
        'the page number to a string converted from the Unicode code points 

        strI = Cstr(i + 1)

        for k = 1 to Len(strI)
            uni =  "&H66" & mid(strI, k, 1) 'Hindi numeral code points are ascii+660
            strNum = strNum & Chr(uni)
        next k

        TxtShp.SetString(strNum)
        strNum = ""

        TxtShp.CharFontName = "Lohit Hindi"

    Next i  


End Sub

我希望文档在其他计算机上也一样!这样就不行了。
SeMeKh 2013年

另外,我只希望“页码”使用波斯语。不是“所有使用的数字”。
SeMeKh 2013年

@SeMeKh请参阅更新的答案
chaskes 2013年


0

只需两个步骤即可轻松完成。

步骤1:更改语言环境

转到菜单,然后单击:工具>选项,然后在语言设置下选择语言

显示第一步的图像

在这里更改以下内容:

  1. 区域设置-将其更改为阿拉伯语(或所需的任何语言)。
  2. CTL-也将其设置为阿拉伯语(仅在使用使用复杂文本布局的语言时)
  3. 如果您只想对正在编辑的文档进行此更改,请选中“仅针对当前文档”复选框
  4. 单击“确定”并保存设置。此时,请确保页码字段中使用的字体支持该语言。在我的情况下,Time New Roman字体具有阿拉伯数字字符(۰۱۲۳)

步骤2:选择字段类型

现在,在页码字段中选择文本(确保字体正确),然后从菜单中选择:编辑>字段

显示第二步的图像

在打开的“编辑字段”窗口中,将“ 格式”更改为“本机编号”(如上所示)。单击“确定”保存并关闭。

你完成了!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.