Locale::Po4a::TeX(3pm)

ИМЕ
Locale::Po4a::TeX - двосмерна конверзија TeX (и изведених из њега) докумената и PO фајлова

ОПИС
Циљ po4a (PO for anything – PO за било шта) пројекта је да поједностави превођење (и што је још интересантније, одржавање превода) употребом gettext алата на деловима на којима се не очекује њихова употреба, као што је документација.

Locale::Po4a::TeX је модул који помаже превођење TeX докумената на друге [људске] језике. Може да се користи и као основа за изградњу модула који обрађују документе базиране на TeX.

Корисници би углавном требало да користе LaTeX модул, јер је он изведен из TeX модула и садржи дефиниције уобичајених LaTeX команди.

ПРЕВОЂЕЊЕ СА PO4A::TEX
Овај модул може директно да се користи за обраду генеричких TeX докумената. Он ће да издели ваш документ на мање блокове (пасусе, дословне блокове, или чак мање, као што су наслови или индекси).

Постоје неке опције (описане у наредном одељку) које могу да прилагоде ово понашање. Ако се не уклапа у формат вашег документа, најбоље је да напишете ваш сопствени модул изведен из овога, који ће да опише детаље вашег формата. Погледајте одељак ПИСАЊЕ ИЗВЕДЕНИХ МОДУЛА испод, да сазнате више о том процесу.

Овај модул такође може да се прилагоди линијама у TeX фајлу које почињу са „% po4a:”. Ова прилагођавања су описана у одељку ПРИЛАГОЂАВАЊЕ ИЗ САМОГ ФАЈЛА.

ОПЦИЈЕ КОЈЕ ПРИХВАТА ОВАЈ МОДУЛ
Ово су опције везане само за овај модул:

debug
    Активира дибаговање за неке интерне механизме овог модула. Погледајте изворни код да сазнате за који делове може да се користи дибаг.

no_wrap
    Листа окружења раздвојених зарезима која не би требало да се поново обавијају.

    Имајте на уму да постоји разлика између дословног и no_wrap окружења. У дословним блоковима се не ради анализа команди и коментара.

    Ако ово окружење није већ раније регистровано, програм po4a ће сматрати да ово окружење не узима никакве параметре.

exclude_include
    Листа фајлова раздвојених зарезима које команде \input и \include не би требало да прикључе.

definitions
    Име фајла који садржи дефиниције за po4a, као што је дефинисано у одељку ПРИЛАГОЂАВАЊЕ ИЗ САМОГ ФАЈЛА. Ову опцију можете користити у случају да није могуће постављање дефиниција у документ који се преводи.

verbatim
    Листа окружења раздвојених зарезима која би требало да се пренесу дословно.

    Ако ово окружење није већ раније регистровано, програм po4a ће сматрати да ово окружење не узима никакве параметре.

Коришћење ових опција омогућава да се преиначи понашање команди дефинисаних у подразумеваним листама.

ПРИЛАГОЂАВАЊЕ ИЗ САМОГ ФАЈЛА
TeX модул може да се прилагоди линијама које почињу са % po4a:. Ове линије се интерпретирају као команде парсера. Препознају се следеће команде:

% po4a: command команда1 alias команда2
    Наводи да би аргументи команде команда1 требало да се третирају као аргументи команде команда2.

