Как настроить LibreOffice для использования номеров страниц на персидском, арабском и индийском языках?

Я хочу, чтобы номера моих страниц в LibreOffice Impress были на персидском языке. Что означает ۰۱۲۳۴۵۶۷۸۹ вместо 0123456789.

16
задан 17.05.2020, 07:48

3 ответа

Эти настройки работают во всех приложениях и документах LibreOffice, поэтому вы можете вносить изменения из любого набора приложений.

Изменение языкового стандарта

Вы можете установить персидский язык по умолчанию для всех ваших документов или только для текущего документа.

В строке меню Инструменты >> Параметры , затем разверните Настройки языка и нажмите Языки

enter image description here

Измените Язык на фарси. (Обратите внимание, что это не зависит от настройки для пользовательского интерфейса выше.)

Измените CTL на По умолчанию - фарси . Это также автоматически проверит Включено для сложной текстовой разметки (CTL) ниже. CTL обрабатывает языки справа налево.

Проверьте Только для текущего документа в соответствии с вашими предпочтениями.

Изменение глобального стиля цифр

Нажмите Сложный текстовый макет в левой части диалога и измените цифры на Хинди . (не показано на этом снимке экрана)

Используйте Вставить >> Номер страницы , чтобы отобразить диалоговое окно «Верхний / нижний колонтитул» для добавления номеров страниц к слайдам.

Установка чисел на Хинди в настройках языка позволяет использовать «арабские» числа без использования редактора методов ввода, такого как Ibus. В этом контексте, конечно, арабскими цифрами являются 1,2,3 ...

Можно ли использовать числа хинди в функции нумерации страниц нижнего колонтитула , не изменяя каждое число на хинди?

Краткий ответ: не через настройки графического интерфейса , Помимо настройки глобального стиля чисел, похоже, нет способа изменить функцию, которая вставляет номера страниц.

Интересно, что нижний колонтитул позволяет легко изменить дату на персидскую. Я считаю, что номера страниц нельзя изменить подобным образом, поскольку номера страниц, похоже, взяты из функций для работы с принтером.

Решение состоит в том, чтобы вообще не использовать встроенную нумерацию страниц нижнего колонтитула, а вместо этого вставить собственную текстовую форму в ту же область, где текст установлен так, как вы хотите. Для небольшого количества слайдов это не так уж плохо; но не было бы возможно с более чем несколькими.

Решение этой проблемы заключается в использовании макроса 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
21
ответ дан 17.05.2020, 07:50
  • 1
    Я хочу, чтобы документ выглядел одинаково на других компьютерах также! Таким образом, это doesn' t. – Herman Junge 17.05.2020, 07:51
  • 2
    Кроме того, я просто хочу " страница numbers" быть на персидском языке. Не " все числа used". – Herman Junge 17.05.2020, 07:51
  • 3
    @SeMeKh см. обновленный ответ – hh54188 17.05.2020, 07:51

Это можно легко сделать в два этапа.

ШАГ 1: Измените локаль

Перейдите в меню и нажмите: Инструменты> Параметры , затем выберите Языки в ] Настройки языка.

Изображение, показывающее шаг первый

Здесь измените следующее:

  1. Настройка локали - измените это на арабский (или любой другой язык). [112 ]
  2. CTL - установите также арабский (только если вы используете язык, который использует сложный текстовый макет)
  3. Установите флажок «Только для текущего документа», если вы хотите, чтобы это изменение только для этот документ, который редактируется
  4. Нажмите «ОК» и сохраните настройку. На этом этапе убедитесь, что шрифт, используемый в поле номера страницы, поддерживает язык. В моем случае шрифт Time New Roman имеет арабские цифры Символы (۰۱۲۳)

ШАГ 2: Выберите тип поля

Теперь выберите текст в номере страницы поле (убедитесь, что шрифт правильный), а затем в меню выберите: «Правка»> «Поля»

Изображение, показывающее шаг второй

В открывшемся окне «Редактировать поля» измените формат на Собственная нумерация (как показано выше). Нажмите «ОК», чтобы сохранить и закрыть.

Готово!

0
ответ дан 17.05.2020, 07:49

Инструменты-> Параметры -> Языковые настройки -> Сложный текстовый макет
Общие параметры устанавливают его на Хинди
и вот его скриншот

0
ответ дан 17.05.2020, 07:50

Теги

Похожие вопросы