[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