Автор Гілка: AMS TeX + підтримка koi8U,cp866(з укр.літерами)  (Прочитано 2603 раз)

Відсутній zerg

  • Новачок
  • *
  • дописів: 21
  • Карма: +0/-0
  • zerg
Вітаю, товариство!
Постановка питання
МАЮ
 tetex 2.0.16 mdk 9.1
ТРЕБА

 1.статтю з латеху (кодування коі8у) переробити під ams tex (кодування cp866 з підтримкою укр.і та ґ і т.п.)

знайшов cyrplain але поки що нічого не працює:
У мене tetex встановлено з рпм тому усі налаштування там за замовчанням. cyrplain також стоїть
але коли я підключаю plainenc, то ams починає сваритися на файл plain.def з Babel
***ERROR: Undefined control sequence.

--- TeX said ---
l.168 \bbl@tmpa

1.2 iconv чомусь не хоче коі8у конвертувати у ср866
сподіваюсь на корисну пораду.


З повагою,
Сергій.
З повагою, zerg.

Відсутній Cthulhu

  • Кореспондент
  • ***
  • дописів: 183
  • Карма: +0/-0
Я погано розбираюсь в Tex, але якщо з'являється проблема перекодування, то, як мені здається, найпростіший спосіб такий: пишете скрипт на python, у якому вичитуєте вміст вашого файлу по рядках text, далі робите так:
text.decode('koi8-u').encode('cp866')
і записуєте перекодовані рядки назад в файл. Найпростіший варіант:

#! /usr/bin/env python
if __name__=="__main__":
      from sys import argv
      koi8file = open(argv[1])
      cp866file = open('output', 'w')
      text=koi8file.readlines()
      for line in text:
            new=line.decode('koi8-u').encode('cp866')
            cp866file.write(new)
      cp866file.close()
      koi8file.close()
            
Якщо ви назвете файл, скажімо, text.py, зробите його виконуваним і запустите
$ ./text.py filename
то на виході отримаєте перекодований файл з назвою output і в кодуванні cp866.

Відсутній zerg

  • Новачок
  • *
  • дописів: 21
  • Карма: +0/-0
  • zerg
Зробив за вашим рецептом. Ось що вийшло
./koi8utocp866.py bogdan.tex
Traceback (most recent call last):
  File "./koi8utocp866.py", line 8, in ?
    new=line.decode('koi8u').encode('cp866')
LookupError: unknown encoding: koi8u

з дефісом у коі8-у так само.
З повагою, zerg.

Відсутній Cthulhu

  • Кореспондент
  • ***
  • дописів: 183
  • Карма: +0/-0
Гм-м-м... Зрозуміло. У вас mandrake 9.1? Значить, судячи зі списку пакетів, версія python - 2.2, 2003-го року. В цьому пакеті таки справді не підтримуеться це кодування (якби спеціально не перевірив, ніколи б не подумав). Варіанти рішення проблеми:
1) Поновіть всі пакети що стосуються python з 2.2 до, як мінімум, 2.3. Скрипт запрацює.
2) Візьміть файл з http://cvs.sourceforge.net/viewcvs.py/*checkout*/python/python/dist/src/Lib/encodings/koi8_u.py?rev=1.4 і скопіюйте його в /usr/lib/python2.2/encodings. Якщо не спрацює, спробуйте
http://cvs.sourceforge.net/viewcvs.py/*checkout*/python/python/dist/src/Lib/encodings/koi8_u.py?rev=1.1.10.2
Але ефект від цього не гарантую. Раджу "апгрейднутись" - python чим новіший, тим кращий.

Зауваження - якщо будете поновлювати пакет, встановлену версію python ні в якому разі не викидайте. Дуже багато програм зав'язані саме на нього. А взагалі, дозволю собі дати невеличку пораду - якось зберіться і поновіть дистрибутив, з тих пір вийшло багато чого нового і цікавого:)
« Змінено: 2005-12-02 02:14:57 від Cthulhu »