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


17

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


Вы настроили персидский язык как язык по умолчанию для этого приложения? Не могли бы вы добавить скриншот?
Лусио

Ответы:


22

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

Смена локали

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

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

введите описание изображения здесь

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

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

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

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

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

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

Установка чисел на хинди в настройках языка позволяет использовать «арабские» числа без использования редактора методов ввода, такого как 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 Пожалуйста, смотрите обновленный ответ
chaskes


0

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

ШАГ 1: Изменить язык

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

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

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

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

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

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

Изображение показывает Шаг второй

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

Вы сделали!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.