[Comm] TeXнический вопрос #1
Andrei Lomov
=?iso-8859-1?q?lomov_=CE=C1_math=2Ensc=2Eru?=
Ср Дек 10 20:08:13 MSK 2003
В сообщении от 10 Декабрь 2003 20:59 Denis Kirienko написал(a):
> Добрый день!
>
> Можно ли как-нибудь заставить LaTeX, чтобы он с сообщениях об ошибках и
> предупреждениях выводил текст в кодировке KOI-8. Ну то есть если я
> набираю длинную строку из русских букв "а", то на выводе получаю
>
> Overfull \hbox (51.17621pt too wide) in paragraph at lines 17--18
> []\T2A/cmr/m/n/10
> ЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮ
> ЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮ
>
> Исследование этого вопроса привело к выводу, что TeX переводит текст в
> кодировку cp1251.
>
> Следует заметить, что MiKTeX под Windows тоже выводит все сообщения в
> кодировке cp1251, что приводит к столь же плачевным результатам, ибо это
> происходит в консоли Windows :-)
>
> Денис
=================== Цитата:
> Alexander Zhuckov wrote:
> AZ> Pavel Tereshchenko <Pavel.Tereshchenko на f600.n5030.z2.fidonet.org>
writes:
>
> >> Как заставить тех при компиляции выводить русский текст, а то то cобщения
> >> типа
> >>
> >> Overfull \hbox (10.82625pt too wide) in paragraph at lines 114--119
> >> \LLH/lhr/m/n/12 ^^d0^^c5^^d2-^^d7^^cf^^cd
^^cf^^d3^^ce^^cf^^d7-^^ce^^cf^^c5
> >> ^^d
>
> AZ> Если teTeX и русификация t2, то
>
> AZ> настроить locale
> AZ> скомпилить t2-XXXXXX/etc/t2filter.c
> AZ> tex my.tex | t2filter
>
> Hе нашел у себя t2filter.c, можно ли е-почтой?
> Спасибо заранее
>
----------------------------
/* A simple filter for translating TeX screen output from
* internal T2 encoding to koi8-r or cp866. Messages with
* overfull boxes will be readable, but context lines (in
* case of errors) will become unreadable. :-)
*
* Compile:
* cc -Wall -O2 -s -o t2filter t2filter.c
*
* Sample usage:
* latex filename.tex | t2filter
*/
#include <unistd.h>
#define BUFSIZE 1024
unsigned char xlt[] = {
#ifdef MSDOS /* t2 -> cp866 */
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef
#else /* t2 -> koi8-r */
0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa,
0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0,
0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe,
0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1,
0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda,
0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde,
0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1
#endif
};
int main(void) {
unsigned char buf[BUFSIZE];
ssize_t n;
unsigned char *c;
for(;;) {
if (!(n=read(0,buf,BUFSIZE)))
return 0;
for (c=buf;c<buf+n;c++)
if (*c>=0xc0) *c=xlt[*c-0xc0];
write(1,buf,n);
}
}
----------------------
Пожалуйста :)
Долго не отвечал, потому что почту не было возможности читать.
--
Alexander Zhuckov zuav на int.spb.ru 2:5030/518.50
================== (конец цитаты)
--
Всего доброго,
А. Л.
Подробная информация о списке рассылки community