% po4a: command команда1 параметри
    Ово дозвољава да се детаљно опишу параметри команде команда1. Ова информација ће да се употреби за проверу броја аргумената и њихових типова.

    Испред команде команда1 можете да ставите

    звездицу (*)
        Програм po4a ће ову команду да издвоји из пасуса (ако се налази на почетку или крају пасуса). Преводиоци ће онда морати да преведу параметре који су обележени као преводиви.

    знак плус (+)
        Као за звездицу, команда ће да се издвоји у случају да се налази на крајевима блока, али параметри се неће преводити одвојено. Преводилац ће морати да преведе команду спојену са свим својим параметрима. На овај начин се задржава више контекста, и корисно је за команде са малим речима у параметрима, које могу да имају вишеструка значења (и преводе).

        Напомена: у овом случају не морате да наведете који параметри су преводиви, али програм po4a мора да зна типове и број параметара.

    знак минус (-)
        У овом случају команда неће да са издваја из било којег блока. Али ако се у блоку појави сама, онда ће се преводиоцу приказати само параметри означени као преводиви. Ово је корисно за фонт команде. У општем случају, ове команде не би требало да се одвајају од својих пасуса (да би се сачувао контекст), али нема разлога да се преводилац њима узнемирава ако је таквом командом уоквирен комплетан стринг.

    Аргумент параметри је скуп [] (да се наведе опционални аргумент) или {} (да се наведе обавезан аргумент). Између ових заграда можете да ставите доњу црту (_) да бисте назначили да параметар мора да се преведе. На пример:
     % po4a: command *chapter [_]{_}

    Ово указује да команда chapter има два параметра: опционални (кратак наслов) и обавезни, и да оба морају да се преведу. Ако желите да наведете да команда href има два обавезна параметра, и да не желите да преведете URL (први параметар), и да не желите да се ова команда издвоји из свог пасуса (што преводиоцу омогућава да помера везу по реченици), можете да употребите:
     % po4a: command -href {}{_}

    У овом случају, информација која говори који аргументи морају да се преведу, биће искоришћена само онда када је ова href команда једини садржај пасуса.

% po4a: environment окр параметри
    Ово омогућава да се дефинишу параметри које прихвата окружење окр. Та информација се касније користи за проверу броја аргумената команде \begin, и дозвољава да се наведе који од њих морају да се преведу. Синтакса аргумента параметри је иста као што је описано за остале команде. Први параметар команде \begin је име окружења. Овај параметар не сме да се наведе у листи параметара. Ево неколико примера:
     % po4a: environment multicols {}
     % po4a: environment equation

    Што се тиче команди, испред окр може да се стави (+) чиме се назначава да команда \begin мора бити преведена заједно са свим својим аргументима.

% po4a: separator окр "регизраз"
    Назначава да би окружење требало да се подели сагласно са датим регуларним изразом.

    Регуларни израз је омеђен знацима навода. Не би требало да креира никакве повратне референце. Ако вам је потребна група, употребите (?:). Могуће је да ће бити потребно означавање специјалних карактера.

    На пример, LaTeX модул користи регуларни израз "(?:&|\\\\)" за одвојено превођење сваке ћелије табеле (линије се раздвајају са ’\\’ а ћелије са ’&’).

    Појам окружења се пребацује у тип приказан у PO фајлу. Ово може дасе искористи за поделу на „\\\\” у првом обавезном аргументу команде наслова. У овом случају, окружење је title{#1}.

% po4a: verbatim environment окр
    Назначава да је окр дословно окружење. У овом окружењу ће да се игноришу команде и коментари.

    Ако ово окружење није већ раније регистровано, програм po4a ће сматрати да ово окружење не узима никакве параметре.

ПИСАЊЕ ИЗВЕДЕНИХ МОДУЛА

pre_trans
post_trans
add_comment
    Додаје стринг као коментар који се додаје око наредног преводивог елемента. Ово је углавном корисно за texinfo модул, јер TeX аутоматски води рачуна о коментарима.

translate
    Окружујућа класа око translate методе класе Transtractor, са филтерима за пре- и пост-процесирање.

    Коментари пасуса се умећу као PO коментар за први преводиви стринг тог пасуса.

get_leading_command($buffer)
    Ова функција враћа:

    Име команде
        Ако се на почетку датог бафера не пронађе ниједна команда, овај стринг ће да буде празан. У обзир се узимају само команде које могу да се раздвоје. Хеш %separated_command садржи листу ових команди.

    Варијанту
        Ово назначава да се користи варијанта. На пример, на крај команде краја одељка може да се дода звездица (*) чиме се наводи да одељци не би требало да се нумеришу. У том случају, ово поље ће да садржи „*”. Ако нема варијанте, ово поље ће бити празно.

    Низ дублета (тип аргумента, аргумент)
        Типа аргумента може да буде или ’{’ (за обавезне аргументе) или ’[’ (за опционалне аргументе).

    Остатак бафера
        Остатак бафера након уклањања ове водеће команде и њених аргумената. Ако се не пронађе никаква команда, оригинални бафер остаје неизмењен и враћа се у овом пољу.

get_trailing_command($buffer)
    Исто као get_leading_command, али за команде на крају бафера.

translate_buffer
    Рекурзивно преводи бафер раздвајањем из бафера водећих команди и команди са краја (оне које би требало да се преведу одвојено).

    Ако је за текуће окружење дефинисана функција у %translate_buffer_env, за превођење бафера ће уместо translate_buffer() да се употреби та функција.

read
    Преиначује функцију read() из класе Transtractor.

read_file
    Чита фајл рекурзивно, додајући на крај прикључене фајлове који нису наведени у низу @exclude_include. Прикључени фајлови се траже командом kpsewhich из Kpathsea библиотеке.

    Осим дела за прикључивање фајла, ово је чиста копија функције за читање из класе Transtractor.

parse_definition_file
    Подрутина за парсирање фајла са директивама за програм po4a (дефиниције за нове команде).

parse_definition_line
    Парсира линију дефиниције у облику „% po4a: ”.

    За више детаља, погледајте одељак ПРИЛАГОЂАВАЊЕ ИЗ САМОГ ФАЈЛА.

is_closed
parse
docheader

ИНТЕРНЕ ФУНКЦИЈЕ које се користе за писање изведених парсера
Функције за команде и окружења узимају следеће аргументе (поред $self објекта):

Име команде
Варијанту
Низ (тип, аргумент) дуплета
Текуће окружење

Прва 3 аргумента издвајају get_leading_command или get_trailing_command.

Функције команди и окружења враћају превод команде заједно са њеним аргументима и ново окружење.

Функције окружења се позивају када се наиђе на команду \begin. Позивају се са \begin командом и њеним аргументима.

TeX модул предлаже само једну функцију за команде и једну функцију за окружења: generic_command и generic_environment.

generic_command користи информације које наводи register_generic_command или из дефиниција додатих у TeX фајл:
 % po4a: command команда1 параметри

generic_environment користи информације које наводи register_generic_environment или из дефиниција додатих у TeX фајл:
 % po4a: environment окр параметри

Обе функције ће да преведу само параметре коју су били наведени као преводиви (са ’_’). generic_environment ће да дода име окружења на стек окружења, а generic_command ће да дода име команде иза које следе идентификатори параметара (као {#7} или [#2]).

СТАТУС ОВОГ МОДУЛА
Потребно је да се овај модул додатно тестира.

Тестиран је на књизи и Python документацији.

ЛИСТА СТВАРИ КОЈЕ ТРЕБА ДА СЕ УРАДЕ

Аутоматска детекција нових команди
    TeX модул би могао да парсира аргументе команде newcommand и да покуша да погоди број аргумената, њихов тип и да ли треба да се преведу или не.

Превод сепаратора окружења
    Када се као сепаратор окружења користи \item, аргумент ставке се прикључује наредном стрингу.

Неке команде би требало да се додају на стек окружења
    Ове команде би требало да буду наведене паровима. Тиме би се омогућило навођење команди које почињу или завршавају дословно окружење.

Остало
    Разне друге ствари су обележене са TODO и изворном коду.

ПОЗНАТИ БАГОВИ
Разне ствари обележене са FIXME у изворном коду.

ПОГЛЕДАЈТЕ ТАКОЂЕ
Locale::Po4a::LaTeX(3pm), Locale::Po4a::TransTractor(3pm), po4a(7)

АУТОРИ
 Никола Франсоа <nicolas.francois@centraliens.net>

ПРАВА УМНОЖАВАЊА И ЛИЦЕНЦА
Права умножавања © 2004, 2005 Никола ФРАНСОА <nicolas.francois@centraliens.net>.

Овај програм је слободан софтвер; можете да га редистрибуирате и/или мењате под условима GPL (погледајте фајл COPYING).